I'm also looking into a similar problem. You can use Channel API to avoid polling and thus unnecessary datastore operations. However, Channel API also has limited free quota.
On Fri, Aug 24, 2012 at 5:37 AM, Mark <[email protected]> wrote: > 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. > -- Best Regards, Rerngvit Yanggratoke -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. 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.
