Search the Community
Showing results for tags 'authoritative'.
Found 2 results
Hey all, I'm currently in the process of re-writing my authoritative server from one that was completely event driven to one that relies heavily on a game loop and I had some questions I'm sure some people can answer. To give some insight for my question, the way the old event-based system worked was basically the client would do something, then send tell the server what it was trying to do. The server would then check if this was legal if it was, do nothing but tell other players what that client did, if not legal, would set the client back to its previous state. For example, movement was handled by the client telling the server where it was a few times a second. The server would make sure it's getting consistent updates from the client and calculate if its velocity and other parts of its movement was legal, if so the server would accept that update and store it and push it to other clients. Similarly, shooting was handled in the same way. (Bullets do not travel btw, shooting would essentially just spawn a point of damage wherever you clicked) Client would tell the server where it wants to shoot, server would give it the okay or not then push that info to everyone else and calculate damage if it hit someone etc. Now, I'm switching to a game loop so that my entities can have a more robust "ai" behind them. While in the process of this I've moved a lot of the server logic (like movement) to the loop and it seems to be much more functional (and authoritative) to do it this way. I always knew the loop made more sense, I just didn't want to hassle myself with it yet. Now the main question I have is should I be handling things like shooting in the game loop too, or is it okay to keep them event driven. Do I lose anything by having half the game event driven and the other half of the game ran in the loop? Since bullets aren't a traveling entity and is just damage at a point and all the server needs to do is calculate if you can shoot there, and if there is a player there, then damage them. Should I move this logic into the loop for cleanness/speed/efficiency? Same thing with other things like opening an inventory screen. When you open your inventory on the client, the client requests the server for its items, the server just immediately sends the client the info it needs (while doing some other logic obv). Should I move this to the loop and set like a flag that says on the next loop serve this client their inventory? Or does it really not matter at all and whatever makes sense to me? Let me know if I need to elaborate some more, I'm sometimes not too clear hahaha. Thanks!
We’re excited to announce the alpha release of AppWarpS2, our on-premise gaming server solution! We launched AppWarp cloud less than a year ago and have seen great adoption in the multiplayer developer community. One of the features often requested was the ability to host and extend the server side by the developers themselves. The release of AppWarpS2 fulfills those requirements. AppWarpS2 allows developers to tap in and extend the same server engine that powers our cloud product. Using our server side libraries and SDK, developers have the ability to build their own full-fledged Java game server. Popular cloud features of matchmaking, room properties, arbitration, connection resiliency etc. are all available out of the box. On the client side, developers will use the same cross-platform SDKs (iOS, Android, WP, Flash, Unity, Marmalade etc.) that they use when developing for the cloud. AppWarpS2 comes with great getting started guides and samples for different scenarios and client platforms. From simple chat server to MMO applications and casino style card game samples are included in the package. Conforming with ShepHertz developer-friendly strategy, AppWarpS2 will be free for developers up-to 500 CCUs. This is a high free threshold which spares developers of having to worry about license costs unless their games become wildly successful. Visit our AppWarpS2 page to register, log-in and download the setup. Contact us on email@example.com any further queries.