We need to develop a multi-player game with real-time performance. This needs to be working worldwide (servers in America, Europe, Asia), and supporting a huge traffic. Using Google Cloud services for the hosting.
We're thinking of references like Jam with Chrome, Chrome Maze or Cube Slam.
The game :
- 2 players challenge a race
- We need to simultaneously display the progression of the 2 players
- Each match could last around 30 to 45 seconds
The hosting :
We will obviously host the website on AppEngine, automagically scaling, but are thinking about 2 solutions for the real-time servers :
Using websocket servers with Compute Engine
Like they did for Jam with Chrome, Maze, etc.
Developing our own websocket servers (technology TBD), deploying on datacenters in Europe, US, Asia, handling scaling, syncing between them, computing latency issues on servers and clients, etc.
But it's pretty technically challenging as we are very short on time, and missing an admin sys and network guy for now.Or using Channel API
We understand that it's not a websocket platform, and real-time performances are lower.
But it would be way more simple and secure for us and the time we have.
So, we would also like to know more about that.
In any case, we think we could use some graphical tricks on front ends, to make it look like real-time, but it really depends if we have a 100~500ms or a 500ms~10s latency.
Some questions :
- What would the latency range values look like for the different solutions ?
(Jam w/ Chrome got 100ms with GCE, could Channel API reach several seconds ?) - How would Channel API servers handle high traffic, how does scaling work, could the latency go very high ? (no info about that on Channel docs ?)
- What if someone in France play with someone in US, connecting to different servers, waiting them to sync, how to deal with it ?
- Any advice or experience to share ?
- Any interesting reading or viewing ? (seen some but not very precise)
- Any other solution ?
Thank you for any helping comment !
EDIT :
- Only 2 players connected together, potentially from different world zone, no broadcasting needed.
- We could find some front side tricks to avoid server side processing. This is a race between 2 players, so we actually just need to compare their progression, and the real winner resolution is not that important as there is no real stuff to win, this is more for fun.