views:

294

answers:

2

Monopoly City Streets is the latest MMORPG by Hasbro.

If someone asks you to build a similar game, how would you go about it?

  • What technology/language
  • Hardware specs and scaling
  • Database and its architecture
  • Security or cheat prevention
  • Other things...
+9  A: 

Just wanted to chime in that Monopoly City Streets was one of the worst launches I've ever seen. The dev blog said they tested for "a whole month" (only! with no private or public beta!) and too many reports credited the massive popularity of the game for their service failures (the implementation problems likely go much deeper than simply getting too much traffic).

I have no idea how they got to launch without anyone discovering (much less designing to mitigate) the username registration bug where a second user could overwrite and lock up a previous user's account simply by registering with the same username. No email address or other verification process is needed for new accounts. This is basic web dev stuff, not the kind of mistake you typically see in a major brand MMORPG with an anticipated worldwide player base in the millions.

Once you're playing you realize how few features there are and how most of the load is reading from the map data and property/building states. Why does it run so poorly with so little actually going on in-game? It would be cool if they released an honest post-mortem to help educate other dev teams because there will be more and more companies trying to create buzz with advergames like this (with no experience or interest in learning how to make MMOs). They could save other teams a lot of pain by sharing their failures/fixes on this game.

The security/cheating is the main thing that I would handle differently. The game design rewards cheating (multis/alts) and offers next to nothing to do between limited turn actions (encouraging even more multi/alt play). There is also little to no social interaction in the game itself. I'm sure they can iron out the performance issues but the game itself is flawed in ways that technical optimizations can't fix. Even if they reset the db and close some of the security holes I think they'll need to redesign core game mechanics or institute some real anti-cheating measures (which is very hard to retrofit post-launch).

My recommendation for security/cheat prevention is to utilize training and consulting from experts in game security like Steven Davis (his company's middleware product SecurePlay is as-good-as-you'll-get for a multiplayer online game but it does require planning and dev investment to integrate, and it can't magically clean up the discouraging effects of game design flaws which encourage and reward blatant cheating). For technology choices I would probably lean toward java/python + mysql server-side with a Flash client (just because I've been happy with the MMO platform Multiverse, which uses a similar setup but with a Windows-only client whereas Flash in the browser would give a better user experience on more systems). I suppose it would be even better to pick something mobile-friendly for the client but that depends on the game (and you can always build a second client to let mobile users do some basic/limited stuff anyways).

KellyRued
excellent insights
Arpit Tambi
+6  A: 

If I was asked to build a new MMO (and didn't already work for a company that does exactly that) then I would start by reading these two books:

Then I would realise that I was still underequipped for the task and would dig out some generic web development and game development books too... professional MMO development (as opposed to throwing a few PHP scripts online and calling it an MMO) takes most of the complexities of web development and professional game development and combines them into one project. As such there are almost infinite ways you could approach it, the suitability of which would depend on the individual game design and target market, and therefore anything purporting to be a definitive answer here would be disingenuous.

The client software is often an embedded Flash object for these web-based MMOs, but could be HTML, Javascript, Java, Silverlight, etc, or could be a downloadable client written in Java, C++, Python, VB, etc. There's even more flexibility with the server, since you don't have to deploy it. It could be Java, C++, PHP, ASP.NET, Python, Ruby, etc. And behind that your database could be MySQL, PostgreSQL, SQL Server, Oracle, SQLite, bespoke data written to flat files... all have been used. The servers and database could run on Linux, or Windows, or any other modern OS, or even across multiple OSes.

How you're going to adapt to scaling is going to be a different story depending on which of the above you use. In general it's the same here as anywhere - cache what you can, replicate what you can't, optimise your code and platform according to your usage patterns.

Security and cheat prevention however is pretty simple at an abstract level: never trust the client. (Read the other laws there if you want some pithy insights into online game design.) This tends to mean the server is the authority on all actions and needs to maintain enough per-player state to be able to validate this.

Kylotan
Thanks for the link to The Laws of Online World Design
Arpit Tambi