2 ms·
This is oddly entertaining. Could you explain how you represent the "world" in the AppEngine data store? (Also, could you use cookies to bring me back where I
by davepeck 17y ago
This is oddly entertaining. Could you explain how you represent the "world" in the AppEngine data store?
(Also, could you use cookies to bring me back where I left?)
- bdr 17y agoIt's really simple. This was my first App Engine project. There's only one model, Tile, that has contents, namespace, and x/y coordinates. The contents field is a string representing the text in this tile. The namespace tells you what page the tile belongs to (e.g., /newsyc), and the coordinates are relative to the starting position. Namespace, x, and y are part of the keyname, so contents is the only model property. I don't create a tile until someone writes to that area. I don't want to use cookies, but I'm thinking about implementing some kind of directions feature. ("Where am I?" "How do I get to X?") But I also want to keep the system really simple, so I don't know.
- davepeck 17y agoI assume you only construct a tile if someone types in it; not if someone simply scrolls over it? How large are the tiles?
- bdr 17y agoCorrect, and 8x16.
- davepeck 17y agoGot it. I ask because the tile size will seem to directly impact the amount of data store contention (aka the number of db.TimeoutExceptions). It would be an interesting study to look at contention rates (percentage of failed datastore reads) vs. tile sizes when the app is under load. (I also assume you make use of memcache, though I further presume that typing implies an immediate db put().)
- bdr 17y agoYeah. The tradeoff is that smaller tiles are harder on the client. I wasn't really rigorous in choosing the size, so it's likely not optimal. I actually don't use memcache yet.