feat: expand progression and multiplayer systems

Add named save slots, progression import/export, and a unified play flow. Add live friend requests, presence, invitations, and relationship controls without durable discovery-server social storage. Advance the network protocol with isolated channels, movement reconciliation, late-join recovery, fishing replication, and animation synchronization. Preserve per-species catch totals, refine generated-world startup and water recovery, and complete the related input and interface improvements.
This commit is contained in:
Alexander Sellite 2026-08-23 20:48:38 -04:00
parent 1db1a5b754
commit 3b84bfe3a0
97 changed files with 7869 additions and 982 deletions

View file

@ -46,6 +46,16 @@ traffic or become a gameplay authority. Its base URL comes from
`network/discovery/base_url`, with `NETFISHING_DISCOVERY_URL` available as a
development/deployment override.
Friendships are local identity relationships shared across save slots. A live,
authenticated gameplay session is required to exchange the directional
capabilities that establish a friendship. Blocking an identity removes that
friendship; unblocking does not recreate it. Discovery may publish opt-in,
short-lived friend presence and deliver invitations only while both games are
online. It stores hashed capability identifiers rather than identity
fingerprints or a complete friend graph, keeps no durable social records, and
provides no offline delivery. Direct joins still use the existing verified
public-room and ENet connection path.
The host is authoritative. Clients submit requests or evidence; the host
derives trusted context from registered peers, authoritative regions, and
server-owned state before mutating inventory, wallet, progression, or shared
@ -68,8 +78,12 @@ release version is not a reason to change the protocol number.
`PlayerDataRoot` selects and validates a portable data root. Stores receive
paths from that owner rather than inventing unrelated locations. Progression is
written by `PlayerSaveManager`; device settings and social/identity stores have
separate formats and lifecycles.
written by `PlayerSaveManager` and indexed as named slots by
`PlayerSaveSlotCatalog`. Existing single-save installations are adopted as the
first slot in place. Device settings, appearance, and social/identity stores
remain shared across slots and have separate formats and lifecycles.
Progression archive import and export belong to the title-screen Play page:
imports create a new slot, while exports copy only the selected progression.
Save migrations are sequential and explicit. Existing catches and ownership
are keyed by stable IDs so authored metadata can evolve without rewriting

View file

@ -33,6 +33,7 @@ Rotate camera Hold right mouse, or use right stick
Cycle active hotbar slot Mouse wheel or D-pad left/right
Select hotbar slot 1 through 9
Zoom camera Shift + mouse wheel
(swap wheel controls in Settings > Controls)
Primary tool / fishing Left mouse or right trigger
Inventory and player pages Tab
Game Menu / back Escape