Google App Engine + Online Game

Started by
3 comments, last by yahn 14 years, 8 months ago
What are your thoughts on using Google App Engine as the database for an online game? This seems like a pretty bad idea at first, but I think it could actually be worth it. Google App Engine would act only as a database for the server, not the server itself (considering GAE cannot remain continuous connections, that's only logical). GAE has relatively slow write speed, but, don't most servers eliminate writing to the database in real time and only write at designated periods (that's why online games have roll back, I thought). Secondly, GAE is obviously good for something and that is reading data from a database. The problem is, I don't know if I can really capitalize on this since I can't send the information directly from GAE to the client (I would first have to send it to the server). Bear in mind, this seems like a pretty bad idea at first, but I think with a few workarounds it could work fairly decently. My last thing to mention is that the game in development utilizes the website far more than traditional online games. And, the website ideally would be run on GAE, since that is completely free even for a relatively large website. Furthermore, GAE can't really access data from a non-Bigtable database, so I couldn't use GAE to host the website if the data were on my server. So, obviously, in terms of a traditional game not considering a website, it would be a much better idea to just use my own database. However, this is really a website first/game second kind of deal. And the game's database and the website's database do have some common ground and I do not want to have duplicate data. So the real question: How much do you think GAE would hinder an online game? Is it enough to take a website off GAE and host it myself so that I can have my own database?
Advertisement
At a minimum, you'll need to make sure that the game server is the only one accessing your Google App -- else clients would have credentials and could hose the database.

Second, I don't think Google actually provides an SLA or the ability to pay to scale yet? If your game gets bigger than the current "free" limits, what do you do?

Another cloud data service you should probably check out is the Amazon SimpleDB, and you can also look into Amazon S3 for things like distributing large chunks of data (levels, game patches, and other downloads).

Finally, I'd rather write my game on top of Amazon Elastic Compute Cloud than Google App Engine, because there it's known how I can scale (just provision more server resources), and I can take most of the code I write and move it somewhere else if for some reason ECC doesn't work out for me in the long run.
enum Bool { True, False, FileNotFound };
Quote:At a minimum, you'll need to make sure that the game server is the only one accessing your Google App -- else clients would have credentials and could hose the database.

I actually cannot believe I didn't think of this. However, in order to access GAE you have to have a username and password. So, I don't think it is much less secure than a tradition DB hosted on a separate machine. I don't know. I have little knowledge of security.

Quote:Second, I don't think Google actually provides an SLA or the ability to pay to scale yet? If your game gets bigger than the current "free" limits, what do you do?

GAE scales very well -- much better than Amazon SimpleDB. I have no knowledge of Amazons other products, though, and I'm guessing that you are probably right that they would be better solutions.

Finally, while I would really like for my game to be a really big hit, I would be very surprised if there is ever a point that more than 50 players are playing at the same time.

I know you know a lot about networking, so I'm glad I got a response from you. You started to mention a few specific details of how a system like this could be helpful and I'm glad you did.

Quote:Another cloud data service you should probably check out is the Amazon SimpleDB, and you can also look into Amazon S3 for things like distributing large chunks of data (levels, game patches, and other downloads).

I'm not what form of distributing you mean. I was planning on using the database to distribute patches to the server, but patches to the client would be distributed via a torrent. I'm hoping this is what you are referring to, because, this is actually the main reason I want to use GAE.

And I don't know how practical this idea is, but, I was thinking of using GAE almost explicitly for that purpose. What do you think?
As long as your server connects to the GAE (so clients can't send their own arbitrary queries through hacking), the security is probably fine (assuming your server is fine :-)

If the GAE resource restrictions are OK for you, and if the GAE TOU are OK for you, then there's no reason not to try what you're saying. If nothing else, it would be a fun learning experience -- which is probably why you're doing this game in the first place, right?

I mentioned S3 because, when you have a big game, and lots of downloaders, any "free" anything will start becoming a real problem. If you think your users can use torrents correctly (port forwarding through routers and whatnot), then that's of course a fine way to do it, too.
enum Bool { True, False, FileNotFound };
Yes, it is mainly a learning experience, but, after thinking about it, it seems like a lot of work to accomplish little and I'll probably just host my own database.

But, thanks for the response.

This topic is closed to new replies.

Advertisement