The MMORPG Anatomy series of entries attempts to
diminish failure rates in independent game projects by offering a
simplistic, yet powerful series of arguments against the creation of
massively multiplayer online games of all stripes.
It tries to avoid overly technical or platform-specific explanations, instead focusing on the logistical and management aspects of developing a large scale MMORPG. It assumes you have no less than 5 years game programming experience. Please note: By massive we mean a game with over 1 000 simultaneous players. Other people use a definition of over 10 000 simultaneous players.
Why are MMORPGs so complex?MMORPGs are complex beasts, and the complexity doesn't stop after development has ceased and you have your interim release out. Online development means that you need to be a master of system administration, security management and game design, all at once, and that's after the constantly-increasing technical costs of game development. DevelopmentSome points:
Server managementA lot of stuff on a decent MMORPG happens server side. This means you need to have very powerful server machines with lots of bandwidth, particularly if your game has any sort of real-time behaviour. Note the plural of 'machines'; a lot of multiplayer game developers have the single-server model (QuakeWorld), but MMORPGs require several different machines, often load-balanced using complex algorithms and real-world performance testing. The networking code in a large scale MMO is highly tuned, tested extensively, and designed to have reliability and performance that is rare to find even in large enterprise application development. Websites can get away with a bit of lag from time to time -- real-time games cannot. Obviously, you'll need to manage those machines, and pay for the bandwidth. If you're just starting out with a small game, you might be able to keep 50-60 users happy with a single dedicated server and pipe from a place like Dreamhost for a few hundred bucks a year. If you have plans to expand, you will move to several boxes, very quickly, and your costs will reflect that. Plan to expand, but also plan to spend a lot of dough on hardware and hardware management, or to hire someone full-time to take care of it. Userbase SupportMMORPGs obviously need users. You need to keep these users happy, or they'll go to some other game. This is bad, particularly if you're expecting those users to give you money or ad impressions to keep your server alive. Security/GriefingIt would take a whole other article to discuss Online Game Security, so this is just going to be a quick draft of things you need to watch out for.
Then we have discussions of griefing, which can range from the simple (player murder) to the immensely complex (groups of players exploiting your game features to annoy and harass others in a fashion you never intended). You must respond to these concerns quickly, or your game will become unplayable and your players, expecting administrative intervention, will go elsewhere. Responding to criticismPlayers will have criticism of your game. This criticism may involve:
Obviously, part of producing a successful service on the Internet, whether an online store or MMORPG, involves responding to user feedback and handling crises. How should you do that? Managing cashIf your game costs money, you will have to deal with that money. There's basically two ways you can handle it:
My personal recomendation is to go with an external payment manager; you lose control and they often charge aggressive fees but this is the best method. Consider payment managers such as Kagi (http://www./) and PayPal (http://www.paypal.com). What does an MMORPG look like inside?Client sideThe client side is the easier of the two. This is like saying building a Sherman tank out of wood is easier than building a microprocessor out of sand. Graphics renderingThis is probably one of the best defined fields of MMORPG development. Basically, you're going to want to render your 3D graphics at a decent clip and still make the entire thing relatively attractive. While this is one of the single largest problems in game development and consumes the lives of academics for years, compared to the other problems of developing an MMORPG this is remarkably minimal. Also, consider that to be truly "massive" you'll want lots of users. Lots of users don't have super-powerful gaming boxes. You need to scale whatever graphics you put into the game, obviously. Security ImplicationsYes, there's even security issues with tossing polygons at your GPU; Counter-Strike style "wallhacks" and other exploits work by substituting the video driver with one that doesn't do proper depth clipping. There's also several popular OpenGL and Direct3D debuggers which can capture all rendered geometry and dump it to file; obviously just because the player can't see it right now doesn't mean the polygons will never get seen if you render them behind them. This is a general multiplayer game concern, though, but is still something to think about. Data managementThe client side has to manage data. Obviously, character data should be stored on the server, outside of the player's reach. This prevents the player from modifying their character data sheets and obtaining items and powers that they shouldn't have. What are you storing on the client? Generally, it's stuff like
This also brings up the sub-topic of patching, which is an important concern. When you patch the game, you'll want to enforce it on all players so that their client-side data syncs up properly; this means distributing a new set of hashes as well so the game "knows" when someone has substituted false data. There have also been some cheating attacks on games previously by modifying the patch as it comes down off the wire. Net codeObviously, network code is very important for the client. Changes you make here will directly affect the performance of your game, and obviously the performance of your server. Some key points to keep in mind:
Other concerns about net-code are game specific, but this is a good start point to begin thinking about the places your client's net-code can go wrong. Server sideIn an MMORPG, all of the gameplay and events occur server side. Computing gameplay consequences client-side is an invitation for cheats. Since you're handling a pretty beefy number of players and entities (with complex behaviour) you need to be sure that you're handling them quickly, in order to reduce lag and ensure a fun gameplay experience. This is easy enough when you have a small game, but as you move towards "massive"-level games, you will find that the obvious, dumb and slow approaches no longer work. When developing server code, in addition to the following points, you should be designing your code to:
PersistenceYou have to save data, obviously. Where do you save that data? In most implementations, it's to a database. But there are several concerns relating to a database:
If you don't have experience with databases, it's highly recommended you learn about many of the solutions out there and begin to develop a plan for your game's data persistence. Flat files are completely unacceptable for an MMORPG, and even your average off-the-shelf database will buckle under a truly "massive" load. SecurityYou must protect your server and server code itself against security issues. In the corporate world, this is the work of a full-time team of system administrators for a reasonably sized data farm. Some of the concerns you should be aware of:
There are also edge conditions (physical attacks on the machines, management console attacks, ISP attacks) that must be understood if you are to provide a robust service on the Internet. Cheat preventionReally an offshoot of security, you need to be aware that the client can and will feed you bad data if they get the opportunity. Doing things like confirming input (can the player really walk to this destination, or is there a rock in the way? Did they "warp" too far?), discarding malformed input, and quickly fixing gameplay bugs can help eliminate a lot of the cheating. However, also consider that your gameplay mechanics themselves can give rise to cheating and/or abusive behaviour (such as griefing). Ultima Online, for instance, was plagued by a series of robberies by players who determined they could painstakingly stack items to build a stairwell and lay siege to the homes of other players. Load balancingIf you run your game on a single server, you will begin to notice problems once your load starts to creep up. This is generally due to a bottleneck in your hardware, bandwidth, or something else. In the olden days, we used to deal with this by buying specialized hardware, optimizing the server code and spending hours upon hours poring over hand-tuned router rules. Nowadays, that isn't practical. The ballooning number of configurations and the success of Google have shown that commodity off-the-shelf hardware is probably your best bet (although, don't forget to optimize your server code anyway). So, that means you'll be adding a new server, pretty close to your existing one. That means that you now have two servers, which must balance the load of users without sacrificing their gameplay experience. In the past, attempts at load balancing generally split the world into separate "realms" of different users and rules. There are some newer designs that reduce this amount of splitting, but they are still load-balanced across multiple servers. In the end, you're going to end up with multiple servers, and probably with multiple database servers. This is an entirely different class of scalability concern, and you're going to hit this as soon as your game becomes relatively popular. It's best to plan for this from the beginning. How can I reduce MMORPG failure rates?Like any complex piece of software, the risk of failure on an MMORPG project can be mitigated by following good business, software design and development practices. For more information on why games fail, consult the Game Engineering page. Reduce ScopeCut your design down to fit the time you have to develop the software, even if it involves cutting one-off features. Set a design in stone, and don't move from it. Buy vs. BuildWith so many complex components moving about inside your project, it will take many years to develop all of the components of the game from scratch. Many developers are opting instead for middleware for various components of the game engine. Some of the benefits of a middleware solution:
Some of the downsides:
Many of these arguments also apply to game industry contractors; obviously, contractors are of varying quality and discussing the HR issues related to them would take up an entire other page. Hiring Right
Code QualityWith so much code, an MMORPG is sure to be prone to failure.
Why are MMORPGs so popular for indie teams?MMO's are extremely popular amongst indie devs because a lot of indie developers are young, inexperienced or both. This is not a bad thing to be; we were all young once and we all started with little experience. The problem with the MMORPG genre is that a lot of what is going on is occuring server-side. The gamer doesn't see it. So when it's done well, it looks like the game is actually quite simple to make, which can mislead the inexperienced. The truth, however, is that they are one of the most complex genres available today. They encompass multiple facets of the programming spectrum -- most of which are specialty fields in their own right. The reason experienced indie teams (NOTE: teams) take on MMOs is generally because they like the challenge and having an open-ended project means they always have something to tinker with. However, it's very rare you'll find an indie team trying to make something that competes on a commercial level. There are reasons for this:
|
|