Hi folks! I just got started with Google App engine (using Java) and it's great! I'm trying to develop a backend for an asynchronous turn-based game I'm working on in my spare time. My plan was to develop a REST-ish API that my game client would consume & poll periodically for updates. You can picture the game as a kind of chess game with only one multi- purpose pawn for each player (their character). Each player takes a turn to make his move (attack, defense, etc), until one of the characters dies. Pretty basic.
Now it's the first time I'm writing a backend on top of being a google app engine newbie, so there are a few areas I'm still a bit uncertain about. I would really appreciate if some of you knowledgeable folks could spare a bit of your time to give some advices on how to best design this server. I'm using Objectify and the basic javax.servlet framework to receive and submit requests. Here are my questions: 1) A game between two players can theoretically last days. From what I understand, I should store each player's move in the datastore, correct? My initial reflex was to just keep the game session data in the memcache but then I read that it was not a correct use-case, as it the oldest cached elements can be removed from the cache at any time to make room for newer data in case it's running low on memory. Also, I should not simply be storing this data in my "java objects" (instance memory) as idle instances of my app can be killed at any time by google app engine to free up resources, is that correct? 2) I'm going to need some way to identify individual users and save persistent progress stats (level, experience, etc). I was thinking of rolling a simple User class and prompt new players to create an account with username & password. What is the best way of storing that sensitive data (mp5 hash I suppose?). Also, how can I ensure that a move request comes from the desired user? Do I need to use some kind of secret key delivered to the user upon login and that would have to be included in all subsequent requests? Do I just check the requester IP? If so, how do you handle people behind corporate routers seen as a single IP by the outside world? 3) Is it ok to have the game client poll for game status update every 5 seconds? Data sent back by the server would, for instance, include the most recent move of the other player and manage player turn assignment. Thanks, I'll probably have more questions later! :) -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-java@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.