OK guys, I have some experience with 2D game development (single player only), so that's fine no questions here.
The problem is with multiplayer games. I already read lots of other questions and articles to get my head around about peer-to-peer and server/client, and non-authoritative and authoritative game clients.
What am I trying to achieve?
Build a simple 2D multiplayer game with some physics involved and over 40 player per game, a good example is flapmmo. However my game concept will be completely different and the players and other game objects will actually interact/collide with each other.
What technologies have I chosen?
Client: Unity3d (easy to develop and cross-platform)
Server: Node.js + socket.io + express.js (easy to deploy and cheap to host)
What I have done so far:
I already have a test client and server running and the players connection/join game + spawning works just fine. Now I am stuck at how to synchronize all the objects + players.
Base on that:
1 - How do I simulate physics on the server, do I need to rewrite parts of client side on the server side using a JavaScript physics engine?
2 - Is it better to send action messages like "playerJumped" and broadcast it to the clients or send it's current position on every update (more bandwidth consumption I guess)?
3- I read the server needs to run on a lower frequency( E.g. 30hz) to better perform with latency issues. Is it FIXED_TIME_STEP that we are talking about?
Please feel free to add any other important point I should consider...
Tks