I've decided to delay the release of multiplayer to fix some major bugs that have cropped up just now. The biggest one is the server dropping clients for no apparent reason.
Object syncing
Object syncing is the hardest part. Since I've restricted myself to sending/receiving 120/kbs Since object data can be so large and it may contain pointers to other places (Though I wouldn't recommend using pointers in objects). If I were to simply put the objects data in A packet the size limit would be only 63 bytes. As the first byte is used to specify the opcode. Another method is too break the data into packets if its larger than 63 bytes but sense all packets are 64 bytes in size regardless of how much is being used. To make it simpler to receive packets and have A consistent packet buffer size. My current method doesn't even send object data but this causes several visual glitches in the stock plugins so it can't be used forever. I will eventually have to switch to A better system.
Object UI's
Several objects have UI's that do several different things for the objects. Currently if A object that has A UI is spawned while on A multiplayer server it wont work. This will be fixed for release though it may not be fixed in the release candidates.
Manipulating players
A object might change the players view point or position or damage/kill the player. But since all object activity is server side it will not effect the client side players (Players unlike objects are client side). Since players are client side client side plugins can still effect players.
Changing plugins for server use
Plugins written before multiplayer likely won't work on servers because if they change something about the game state it would need to be transmitted to the players. So there are new functions in the CDK like set_tile, set_ply_pos, set_ply_cam. And A new value in the GAMEOBJECT called sply it contains the id of the player that spawned the current object. Other functions allow the change of game state variables too and they will be transmitted to the players. Ensuring syncing between players.
Notes
set_ply_cam is just the prefix to _zoom _follow _pos
Locking the player controls is done with set_ply_lock
0 comments