Revert PVS changes (#10735)

This commit is contained in:
Leon Friedrich
2022-08-21 07:27:41 +12:00
committed by GitHub
parent f99d0151e6
commit ff2a67bc74
7 changed files with 26 additions and 32 deletions

View File

@@ -8,7 +8,7 @@
<Label Text="{Loc 'ui-options-net-interp-ratio'}" /> <Label Text="{Loc 'ui-options-net-interp-ratio'}" />
<Control MinSize="8 0" /> <Control MinSize="8 0" />
<Slider Name="NetInterpRatioSlider" <Slider Name="NetInterpRatioSlider"
ToolTip="{Loc 'ui-options-net-interp-ratio-tooltip'}" MinValue="0"
MaxValue="6" MaxValue="6"
HorizontalExpand="True" HorizontalExpand="True"
MinSize="80 0" MinSize="80 0"

View File

@@ -1,10 +1,15 @@
using System;
using Content.Shared.CCVar;
using Robust.Client.AutoGenerated; using Robust.Client.AutoGenerated;
using Robust.Client.Graphics;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML; using Robust.Client.UserInterface.XAML;
using Robust.Shared; using Robust.Shared;
using Robust.Shared.Maths;
using Robust.Shared.Configuration; using Robust.Shared.Configuration;
using Robust.Client.GameStates; using Robust.Shared.IoC;
using Robust.Shared.Localization;
namespace Content.Client.EscapeMenu.UI.Tabs namespace Content.Client.EscapeMenu.UI.Tabs
{ {
@@ -12,7 +17,6 @@ namespace Content.Client.EscapeMenu.UI.Tabs
public sealed partial class NetworkTab : Control public sealed partial class NetworkTab : Control
{ {
[Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly IConfigurationManager _cfg = default!;
[Dependency] private readonly IClientGameStateManager _stateMan = default!;
public NetworkTab() public NetworkTab()
{ {
@@ -22,7 +26,6 @@ namespace Content.Client.EscapeMenu.UI.Tabs
ApplyButton.OnPressed += OnApplyButtonPressed; ApplyButton.OnPressed += OnApplyButtonPressed;
ResetButton.OnPressed += OnResetButtonPressed; ResetButton.OnPressed += OnResetButtonPressed;
NetInterpRatioSlider.OnValueChanged += OnNetInterpRatioSliderChanged; NetInterpRatioSlider.OnValueChanged += OnNetInterpRatioSliderChanged;
NetInterpRatioSlider.MinValue = _stateMan.MinBufferSize;
Reset(); Reset();
} }
@@ -42,7 +45,7 @@ namespace Content.Client.EscapeMenu.UI.Tabs
private void OnApplyButtonPressed(BaseButton.ButtonEventArgs args) private void OnApplyButtonPressed(BaseButton.ButtonEventArgs args)
{ {
_cfg.SetCVar(CVars.NetBufferSize, (int) NetInterpRatioSlider.Value - _stateMan.MinBufferSize); _cfg.SetCVar(CVars.NetInterpRatio, (int) NetInterpRatioSlider.Value);
_cfg.SaveToFile(); _cfg.SaveToFile();
UpdateChanges(); UpdateChanges();
} }
@@ -54,13 +57,13 @@ namespace Content.Client.EscapeMenu.UI.Tabs
private void Reset() private void Reset()
{ {
NetInterpRatioSlider.Value = _cfg.GetCVar(CVars.NetBufferSize) + _stateMan.MinBufferSize; NetInterpRatioSlider.Value = _cfg.GetCVar(CVars.NetInterpRatio);
UpdateChanges(); UpdateChanges();
} }
private void UpdateChanges() private void UpdateChanges()
{ {
var isEverythingSame = NetInterpRatioSlider.Value == _cfg.GetCVar(CVars.NetBufferSize) + _stateMan.MinBufferSize; var isEverythingSame = NetInterpRatioSlider.Value == _cfg.GetCVar(CVars.NetInterpRatio);
ApplyButton.Disabled = isEverythingSame; ApplyButton.Disabled = isEverythingSame;
ResetButton.Disabled = isEverythingSame; ResetButton.Disabled = isEverythingSame;
NetInterpRatioLabel.Text = NetInterpRatioSlider.Value.ToString(); NetInterpRatioLabel.Text = NetInterpRatioSlider.Value.ToString();

View File

@@ -45,6 +45,7 @@ public static class PoolManager
(CCVars.GameMapForced.Name, "true", true), (CCVars.GameMapForced.Name, "true", true),
(CCVars.AdminLogsQueueSendDelay.Name, "0", true), (CCVars.AdminLogsQueueSendDelay.Name, "0", true),
(CCVars.NetPVS.Name, "false", true), (CCVars.NetPVS.Name, "false", true),
(CCVars.NetInterp.Name, "false", true),
(CCVars.NPCMaxUpdates.Name, "999999", true), (CCVars.NPCMaxUpdates.Name, "999999", true),
(CCVars.GameMapForced.Name, "true", true), (CCVars.GameMapForced.Name, "true", true),
(CCVars.SysWinTickPeriod.Name, "0", true), (CCVars.SysWinTickPeriod.Name, "0", true),

View File

@@ -6,11 +6,8 @@ using System.Threading.Tasks;
using NUnit.Framework; using NUnit.Framework;
using Robust.Client.GameObjects; using Robust.Client.GameObjects;
using Robust.Client.GameStates; using Robust.Client.GameStates;
using Robust.Client.Timing;
using Robust.Server.GameStates; using Robust.Server.GameStates;
using Robust.Server.Player; using Robust.Server.Player;
using Robust.Shared;
using Robust.Shared.Configuration;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
using Robust.Shared.GameStates; using Robust.Shared.GameStates;
using Robust.Shared.IoC; using Robust.Shared.IoC;
@@ -38,7 +35,7 @@ namespace Content.IntegrationTests.Tests.Networking
[Test] [Test]
public async Task Test() public async Task Test()
{ {
await using var pairTracker = await PoolManager.GetServerClient(new (){Fresh = true, DummyTicker = true}); await using var pairTracker = await PoolManager.GetServerClient(new (){Fresh = true, DisableInterpolate = true, DummyTicker = true});
var server = pairTracker.Pair.Server; var server = pairTracker.Pair.Server;
var client = pairTracker.Pair.Client; var client = pairTracker.Pair.Client;
@@ -48,12 +45,8 @@ namespace Content.IntegrationTests.Tests.Networking
var sEntityManager = server.ResolveDependency<IEntityManager>(); var sEntityManager = server.ResolveDependency<IEntityManager>();
var cEntityManager = client.ResolveDependency<IEntityManager>(); var cEntityManager = client.ResolveDependency<IEntityManager>();
var sGameTiming = server.ResolveDependency<IGameTiming>(); var sGameTiming = server.ResolveDependency<IGameTiming>();
var cGameTiming = client.ResolveDependency<IClientGameTiming>(); var cGameTiming = client.ResolveDependency<IGameTiming>();
var cGameStateManager = client.ResolveDependency<IClientGameStateManager>(); var cGameStateManager = client.ResolveDependency<IClientGameStateManager>();
var cfg = client.ResolveDependency<IConfigurationManager>();
var log = cfg.GetCVar(CVars.NetLogging);
//cfg.SetCVar(CVars.NetLogging, true);
EntityUid serverEnt = default; EntityUid serverEnt = default;
PredictionTestComponent serverComponent = default!; PredictionTestComponent serverComponent = default!;
@@ -79,13 +72,15 @@ namespace Content.IntegrationTests.Tests.Networking
// Run some ticks so that // Run some ticks so that
await PoolManager.RunTicksSync(pairTracker.Pair, 3); await PoolManager.RunTicksSync(pairTracker.Pair, 3);
// Check client buffer is full // Due to technical things with the game state processor it has an extra state in the buffer here.
Assert.That(cGameStateManager.CurrentBufferSize, Is.EqualTo(cGameStateManager.TargetBufferSize)); // This burns through it real quick, but I'm not sure it should be there?
// Under normal operation (read: not integration test) this gets corrected for via tick time adjustment,
// This isn't required anymore, but the test had this for the sake of "technical things", and I cbf shifting // so it's probably not an issue?
// all the tick times over. So it stays.
await client.WaitRunTicks(1); await client.WaitRunTicks(1);
// 2 is target buffer size.
Assert.That(cGameStateManager.CurrentBufferSize, Is.EqualTo(2));
await client.WaitPost(() => await client.WaitPost(() =>
{ {
clientComponent = cEntityManager.GetComponent<PredictionTestComponent>(serverEnt); clientComponent = cEntityManager.GetComponent<PredictionTestComponent>(serverEnt);
@@ -102,7 +97,7 @@ namespace Content.IntegrationTests.Tests.Networking
// Client last ran tick 15 meaning it's ahead of the last server tick it processed (12) // Client last ran tick 15 meaning it's ahead of the last server tick it processed (12)
Assert.That(cGameTiming.CurTick, Is.EqualTo(new GameTick(16))); Assert.That(cGameTiming.CurTick, Is.EqualTo(new GameTick(16)));
Assert.That(cGameTiming.LastProcessedTick, Is.EqualTo(new GameTick(12))); Assert.That(cGameStateManager.CurServerTick, Is.EqualTo(new GameTick(12)));
// *** I am using block scopes to visually distinguish these sections of the test to make it more readable. // *** I am using block scopes to visually distinguish these sections of the test to make it more readable.
@@ -178,7 +173,7 @@ namespace Content.IntegrationTests.Tests.Networking
// Assert timing is still correct, should be but it's a good reference for the rest of the test. // Assert timing is still correct, should be but it's a good reference for the rest of the test.
Assert.That(sGameTiming.CurTick, Is.EqualTo(new GameTick(18))); Assert.That(sGameTiming.CurTick, Is.EqualTo(new GameTick(18)));
Assert.That(cGameTiming.CurTick, Is.EqualTo(new GameTick(20))); Assert.That(cGameTiming.CurTick, Is.EqualTo(new GameTick(20)));
Assert.That(cGameTiming.LastProcessedTick, Is.EqualTo(new GameTick(16))); Assert.That(cGameStateManager.CurServerTick, Is.EqualTo(new GameTick(16)));
{ {
// Send event to server to change flag again, this time to disable it.. // Send event to server to change flag again, this time to disable it..
@@ -249,7 +244,7 @@ namespace Content.IntegrationTests.Tests.Networking
// Assert timing is still correct. // Assert timing is still correct.
Assert.That(sGameTiming.CurTick, Is.EqualTo(new GameTick(22))); Assert.That(sGameTiming.CurTick, Is.EqualTo(new GameTick(22)));
Assert.That(cGameTiming.CurTick, Is.EqualTo(new GameTick(24))); Assert.That(cGameTiming.CurTick, Is.EqualTo(new GameTick(24)));
Assert.That(cGameTiming.LastProcessedTick, Is.EqualTo(new GameTick(20))); Assert.That(cGameStateManager.CurServerTick, Is.EqualTo(new GameTick(20)));
{ {
// Send first event to disable the flag (reminder: it never got accepted by the server). // Send first event to disable the flag (reminder: it never got accepted by the server).
@@ -364,8 +359,6 @@ namespace Content.IntegrationTests.Tests.Networking
Assert.That(clientComponent.Foo, Is.True); Assert.That(clientComponent.Foo, Is.True);
} }
} }
cfg.SetCVar(CVars.NetLogging, log);
await pairTracker.CleanReturnAsync(); await pairTracker.CleanReturnAsync();
} }

View File

@@ -40,7 +40,7 @@ namespace Content.Shared.Entry
var configMan = IoCManager.Resolve<IConfigurationManager>(); var configMan = IoCManager.Resolve<IConfigurationManager>();
#if FULL_RELEASE #if FULL_RELEASE
configMan.OverrideDefault(CVars.NetBufferSize, 2); configMan.OverrideDefault(CVars.NetInterpRatio, 2);
#elif DEBUG #elif DEBUG
configMan.OverrideDefault(CVars.NetFakeLagMin, 0.075f); configMan.OverrideDefault(CVars.NetFakeLagMin, 0.075f);
configMan.OverrideDefault(CVars.NetFakeLoss, 0.005f); configMan.OverrideDefault(CVars.NetFakeLoss, 0.005f);

View File

@@ -169,8 +169,4 @@ ui-options-function-shuttle-brake = Brake
## Network menu ## Network menu
ui-options-net-interp-ratio = State buffer size ui-options-net-interp-ratio = Network Smoothing
ui-options-net-interp-ratio-tooltip = Increasing this will generally make the game
more resistant to packet-loss, however in doing
so it effectively adds slightly more latency and
requires the client to predict more future ticks.

View File

@@ -130,6 +130,7 @@
- type: Construction - type: Construction
graph: LeverGraph graph: LeverGraph
node: LeverNode node: LeverNode
- type: Fixtures
- type: SignalTransmitter - type: SignalTransmitter
outputs: outputs:
Left: [] Left: []