- Mesaj
- 73
- Çözümler
- 2
- Beğeni
- 32
- Puan
- 704
- Ticaret Puanı
- 0
X Forumunda Konusunu acıp ban yedigim sistem
İlk girişte süreyi kısmaz lakin oyuna tamamen giriş yaptıgınız taktirde 1 saniyeye kadar düşer loading süresi
Kısaca
Fark: İlk girişte ek olarak ırk/efekt/ses/NPC yüklemesi var; o yüzden ilk açılış yine ışınlanmadan biraz uzun sürebilir. En büyük kazanım genelde harita değişimli ışınlanmalarda görülür.
İlk girişte süreyi kısmaz lakin oyuna tamamen giriş yaptıgınız taktirde 1 saniyeye kadar düşer loading süresi
Kısaca
- İlk giriş: karakter seç → loading ekranı → map load (__LoadMap / Warp) da aynı loader’ı kullanır
- Oyun içi ışınlanma: harita değişince yine aynı terrain/area loader çalışır
Fark: İlk girişte ek olarak ırk/efekt/ses/NPC yüklemesi var; o yüzden ilk açılış yine ışınlanmadan biraz uzun sürebilir. En büyük kazanım genelde harita değişimli ışınlanmalarda görülür.
Kod:
1) EterLib/ResourceManager.cpp
Bul:
int g_iLoadingDelayTime = 20;
Değiştir:
int g_iLoadingDelayTime = 1;
Etki: Config yoksa varsayılan yapay loading gecikmesi 20 ms → 1 ms.
2) client/metin2.cfg
Bul:
PRE_LOADING_DELAY_TIME 20
Değiştir:
PRE_LOADING_DELAY_TIME 1
Etki: Oyuncunun cfg’sinden okunan delay. Eski 20, harita yüklerken onlarca kez birikip loading’i şişiriyordu.
3) GameLib/AreaLoaderThread.cpp — ProcessArea sonu
Bul:
m_AreaCompleteMutex.Lock();
m_pAreaCompleteDeque.push_back(pArea);
m_AreaCompleteMutex.Unlock();
Sleep(g_iLoadingDelayTime);
}
Değiştir:
m_AreaCompleteMutex.Lock();
m_pAreaCompleteDeque.push_back(pArea);
m_AreaCompleteMutex.Unlock();
}
Etki: Her area parçası sonrası gereksiz Sleep kalkar.
4) GameLib/AreaLoaderThread.cpp — ProcessTerrain
Bul: Terrain yüklerken aradaki tüm şunlar:
Sleep(g_iLoadingDelayTime);
(Su, height, attr, tile, shadow, minimap, calculate vb. her adımdan sonra — yaklaşık 10 adet)
Değiştir: Bu ara Sleep satırlarını komple sil. Dosya yükleme çağrıları arka arkaya kalsın:
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 ...
// sonda da Sleep olmasın
Etki: En büyük kazanç burası. Bir tile için ~10×20 ms = 200 ms; büyük map’te 5–10 tile → birkaç saniye yapay bekleme gider.
5) EterLib/FileLoaderThread.cpp
Bul:
m_CompleteMutex.Lock();
m_pCompleteDeque.push_back(pData);
m_CompleteMutex.Unlock();
Sleep(g_iLoadingDelayTime);
}
Değiştir:
m_CompleteMutex.Lock();
m_pCompleteDeque.push_back(pData);
m_CompleteMutex.Unlock();
}
Etki: Her dosya sonrası yapay beklemeyi kaldırır.
Özet etki
Önce Sonra
Tile başına ~200 ms + dosya başına Sleep
Anlık yükleme (gerçek I/O kadar)
Warp / ilk giriş şişiyor
Daha kısa loading
Özellikle harita değişimli ışınlanma yavaş
Belirgin hızlanma
Notlar
c_Reference_Decrease_Wait_Time = 30000 → 10 yapma; loading kısaltmaz, memory thrash riski var.
//break; ResourceManager’da çoğu pack’te zaten yorumlu.
Client rebuild + cfg güncellemesi gerekir.
HDD/çok ağır pack’te loading yine biraz sürebilir; o gerçek yükleme, yapay Sleep değil.