Search the Community
Showing results for tags 'authorative server'.
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!
Hello guys, So I am something like 3 weeks after the beginning of my game. It has been quite some fun and I believe I have made some good progress. Now since I got most of the mechanics going, AI, Battle system, Player control, HUD, terrains, npc's and characters , I started adding the server. The game is a multiplayer online RPG. My first try was to add Babylon.js to Node and I thought that would make it run, it didn't. Babylon.js seems to be requesting for a window object ( and thats fair to be honest ). Searching the forum I didn't see any solution so I thought to develop the server using electron. Also since electron can be run as headless that really is a viable option for now. I am not really convinced though so I thought to ask here about other ideas. Just to clarify, I need Babylon.js in the server side code because the server is authorative. I am not using any physics, just the navmash library of Babylon which need to be both sides in order for prediction to work. Client side and server side simulations need to be mostly identical to avoid as much server reconciliation as I can. So I would love to hear your thoughts about it. Thank you and best regards, RelativeNull/