title: Realtime game on Google Cloud : Channel API or Compute Engine?
body: <p>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.</p>
  
  <p>We're thinking of references like Jam with Chrome, Chrome Maze or Cube Slam.</p>
  
  <h3>The game :</h3>
  
  <ul>
  <li>2 players challenge a race</li>
  <li>We need to simultaneously display the progression of the 2 players</li>
  <li>Each match could last around 30 to 45 seconds</li>
  </ul>
  
  <h3>The hosting :</h3>
  
  <p>We will obviously host the website on AppEngine, automagically scaling,
  but are thinking about 2 solutions for the real-time servers :</p>
  
  <ol>
  <li><p><strong>Using websocket servers with Compute Engine</strong><br/><br/>
  Like they did for Jam with Chrome, Maze, etc.<br/>
  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.<br/>
  But it's pretty technically challenging as we are very short on time, and missing an admin sys and network guy for now.</p></li>
  <li><p><strong>Or using Channel API</strong><br/><br/>
  We understand that it's not a websocket platform, and real-time performances are lower.<br/>
  But it would be way more simple and secure for us and the time we have.<br/>
  So, we would also like to know more about that.</p></li>
  </ol>
  
  <p>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.</p>
  
  <h3>Some questions :</h3>
  
  <ul>
  <li>What would the latency range values look like for the different solutions ?<br/>
  (Jam w/ Chrome got 100ms with GCE, could Channel API reach several seconds ?)</li>
  <li>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 ?)</li>
  <li>What if someone in France play with someone in US, connecting to different servers, waiting them to sync, how to deal with it ?</li>
  <li>Any advice or experience to share ?</li>
  <li>Any interesting reading or viewing ? (seen some but not very precise)</li>
  <li>Any other solution ?</li>
  </ul>
  
  <p>Thank you for any helping comment !</p>
  
  <p><strong>EDIT</strong> :</p>
  
  <ul>
  <li>Only 2 players connected together, potentially from different world zone, no broadcasting needed.</li>
  <li>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.</li>
  </ul>