diff --git a/src/d_clisrv.c b/src/d_clisrv.c index d263d65e8d0a115f3df06d4c0f81b281e5d1ac4a..f7150ed526bd33603d044b310292e666fd6a71f1 100755 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -5041,6 +5041,19 @@ int recommendedSimulateTics = 0; int smoothingDelay; precise_t saveStateBenchmark = 0; precise_t loadStateBenchmark = 0; +precise_t loadUnArchiveMisc = 0; +precise_t loadUnArchiveWorld = 0; +precise_t loadUnArchivePolyObjects = 0; +precise_t loadUnArchiveThinkers = 0; +precise_t loadUnArchiveSpecials = 0; +precise_t loadUnArchiveColormaps = 0; +precise_t loadUnArchiveWaypoints = 0; +precise_t loadRelinkPointers = 0; +precise_t loadFinishMobjs = 0; +precise_t loadLUA_UnArcive = 0; +precise_t loadLuaBanks = 0; +// uint16_t hashHits; +// uint16_t hashMiss; double netUpdateFudge; // our last net update fudge tic_t SavestatesClearedTic; @@ -5776,31 +5789,39 @@ void MakeNetDebugString() sprintf(&netDebugText[strlen(netDebugText)], "\nJitter: %d", serverJitter); sprintf(&netDebugText[strlen(netDebugText)], "\nRTTJitter: %d", rttJitter); sprintf(&netDebugText[strlen(netDebugText)], "\nEstRTT: %d", estimatedRTT); - sprintf(&netDebugText[strlen(netDebugText)], "\nSimInacc: %d", simInaccuracy); - sprintf(&netDebugText[strlen(netDebugText)], "\nGame: %d", gametic); - sprintf(&netDebugText[strlen(netDebugText)], "\nSim: %d", simtic); - sprintf(&netDebugText[strlen(netDebugText)], "\nSim-Game: %d", simtic - gametic); - sprintf(&netDebugText[strlen(netDebugText)], "\nSimDelta: %d", simtic - lastSim); - // sprintf(&netDebugText[strlen(netDebugText)], "\nLive: %d", liveTic); + sprintf(&netDebugText[strlen(netDebugText)], "\nGameTic: %d", gametic); + sprintf(&netDebugText[strlen(netDebugText)], "\nSimTic: %d", simtic); + sprintf(&netDebugText[strlen(netDebugText)], "\nSims: %d", simtic - gametic); sprintf(&netDebugText[strlen(netDebugText)], "\nTime save/load: %.4f/%.4f", (float)(I_PreciseToMicros(saveStateBenchmark)) / 1000, (float)(I_PreciseToMicros(loadStateBenchmark)) / 1000); sprintf(&netDebugText[strlen(netDebugText)], "\nSim time: %.4f", (float)(I_PreciseToMicros(simEndTime - simStartTime)) / 1000); sprintf(&netDebugText[strlen(netDebugText)], "\nTotal +ms: %.4f", (float)(I_PreciseToMicros(simEndTime - simStartTime + saveStateBenchmark + loadStateBenchmark))/1000); + sprintf(&netDebugText[strlen(netDebugText)], "\nMisc: %.4f", (float)(I_PreciseToMicros(loadUnArchiveMisc)) / 1000); + sprintf(&netDebugText[strlen(netDebugText)], "\nWorld: %.4f", (float)(I_PreciseToMicros(loadUnArchiveWorld)) / 1000); + sprintf(&netDebugText[strlen(netDebugText)], "\nPolyObjs: %.4f", (float)(I_PreciseToMicros(loadUnArchivePolyObjects)) / 1000); + sprintf(&netDebugText[strlen(netDebugText)], "\nThinkers: %.4f", (float)(I_PreciseToMicros(loadUnArchiveThinkers)) / 1000); + sprintf(&netDebugText[strlen(netDebugText)], "\nSpecials: %.4f", (float)(I_PreciseToMicros(loadUnArchiveSpecials)) / 1000); + sprintf(&netDebugText[strlen(netDebugText)], "\nColormaps: %.4f", (float)(I_PreciseToMicros(loadUnArchiveColormaps)) / 1000); + sprintf(&netDebugText[strlen(netDebugText)], "\nWP: %.4f", (float)(I_PreciseToMicros(loadUnArchiveWaypoints)) / 1000); + sprintf(&netDebugText[strlen(netDebugText)], "\nRELINKPTS: %.4f", (float)(I_PreciseToMicros(loadRelinkPointers)) / 1000); + sprintf(&netDebugText[strlen(netDebugText)], "\nFinishMobjs: %.4f", (float)(I_PreciseToMicros(loadFinishMobjs)) / 1000); + sprintf(&netDebugText[strlen(netDebugText)], "\nLUA_UnArch: %.4f", (float)(I_PreciseToMicros(loadLUA_UnArcive)) / 1000); + sprintf(&netDebugText[strlen(netDebugText)], "\nLuaBanks: %.4f", (float)(I_PreciseToMicros(loadLuaBanks)) / 1000); // sprintf(&netDebugText[strlen(netDebugText)], "\nseed: %d", P_GetRandSeed()); // sprintf(&netDebugText[strlen(netDebugText)], "\nTimeFudge: %d%%", cv_timefudge.value); - lastSim = simtic; - - unsigned int rtts[20] = {0}; - for (int i = 0; i < rttBufferMax; i++) - { - if (rttBuffer[i] < 20) - rtts[rttBuffer[i]]++; - } - - for (int i = 0; i < 20; i++) - { - if (rtts[i] > 0) - sprintf(&netDebugText[strlen(netDebugText)], "\nRTT %i: %i%%", i, rtts[i] * 100 / rttBufferMax); - } + // lastSim = simtic; + + // unsigned int rtts[20] = {0}; + // for (int i = 0; i < rttBufferMax; i++) + // { + // if (rttBuffer[i] < 20) + // rtts[rttBuffer[i]]++; + // } + + // for (int i = 0; i < 20; i++) + // { + // if (rtts[i] > 0) + // sprintf(&netDebugText[strlen(netDebugText)], "\nRTT %i: %i%%", i, rtts[i] * 100 / rttBufferMax); + // } } // startTic and endTics are tics going back in time from the current liveTic diff --git a/src/p_savenetrb.c b/src/p_savenetrb.c index 95622ba8860dd180db25e26b49752e90ba122ee1..04822b1e38d091bef5c98f419c1e403df60659ab 100755 --- a/src/p_savenetrb.c +++ b/src/p_savenetrb.c @@ -3912,7 +3912,7 @@ static void P_LocalArchiveThinkers(void) WRITEUINT8(save_p, 0xFF); } - +/* static void P_LocalUnArchiveThinkers() { thinker_t *thinker; @@ -4357,6 +4357,7 @@ static void P_LocalUnArchiveThinkers() skyboxmo[0] = skyboxviewpnts[(skyviewid >= 0) ? skyviewid : 0]; skyboxmo[1] = skyboxcenterpnts[(skycenterid >= 0) ? skycenterid : 0]; } +*/ /* static void P_LocalUnArchiveThinkers(boolean preserveLevel) @@ -5790,6 +5791,17 @@ void P_GameStateFreeMemory(savestate_t* savestate) extern precise_t saveStateBenchmark; extern precise_t loadStateBenchmark; +extern precise_t loadUnArchiveMisc; +extern precise_t loadUnArchiveWorld; +extern precise_t loadUnArchivePolyObjects; +extern precise_t loadUnArchiveThinkers; +extern precise_t loadUnArchiveSpecials; +extern precise_t loadUnArchiveColormaps; +extern precise_t loadUnArchiveWaypoints; +extern precise_t loadRelinkPointers; +extern precise_t loadFinishMobjs; +extern precise_t loadLUA_UnArcive; +extern precise_t loadLuaBanks; void P_SaveGameState(savestate_t* savestate) { @@ -5863,6 +5875,7 @@ boolean P_LoadGameState(const savestate_t* savestate) { INT16 savedGameMap; + precise_t currentTime; loadStateBenchmark = I_GetPreciseTime(); if (savestate->buffer == NULL) { @@ -5887,24 +5900,46 @@ boolean P_LoadGameState(const savestate_t* savestate) con_muted = true; CV_LoadNetVars(&save_p); con_muted = false; - // CONS_Printf("P_NetUnArchiveMisc from Netplus\n"); + currentTime = I_GetPreciseTime(); if (!P_NetUnArchiveMisc(true)) + { + loadUnArchiveMisc = I_GetPreciseTime() - currentTime; return false; + } + loadUnArchiveMisc = I_GetPreciseTime() - currentTime; P_NetUnArchivePlayers(); if (gamestate == GS_LEVEL) { // P_NetUnArchiveWorld(); + currentTime = I_GetPreciseTime(); P_LocalUnArchiveWorld(); + loadUnArchiveWorld = I_GetPreciseTime() - currentTime; + currentTime = I_GetPreciseTime(); P_UnArchivePolyObjects(); + loadUnArchivePolyObjects = I_GetPreciseTime() - currentTime; + currentTime = I_GetPreciseTime(); P_NetUnArchiveThinkers(); + loadUnArchiveThinkers = I_GetPreciseTime() - currentTime; + currentTime = I_GetPreciseTime(); P_NetUnArchiveSpecials(); + loadUnArchiveSpecials = I_GetPreciseTime() - currentTime; + currentTime = I_GetPreciseTime(); P_NetUnArchiveColormaps(); + loadUnArchiveColormaps = I_GetPreciseTime() - currentTime; + currentTime = I_GetPreciseTime(); P_NetUnArchiveWaypoints(); - P_RelinkPointers(); + loadUnArchiveWaypoints = I_GetPreciseTime() - currentTime; + currentTime = I_GetPreciseTime(); + P_RelinkPointers(); //candidate for optimization + loadRelinkPointers = I_GetPreciseTime() - currentTime; + currentTime = I_GetPreciseTime(); P_FinishMobjs(); + loadFinishMobjs = I_GetPreciseTime() - currentTime; } con_muted = true; - LUA_UnArchive(); + currentTime = I_GetPreciseTime(); + LUA_UnArchive(); //candidate for optimization + loadLUA_UnArcive = I_GetPreciseTime() - currentTime; con_muted = false; // This is stupid and hacky, but maybe it'll work!