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:
parent
1db1a5b754
commit
3b84bfe3a0
97 changed files with 7869 additions and 982 deletions
|
|
@ -3,7 +3,7 @@ extends RefCounted
|
|||
|
||||
const WorldLayoutType = preload("res://world/world_layout.gd")
|
||||
|
||||
const PROTOCOL_VERSION: int = 9
|
||||
const PROTOCOL_VERSION: int = 10
|
||||
const GAME_BUILD: String = "prealpha"
|
||||
const MAX_GAME_VERSION_LENGTH: int = 64
|
||||
const MAX_DISPLAY_NAME_LENGTH: int = 24
|
||||
|
|
@ -13,14 +13,24 @@ const MAX_PUBLIC_KEY_LENGTH: int = 8192
|
|||
const MAX_SIGNATURE_LENGTH: int = 2048
|
||||
# ENet channels: 0 reliable lifecycle, 1 movement input, 2 movement
|
||||
# snapshots, 3 fishing input, 4 fishing snapshots, 5 reliable sales,
|
||||
# 6 reliable shop transactions, 7 reliable item/equipment/showcase/drawing,
|
||||
# 8 reliable ordered session chat, 9 reliable private session mail.
|
||||
# 6 reliable shop transactions, 7 reliable item/equipment,
|
||||
# 8 reliable ordered session chat, 9 reliable private session mail,
|
||||
# 10 observer-only fishing summaries, 11 reliable movement animation state,
|
||||
# 12 reliable fish showcase state, 13 reliable world-spawn events,
|
||||
# 14 reliable artwork state, 15 world-spawn snapshots, and 16 reliable
|
||||
# fishing lifecycle. Bulk world/art payloads must not head-of-line block held
|
||||
# items, fishing, or animation presentation.
|
||||
const SALE_RELIABLE_CHANNEL: int = 5
|
||||
const SHOP_RELIABLE_CHANNEL: int = 6
|
||||
const ITEM_RELIABLE_CHANNEL: int = 7
|
||||
const CHAT_RELIABLE_CHANNEL: int = 8
|
||||
const MAIL_RELIABLE_CHANNEL: int = 9
|
||||
const ENET_CHANNEL_COUNT: int = 10
|
||||
const MOVEMENT_ANIMATION_CHANNEL: int = 11
|
||||
const SHOWCASE_RELIABLE_CHANNEL: int = 12
|
||||
const WORLD_SPAWN_RELIABLE_CHANNEL: int = 13
|
||||
const DRAWING_RELIABLE_CHANNEL: int = 14
|
||||
const FISHING_RELIABLE_CHANNEL: int = 16
|
||||
const ENET_CHANNEL_COUNT: int = 17
|
||||
const SURFACE_DRAWING_CAPABILITY: String = "surface_drawing_v2"
|
||||
const ART_SHOP_CAPABILITY: String = "art_shop_v1"
|
||||
const BACKPACK_SHOP_CAPABILITY: String = "backpack_shop_v1"
|
||||
|
|
@ -32,6 +42,9 @@ const WORLD_SPAWN_CAPABILITY: String = "world_spawn_envelope_v1"
|
|||
const APPEARANCE_PREVIEW_CAPABILITY: String = "appearance_preview_v1"
|
||||
const WORLD_GENERATION_CAPABILITY: String = "world_generation_v1"
|
||||
const WORLD_LAYOUT_CAPABILITY: String = "world_layout_v1"
|
||||
const FRIENDS_CAPABILITY: String = "friends_v1"
|
||||
const MOVEMENT_RECONCILIATION_CAPABILITY: String = "movement_reconciliation_v2"
|
||||
const FISHING_REPLICATION_CAPABILITY: String = "fishing_replication_v2"
|
||||
const DEFAULT_WORLD_SEED: int = 13001
|
||||
const MAX_WORLD_SEED: int = 2147483646
|
||||
|
||||
|
|
@ -186,6 +199,9 @@ static func make_client_hello(
|
|||
BACKPACK_SHOP_CAPABILITY,
|
||||
WORLD_GENERATION_CAPABILITY,
|
||||
WORLD_LAYOUT_CAPABILITY,
|
||||
FRIENDS_CAPABILITY,
|
||||
MOVEMENT_RECONCILIATION_CAPABILITY,
|
||||
FISHING_REPLICATION_CAPABILITY,
|
||||
]),
|
||||
"cosmetic_snapshot": cosmetic_snapshot,
|
||||
"identity_fingerprint": identity_fingerprint,
|
||||
|
|
@ -323,6 +339,9 @@ static func make_server_hello(
|
|||
APPEARANCE_PREVIEW_CAPABILITY,
|
||||
WORLD_GENERATION_CAPABILITY,
|
||||
WORLD_LAYOUT_CAPABILITY,
|
||||
FRIENDS_CAPABILITY,
|
||||
MOVEMENT_RECONCILIATION_CAPABILITY,
|
||||
FISHING_REPLICATION_CAPABILITY,
|
||||
"chat_v1",
|
||||
"mail_v1",
|
||||
"profile_v1",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue