M2.1: dedicated server, joining, identity handshake, names, lobby

- Net autoload: headless dedicated server (--server) on UDP 24242 via ENet,
  server.json preferences (flags override per run, never saved), reserved
  names in names.json
- Identity: RSA-2048 key per install (Godot has no Ed25519), player id =
  key hash, challenge/response so ids can't be faked; profile with name
  and limited appearance (tunic, hair, beard)
- Server refuses bans, allowlist misses, duplicate logins, bad or taken
  names, wrong passwords, old protocol versions and a full server, each
  with a clear reason; first player on a new server becomes admin
- Title screen: Profile, Join Game, and a lobby with server info, rules
  and who's online
- test_net_lobby: real headless server + bot processes over UDP (38
  checks); --exit-with so test servers never outlive the test
This commit is contained in:
Paul Bailey
2026-11-04 13:40:27 +00:00
parent 89683e78fd
commit f62f71658f
11 changed files with 1152 additions and 6 deletions

View File

@@ -25,6 +25,7 @@ config/icon="res://icon.svg"
ItemDB="*res://scripts/core/item_db.gd"
Actions="*res://scripts/core/actions.gd"
Saves="*res://scripts/core/saves.gd"
Net="*res://scripts/net/net.gd"
[display]