Hi,

I'm trying to see if it's feasible to write a game using app engine as the 
backend.

The task I'm most worried about is the discoverability of games. A user can 
create a new game (which creates a Game object in the datastore). Then 
other users can hit an endpoint to get a listing of open games, sorted by 
creation date.

Creating a new game will be a very low frequency operation, so no worries 
there. Users polling for new open games will be much higher in frequency 
though. Each time a user requests a listing of games, I need to go fetch a 
page of Game objects from the datastore. Let's say a page size = 20. And 
the Game object looks like this:

    class Game {
        String name;
        long timestampCreated;
        long timestampStarted;
        String mapName;
        String hostUsername;
        int numPlayersMax;
        List<String> playerNames; // usernames of other players currently 
joined
        Text gameState; // game state as serialized json string
    }

the query would be something like:

    select Games where timestampStarted = 0 
        and playerNames.size() < numPlayersMax 
        order by timestampCreated DESC limit 20;
    
First, I'm hoping it's possible to avoid loading the Text field in this 
listings query since it's not needed for rendering yet. Still there would 
be a fair number of fields to fetch and deserialize, and I'm afraid my 
costs would quickly make it impractical.

I could try keeping a list of open games in memcache, but not sure if I 
could achieve consistency between the memcache state and the datastore 
state of games. Will be looking into that.

I've got a very similar game to this already published, using a single 
jetty instance + mysql on one machine. It's starting to get too much 
traffic  now, and scaling would be a pain. App engine's scalability looks 
great for something like this, but not sure if the # of writes and 
inefficient reads I need to perform are a good idea.

Any general thoughts on this would be greatly appreciated. I'm starting to 
dig into this now and any thoughts on how you'd implement the above would 
be great. In my already-published game (mentioned above), I ran a dark test 
where I'd call through to a (quickly implemented) mirror of the game 
running on app engine. It quickly ate through the daily quota!

Thanks

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/cvpOxGrMRaoJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to