Updated PM, uses 60s average to match message update time, modified message to display Server Running Time(Total Time Elapsed) in h:m:s.ms format

Readded perviously removed update interval condition
This commit is contained in:
NotAlwaysTrue
2025-12-22 00:24:22 +08:00
parent 7d9642a5b1
commit d98f9de5d4
3 changed files with 18 additions and 9 deletions
@@ -21,7 +21,7 @@ namespace Barotrauma
private double tickrate60stimer = 0; private double tickrate60stimer = 0;
private static Queue<double> tickrate10s = new Queue<double>(10); private static Queue<double> tickrate60s = new Queue<double>(61);
public int ItemCount public int ItemCount
{ {
@@ -65,7 +65,7 @@ namespace Barotrauma
{ {
get get
{ {
return tickrate10s.Count > 0 ? tickrate10s.Average() : 60; return tickrate60s.Count > 0 ? tickrate60s.Average() : 60;
} }
} }
@@ -77,6 +77,14 @@ namespace Barotrauma
} }
} }
public TimeSpan TimeElapsed
{
get
{
return TimeSpan.FromMilliseconds(TotalTimeElapsed);
}
}
public float MemoryUsage public float MemoryUsage
{ {
get get
@@ -114,14 +122,14 @@ namespace Barotrauma
{ {
TotalTicks += 1; TotalTicks += 1;
LastSecondTicks += 1; LastSecondTicks += 1;
if(tickrate10s.Count >= 10) if (tickrate60s.Count > 60)
{ {
tickrate10s.Dequeue(); tickrate60s.Dequeue();
} }
if (TotalTimeElapsed - 1000 >= tickratetimer) if (TotalTimeElapsed - 1000 >= tickratetimer)
{ {
RealTickRate = LastSecondTicks / (TotalTimeElapsed - tickratetimer) * 1000; RealTickRate = LastSecondTicks / (TotalTimeElapsed - tickratetimer) * 1000;
tickrate10s.Enqueue(RealTickRate); tickrate60s.Enqueue(RealTickRate);
tickratetimer = TotalTimeElapsed; tickratetimer = TotalTimeElapsed;
LastSecondTicks = 0; LastSecondTicks = 0;
} }
@@ -163,8 +171,8 @@ namespace Barotrauma
$"Max Tick Rate: {TickRateHigh}\n" + $"Max Tick Rate: {TickRateHigh}\n" +
$"Total Ticks: {TotalTicks}\n" + $"Total Ticks: {TotalTicks}\n" +
$"All time Average Tick Rate: {AverageTickRate}\n" + $"All time Average Tick Rate: {AverageTickRate}\n" +
$"10s Average Tick Rate: {AverageTickRate10s}\n" + $"60s Average Tick Rate: {AverageTickRate10s}\n" +
$"Total Time Elapsed: {TotalTimeElapsed}\n" + $"Server Run Time: {TimeElapsed}\n" +
$"Memory Usage: {MemoryUsage}\n"; $"Memory Usage: {MemoryUsage}\n";
} }
@@ -692,11 +692,11 @@ namespace Barotrauma
GameMain.PerformanceCounter.AddElapsedTicks("Update:MapEntity:Misc", sw.ElapsedTicks); GameMain.PerformanceCounter.AddElapsedTicks("Update:MapEntity:Misc", sw.ElapsedTicks);
sw.Restart(); sw.Restart();
#endif #endif
//TODO: Divide ItemList into different parts to update
Task ItemTask = Task.Factory.StartNew(() => Task ItemTask = Task.Factory.StartNew(() =>
{ {
Item.UpdatePendingConditionUpdates(deltaTime); Item.UpdatePendingConditionUpdates(deltaTime);
//mapEntityUpdateTick % MapEntityUpdateInterval == 0 if (mapEntityUpdateTick % MapEntityUpdateInterval == 0)
if (true)
{ {
Item lastUpdatedItem = null; Item lastUpdatedItem = null;
@@ -230,6 +230,7 @@ namespace Barotrauma
Level.Loaded.Update((float)deltaTime, Camera.Instance); Level.Loaded.Update((float)deltaTime, Camera.Instance);
} }
}); });
//TODO: Divide CharacterList into different parts to update
Task CharacterTask = Task.Factory.StartNew(() => Character.UpdateAll((float)deltaTime, Camera.Instance)); Task CharacterTask = Task.Factory.StartNew(() => Character.UpdateAll((float)deltaTime, Camera.Instance));
#endif #endif