Open CaasGit opened 1 month ago
solution: implement predicted deletion :trollface:
adding to what deltanedas said, this is the method the client calls way before the server gets a chance to even enque the entity for deletion
public override void QueueDeleteEntity(EntityUid? uid)
{
if (uid == null || uid == EntityUid.Invalid)
return;
if (IsClientSide(uid.Value))
{
base.QueueDeleteEntity(uid);
return;
}
if (ShuttingDown)
return;
// Client-side entity deletion is not supported and will cause errors.
if (_client.RunLevel == ClientRunLevel.Connected || _client.RunLevel == ClientRunLevel.InGame)
LogManager.RootSawmill.Error($"Predicting the queued deletion of a networked entity: {ToPrettyString(uid.Value)}. Trace: {Environment.StackTrace}");
}
my first idea was have the client reconcile predicted deletions with the actual game state if they are not confirmed by the server, but this is a complex task that requires deep understanding of the game's networking architechture.
Description
Putting ash into a beaker causes an error on the client.
Reproduction Spawn Ash, Spawn Beaker. Push Ash into a Beaker. See client log for error.