|Anonymous | Login | Signup for a new account||2017-09-20 02:02 UTC|
|My View | View Issues | Change Log | Roadmap | Zandronum Issue Support Ranking | Rules | My Account|
|View Issue Details|
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0003180||Zandronum||[All Projects] Suggestion||public||2017-07-06 20:21||2017-07-10 07:18|
|Target Version||3.0||Fixed in Version||3.0|
|Summary||0003180: Make Warp/A_Warp not send updates to clients if the actor hasn't moved, like SetActorPosition|
|Description||When a call to SetActorPosition moves the actor to its current coordinates, no actor position update is sent over the network.|
But this is not the case with Warp and A_Warp, which always sends a position update, regardless of whether the actor's coordinates changed as a result.
Implementing this optimization would be very useful when a lot of mostly-immobile serverside actors constantly call A_Warp, and these actors can't be made clientside due to insufficient data about other actors clientside.
|Attached Files|| WarpInPlace.wad [^] (526 bytes) 2017-07-06 20:47|
movethingifchanged.diff [^] (4,262 bytes) 2017-07-08 13:51 [Show Content]
Uploaded a test wad, as requested.
Use "summon TestActor", the test actor just calls a script that does Warp(0, 0, 0, 0, 0, 0), which results in no position change, but a lot of traffic, if you spawn a dozen TestActors.
I devised two possible fixes for this:
1) check whether the angle changed and control the CM_ANGLE bit passed to SERVERCOMMANDS_MoveThing with it. However, this results in the server flooding the client with MoveThing commands only telling to reuse x, y and z. If we can just suppress these commands entirely, then this would solve the problem.
2) differentiate between two position states and send updates to the client. This doesn't require a change to MoveThing packet sending but requires more code. I've attached this solution as a diff.
|Commit was added here.|
I tried this out on a custom server. The Warp/A_Warp functions didn't create any traffic when the actor was warped in the same position as it was located.
I summoned a couple of custom monsters which spawned a child actor that constantly warped close to them. While the monsters were stationary, no net traffic was produced, but whenever the monsters moved, the change in position caused the orbs to use bandwidth when warped, as expected.
This issue is already marked as resolved.
If you feel that is not the case, please reopen it and explain why.
|Supporters:||Korshun Fused Kaminsky|
|Opponents:||No one explicitly opposes this issue yet.|
|2017-07-06 20:21||Korshun||New Issue|
|2017-07-06 20:47||Korshun||File Added: WarpInPlace.wad|
|2017-07-06 20:49||Korshun||Note Added: 0017980|
|2017-07-06 20:50||Dusk||Assigned To||=> Dusk|
|2017-07-06 20:50||Dusk||Status||new => assigned|
|2017-07-08 13:50||Dusk||Note Added: 0017988|
|2017-07-08 13:51||Dusk||File Added: movethingifchanged.diff|
|2017-07-08 13:51||Dusk||Status||assigned => needs review|
|2017-07-09 20:23||Ru5tK1ng||Note Added: 0017995|
|2017-07-09 20:23||Ru5tK1ng||Status||needs review => needs testing|
|2017-07-09 20:23||Ru5tK1ng||Target Version||=> 3.0|
|2017-07-10 02:47||Kaminsky||Note Added: 0018001|
|2017-07-10 07:18||Dusk||Status||needs testing => resolved|
|2017-07-10 07:18||Dusk||Fixed in Version||=> 3.0|
|2017-07-10 07:18||Dusk||Resolution||open => fixed|
Questions or other issues? Contact Us.
|Copyright © 2000 - 2017 MantisBT Team|