(27eca7ad9) Some network optimization: - Don't create network events for hulls that are very far from all clients (e.g. ruin hulls). - Don't create network events for triggers that are set to limit the triggerer's velocity when there are no triggerers.
This commit is contained in:
@@ -20,6 +20,16 @@ namespace Barotrauma
|
|||||||
partial void UpdateProjSpecific(float deltaTime, Camera cam)
|
partial void UpdateProjSpecific(float deltaTime, Camera cam)
|
||||||
{
|
{
|
||||||
if (IdFreed) { return; }
|
if (IdFreed) { return; }
|
||||||
|
|
||||||
|
//don't create updates if all clients are very far from the hull
|
||||||
|
float hullUpdateDistanceSqr = NetConfig.HullUpdateDistance * NetConfig.HullUpdateDistance;
|
||||||
|
if (!GameMain.Server.ConnectedClients.Any(c =>
|
||||||
|
c.Character != null &&
|
||||||
|
Vector2.DistanceSquared(c.Character.WorldPosition, WorldPosition) < hullUpdateDistanceSqr))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//update client hulls if the amount of water has changed by >10%
|
//update client hulls if the amount of water has changed by >10%
|
||||||
//or if oxygen percentage has changed by 5%
|
//or if oxygen percentage has changed by 5%
|
||||||
if (Math.Abs(lastSentVolume - waterVolume) > Volume * 0.1f ||
|
if (Math.Abs(lastSentVolume - waterVolume) > Volume * 0.1f ||
|
||||||
|
|||||||
@@ -432,12 +432,16 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
if (ForceFluctuationStrength > 0.0f)
|
if (ForceFluctuationStrength > 0.0f)
|
||||||
{
|
{
|
||||||
forceFluctuationTimer += deltaTime;
|
//no need for force fluctuation (or network updates) if the trigger limits velocity and there are no triggerers
|
||||||
if (forceFluctuationTimer > ForceFluctuationInterval)
|
if (forceMode != TriggerForceMode.LimitVelocity || triggerers.Any())
|
||||||
{
|
{
|
||||||
NeedsNetworkSyncing = true;
|
forceFluctuationTimer += deltaTime;
|
||||||
currentForceFluctuation = Rand.Range(1.0f - ForceFluctuationStrength, 1.0f);
|
if (forceFluctuationTimer > ForceFluctuationInterval)
|
||||||
forceFluctuationTimer = 0.0f;
|
{
|
||||||
|
NeedsNetworkSyncing = true;
|
||||||
|
currentForceFluctuation = Rand.Range(1.0f - ForceFluctuationStrength, 1.0f);
|
||||||
|
forceFluctuationTimer = 0.0f;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ namespace Barotrauma.Networking
|
|||||||
public const float ItemConditionUpdateInterval = 0.15f;
|
public const float ItemConditionUpdateInterval = 0.15f;
|
||||||
public const float LevelObjectUpdateInterval = 0.5f;
|
public const float LevelObjectUpdateInterval = 0.5f;
|
||||||
public const float HullUpdateInterval = 0.5f;
|
public const float HullUpdateInterval = 0.5f;
|
||||||
|
public const float HullUpdateDistance = 20000.0f;
|
||||||
|
|
||||||
public const int MaxEventPacketsPerUpdate = 4;
|
public const int MaxEventPacketsPerUpdate = 4;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user