node.js – Choosing a technology stack for a physics-based real-time .io game

As this is the first time we are going to create an Online Multiplayer Game (MMO), we need community guidance to choose a reliable technology stack. The game is not turn-based like chess, but it's a real-time, physics-based game like this one.

This image shows how we see the client-server architecture. There are thousands of players and many rooms, each room can hold up to 100 players. Each player is like an active spectator – he sends his input controls and waits for the server to tell what happened to make it on the customer's screen. The server is authoritative, it contains the game world and, based on customer input, advances the state of the world. Customer entries must be delivered to the server reliably. The server must speak to the client by sending reliable messages (boot level event) and unreliable (player position).

After some research, we think that the next technological stack will allow us to create the game

  • Phaser (rendering, communication to the server)
  • Node.js as a server with socket.io for networking and Box2d for physics
    simulation
  • deployment on AWS

Our priority is to make the game prototype as soon as possible to validate the idea and the technological limits. If the proof of concept worked as expected, we would like to develop the game using the same technology stack if possible.

I know this question is highly subjective, but I would like to hear some opinions, the pros and cons to get an idea of ​​what to look for. Thank you in advance.