Zandronum Chat @ irc.zandronum.com
#zandronum
Get the latest version: 2.1.2
Source Code

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0003180Zandronum[All Projects] Suggestionpublic2017-07-06 20:212017-07-10 07:18
ReporterKorshun 
Assigned ToDusk 
PrioritynormalSeverityminorReproducibilityalways
StatusresolvedResolutionfixed 
PlatformMicrosoftOSWindowsOS VersionXP/Vista/7
Product Version3.0-beta 
Target Version3.0Fixed in Version3.0 
Summary0003180: Make Warp/A_Warp not send updates to clients if the actor hasn't moved, like SetActorPosition
DescriptionWhen 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? file icon WarpInPlace.wad [^] (526 bytes) 2017-07-06 20:47
diff file icon movethingifchanged.diff [^] (4,262 bytes) 2017-07-08 13:51 [Show Content]

- Relationships

-  Notes
User avatar (0017980)
Korshun (reporter)
2017-07-06 20:49

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.
User avatar (0017988)
Dusk (developer)
2017-07-08 13:50

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.
User avatar (0017995)
Ru5tK1ng (updater)
2017-07-09 20:23

Commit was added here.
User avatar (0018001)
Kaminsky (reporter)
2017-07-10 02:47

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.

Issue Community Support
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.

- Issue History
Date Modified Username Field Change
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.

Links


Copyright © 2000 - 2017 MantisBT Team
Powered by Mantis Bugtracker