One clock for every land: going back to a land catches it up on the time away (like a night's sleep) instead of rewinding to when you left; J3 decided: a server per land with the Valley's as hub, sleep needs everyone in every land
This commit is contained in:
@@ -363,8 +363,10 @@ tunnel goes **down**, inside the cliff, from the clifftop to the shore.
|
||||
meat, clay jars) becomes what you carry between them.
|
||||
- **Your bases stay** where you built them: each worldlet keeps its own
|
||||
save file, so your Valley hut, chests and jars are waiting.
|
||||
- **Time:** a worldlet you're not in stands still (as a server does with
|
||||
nobody on), so a base you left doesn't starve or get raided.
|
||||
- **Time:** there's one clock for every land (see the decisions below). A
|
||||
worldlet you're not in doesn't run, but catches up on the time when you
|
||||
come back, as after a night's sleep; nothing roams it meanwhile, so a base
|
||||
you left isn't raided.
|
||||
|
||||
### Building it (phases)
|
||||
| Phase | Delivers | Done when |
|
||||
@@ -395,17 +397,45 @@ A server today runs one island. Options:
|
||||
bites can make you sick, and bog, mist and the like. Others in the same
|
||||
spirit per biome (to design with each worldlet).
|
||||
- **Multiplayer: spread out.** Each player goes where they like; the server
|
||||
runs every worldlet someone is in, and the rest stand still. Built in J3,
|
||||
after single-player travel works. What that means for the code:
|
||||
- one server process holds several worldlet scenes, each with its own
|
||||
clock, weather, creatures and save file;
|
||||
- every player belongs to one worldlet at a time, and the server only
|
||||
sends them that worldlet's world, creatures, sounds and chat-free events
|
||||
(chat and the player list stay server-wide);
|
||||
- a crossing moves a player from one worldlet to another (save their
|
||||
place, load or wake the other worldlet, send them its world);
|
||||
- sleep: "everyone in bed" counts the players in that worldlet only;
|
||||
- the Old Stag and other bosses scale with the players in their worldlet.
|
||||
runs every worldlet someone is in. Built in J3, after single-player travel
|
||||
works.
|
||||
- **A server per land (Paul, Nov 2026)**, rather than one process holding
|
||||
several worldlets (which would mean making every network module, the
|
||||
saves and the actions handle several worlds at once):
|
||||
- the Valley's server is the **hub**: the address everyone joins. It
|
||||
starts a server for another land (the next UDP port: 24243 the Cove,
|
||||
and so on) when someone first goes there, and stops it a couple of
|
||||
minutes after its last player leaves;
|
||||
- each land server is today's server, with its own worldlet, save file,
|
||||
weather and creatures; it keeps a private link to the hub on the host
|
||||
machine;
|
||||
- characters live in one shared folder. A crossing saves your character
|
||||
first, marks you as on your way, and hands your game the land's port
|
||||
and a one-time pass; your game reconnects there ("On to the Cove...").
|
||||
Nothing can be lost or copied on the way: crash mid-way and you come
|
||||
back where you were going. Joining the hub when your character's in
|
||||
another land sends you straight on there;
|
||||
- chat, the player list (with where each player is) and admin commands
|
||||
go through the hub to every land;
|
||||
- the tunnel belongs to the Valley's server; the Cove's asks the hub
|
||||
whether it's dug through;
|
||||
- from the internet, friends need those extra ports forwarded too (on a
|
||||
home network, nothing to do). The Host page will list them;
|
||||
- the Old Stag and other bosses scale with the players in their land.
|
||||
- Phases: **J3a** the tunnel online, land servers on demand, the
|
||||
crossing and the shared characters; **J3b** chat, the player list and
|
||||
admin across lands; **J3c** the awkward cases (a land server crashing,
|
||||
rejoining mid-crossing, the Host page's ports).
|
||||
- **One clock for every land (Paul, Nov 2026).** The day and hour are the
|
||||
same everywhere, so the lands never drift apart:
|
||||
- sleeping until morning needs **everyone, in every land**, in bed (on a
|
||||
server the hub counts them all, and every land skips to morning
|
||||
together);
|
||||
- a land nobody is in doesn't run, but when someone arrives it catches up
|
||||
on the time since anyone was last there, as after a night's sleep:
|
||||
kilns and smelters work, fires burn down, food goes off, trees and
|
||||
berries grow back. (Built for single-player already: `world.catch_up()`.)
|
||||
No creatures roam it meanwhile, so a base you left isn't raided.
|
||||
- **Boats: one each, no passengers.** A boat belongs to whoever built it
|
||||
(like a bed): only the owner, and their friends under the server's locks
|
||||
rule, can sail it, and nobody else can dismantle it. It stays moored where
|
||||
@@ -439,7 +469,7 @@ One worldlet, a dedicated server on the M5 Pro, never pausing: about
|
||||
creatures, weather and pickups around them. So with *spread out*, the worst
|
||||
case of 8 players in all 5 worldlets is about five of today's servers in
|
||||
one process: roughly 1.4 GB and a little over half a core before players,
|
||||
and worldlets with nobody in them stand still and cost next to nothing.
|
||||
and worldlets with nobody in them aren't running and cost nothing (each starts its own server when someone goes there).
|
||||
Comfortable on the home Mac; a small cloud server (2 GB) would be tight.
|
||||
|
||||
### (Answered) questions
|
||||
|
||||
Reference in New Issue
Block a user