Acest tutorial te va ajuta sa reduci timpul de încărcare (loading) al clientului Metin2 prin eliminarea unor întârzieri artificiale (Sleep) introduse în codul sursă al clientului.
Poti astfel sa reduci cateva sute de MS sau secunde bune de incarcare cu aceasta metoda.
De ce există acele Sleep?
Aceste Sleep au fost introduse in sursa binary a clientului pentru:
- a reduce utilizarea procesorului;
- a evita blocarea completă a firului principal pe calculatoare foarte vechi;
- a distribui încărcarea pe mai multe frame-uri.
Pe hardware modern, ele doar încetinesc încărcarea.
*Link download / Code:
Deschide EterLib/ResourceManager.cpp si cauta:
Code:
int g_iLoadingDelayTime = 20;Etki: Config yoksa varsayılan yapay loading gecikmesi 20 ms → 1 ms.
Deschidem client/metin2.cfg si cautam:
Code:
PRE_LOADING_DELAY_TIME 20Deschidem GameLib/AreaLoaderThread.cpp — ProcessArea si cautam:
Code:
m_AreaCompleteMutex.Lock();
m_pAreaCompleteDeque.push_back(pArea);
m_AreaCompleteMutex.Unlock();
Sleep(g_iLoadingDelayTime);
}Deschidem GameLib/AreaLoaderThread.cpp — ProcessTerrain si cautam toate:
Code:
Sleep(g_iLoadingDelayTime);Code:
pTerrain->LoadWaterMap(szWaterMapName);
pTerrain->LoadHeightMap(szRawHeightFieldname);
pTerrain->LoadAttrMap(szAttrMapName);
pTerrain->RAW_LoadTileMap(szSplatName, true);
pTerrain->LoadShadowTexture(szShadowTexName);
pTerrain->LoadShadowMap(szShadowMapName);
pTerrain->LoadMiniMapTexture(szMiniMapTexName);
pTerrain->SetName(c_rstrAreaName.c_str());
pTerrain->CalculateTerrainPatch();
pTerrain->SetReady();
// ... complete deque push ...Code:
m_CompleteMutex.Lock();
m_pCompleteDeque.push_back(pData);
m_CompleteMutex.Unlock();
Sleep(g_iLoadingDelayTime);
}

la acest mesaj și conținutul se va afișa automat.

