From 71e8ed5b7d3003d1ac1a1eda9c56bb71a2f88b59 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Sat, 7 Mar 2026 12:39:38 -0800 Subject: [PATCH] Reduce initial load to radius 1 (~5 tiles) for fast game entry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Was waiting for all ~50 tiles (radius 4) to fully prepare + finalize before entering the game. Now loads only the immediate surrounding tiles during the loading screen, then restores the full radius for in-game streaming. setLoadRadius just sets an int — actual loading happens lazily via background workers during the game loop. --- src/core/application.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/core/application.cpp b/src/core/application.cpp index 2a06bd5c..cabcaa01 100644 --- a/src/core/application.cpp +++ b/src/core/application.cpp @@ -3925,6 +3925,13 @@ void Application::loadOnlineWorldTerrain(uint32_t mapId, float x, float y, float auto* terrainMgr = renderer->getTerrainManager(); auto* camera = renderer->getCamera(); + // Use a small radius for the initial load (just immediate tiles), + // then restore the full radius after entering the game. + // This matches WoW's behavior: load quickly, stream the rest in-game. + const int savedLoadRadius = 4; + terrainMgr->setLoadRadius(1); + terrainMgr->setUnloadRadius(7); + // Trigger tile streaming for surrounding area terrainMgr->update(*camera, 1.0f); @@ -4016,6 +4023,9 @@ void Application::loadOnlineWorldTerrain(uint32_t mapId, float x, float y, float LOG_INFO("Online terrain streaming complete: ", terrainMgr->getLoadedTileCount(), " tiles loaded"); + // Restore full load radius — remaining tiles stream in-game + terrainMgr->setLoadRadius(savedLoadRadius); + // Load/precompute collision cache if (renderer->getWMORenderer()) { showProgress("Building collision cache...", 0.88f);