feat(server): serve the chunked asterra world at startup (7a of #229) #235
No reviewers
Labels
No labels
alpha:wave-0
alpha:wave-1
alpha:wave-2
alpha:wave-3
area:assets
area:combat
area:ecology
area:infra
area:render
area:scripting
area:ui
area:world
enhancement
epic
migration
post-alpha
roadmap
tech-debt
type:bug
type:chore
type:design
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
marco/IsoMmo!235
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/server-chunked-world"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Fase 7a di #229: il game server ora carica il mondo chunked disegnato a mano (
asterra) invece della vecchia mappa testuale piccola. Fin qui il formato chunked era additivo — nessuno lo leggeva a runtime; adesso è il server a servirlo.Cosa cambia:
GameOptions.WorldPath(defaultworlds/asterra, relativa acontent/).Program.cssceglie la sorgente: seWorldPathè valorizzata apre lo store chunked e fa il warm-load in unaCompactWorldMap(mappa in memoria compatta: griglia di byte per il terreno +Int16opzionale per la Z + statics sparsi, catalogo già risolto). Vuota = vecchia mappa testuale (world.map+ sidecar). Entrambe escono dietro l'interfacciaIReadOnlyTileMap, quindi nulla a valle (World, movimento, scripting) sa quale backing ha ricevuto.(5183,4378)conSpawnFinder(prima cella di terra calpestabile) — asterra era stata mergiata senza spawn, eCompactWorldMap.Loadè fatale senza. Ora il manifest lo porta come metadato..csprojdel server copia il mondo chunked (manifest.bin+ 48 fileregions/*.region) nell'output.Screenshots / recording
N/A — nessuna resa visibile in questa slice. Il server passa a una mappa diversa ma il client continua a disegnare la propria mappa finché non arriva 7b (client che rende il mondo chunked a finestra di viewport). Boot verificato via log:
Now listening on: http://0.0.0.0:5100,/metrics→ HTTP 200 dopo il warm-load dei 133M di celle.How it was tested
AsterraWorldTests.Asterra_warm_loads_with_a_walkable_spawn: carica l'asterra committata attraverso lo stesso identico percorso del server (WorldMapStore.Open→CompactWorldMap.Load) e verifica che lo spawn sia in-bounds e calpestabile — se un'edit futura toglie lo spawn (il bug con cui asterra è nata) fallisce qui invece che al boot.dotnet run --project src/IsoMmo.GameServersu asterra → in ascolto su :5100,/metrics200 in ~0.34s, warm-load dei 133M senza eccezioni.Game:WorldPath="", così non fanno warm-load del pianeta intero (suite invariata, 17s).Checklist
just lintpasses (CSharpier + analyzers, zero warnings)just testis greenEpic: #229