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.

Reply via email to