Zone effects are dropped for a viewer whose scene rebuilds on the same tick #59
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
A viewer whose scene rebuilds on a given tick is sent no zone effects for that
tick.
World.Player.Encodedeliberately skips them on the rebuild branch,on the reasoning that there is nothing to replay in an effect that has already
happened — which is right for the replay case and wrong for effects that
happened on the same tick as the rebuild.
Today it costs nothing, because the only things that emit zone effects are
::projand the bench harness. Combat makes it per-attack-per-tick, and thesymptom is a projectile or a hit graphic silently missing for exactly the player
who crossed a scene boundary while it was in flight.
The distinction the code needs and does not have: a loc change is durable and
is correctly re-sent wholesale on a rebuild; a zone effect is a moment. An
effect from an earlier tick should not be replayed, and an effect from this
tick should be sent, rebuild or not.
World.ZoneEffectsalready keys by tick,so the information needed to tell them apart is present.
Not blocking until combat, and it should be closed with combat rather than
after it — it is exactly the kind of gap that reads as a netcode problem.