Currently, we as developers have no control over how packets get sent vs visual effects. By default, DM helps us out with smooth looking movement and simplified packets. When a client presses an arrow key, the event is sent to the server, and the server determines if this move is valid, if it is, the server allows the movement and the client's mob is moved. This update is shown on any client's screen who can see the mob. This update happens efficiently because the packet only contains a small amount of data... rather than the other clients watching this mob knowing how many pixels from origin the mob is, they only know what tile the mob is on. If this was left alone, every movement would be jerky (moving one tile at a time, no interpolation in between).
So Byond has done a great job with giving us a smooth moving mob. When the server tells each client that the mob has moved, the loc of the mob is updated instantly, and then a short animation of frames is displayed to all watchers of the mob. This animation happens on the clients because the clients are dream seekers, and dream seeker contains the code to make the visual updates to make mob appear as if he is moving. When using the default values, this is how BYOND handles player movement.
If we switch to our own custom step_size, we start to take control of this system. DM gives us the option to adjust many parameters which will ultimately effect the over all visual and functional outcome...
Unfortunately, there's currently not enough control... or at least not enough option... As soon as any ATOM changes step_size, the entire world switches from auto-matic mode to pixel_perfect mode... and there's no way to switch it back without rebooting the world. Even if you were to implement your own system in place of BYOND's default behavior (a system that uses pixel_perfect movement to simulate tile-based movement), you'd never be able to control the amount of packets being sent over the network (a packet per step_size per client).
I am wondering, will there ever be a way for these two modes to co-exist? I would love for some things to have pixel perfect movement (and an increase in network traffic as a consequence), and then the optional ability to switch back to default behavior (decreased traffic, snapped to tile placement only as a consequence)...
If the practicality is to be questioned for this request... here's an idea currently not possible in byond...
A game where player's represented by characters are free to roam the world (in tile mode) until they get into a battle with someone or something. The game invites the player to become skilled on positional combat by employing a pixel perfect movement battle field, where mobs and players can change the course of the battle by quick reflexes and clever maneuvering... once the battle is over, the characters are back to tile movement in the free roaming world!
Although I understand its possible to implement the above example, it isn't practical. Because the pros to using tile-based movement go out the window when replacing the default system provided by byond.
ID:154684
![]() Jan 18 2012, 8:28 am
|
|
![]() Jan 18 2012, 9:17 am
|
|
In early iterations these modes did coexist. We found it to be fairly confusing for users, and in particular it was causing a lot of erroneous bug reports from people who didn't bother to read the documentation. The all-or-nothing approach was chosen to deal with the situation.
|
FIREking wrote:
If the practicality is to be questioned for this request... here's an idea currently not possible in byond... Players would likely be disappointed by the clumsiness of tile-based movement after seeing the smoothness of pixel-based movement in combat. Just use pixel movement for everything. |
I disagree, its not clumsy. Play Final Fantasy III on snes, and tell me if that's clumsy. One of the best games of all time in my opinion.
|