This is an example of a caption.

19/09/2011

MMO paralysis part #3 – Technological perspective


Here we are, the third part of the “MMO stagnation” series. If you missed them, you can read Part #1 and Part #2.
This time it’s about the underlying technology. Those parts and bits that nobody knows but are definitely there, powering these monsters. You see, Massively Multiplayer Online Games are huge beasts to tame; they are as docile as a caged and hungry lion. Really, I couldn’t find a more stretching analogy.
Let’s get to it, shall we?


Faster than a speeding train (the ones in Japan)

Let’s get one thing straight, technology is a moving target. How fast it moves? We are talking about social media, “Likes”, tweets, reddits, who knows how many memes like they are everyday things. If one stops to think, this is completely different from 5 years ago! 5 years!

This is kind of contradictory when you take into account the time you need to develop a project that could take years. While not an MMO, you could take Duke Nukem Forever as an example. They had to change their engine several times over their 12+ years development span, and that’s not a situation any developer wants to get into. You usually have to adapt all types of assets, rewrite code, rewrite tools and couple that with learning a new engine and you have a one-way ticket to refactoring hell.

So okay, what do we do?

It could be as simple as having a solid plan, anticipate technology by the end and just get to work? Easier said than done is a perfect fit for this.
The industry slowly but surely started to understand this and accepted the fact that the entire development process needs to be less rigid, and flexible up to a reasonable degree.

Technology “back then”

For the sake of argument, back then refers to 10-12 years in the past. Back when visual MMOs were starting to appear. Here is a small but relevant compendium which I´ve divided into three categories, Client, Pipeline & Tools and Server.

- Client: The client was usually written in C/C++ with possibly a proprietary scripting system, although others used less common languages for this task but still viable. DirectX and OpenGL, some middleware for FMV playback. There was already a lot of standardization in this front, coming from single-player games so there wasn’t any lack of options. However, certain aspects of massive games needed specific pieces of software.
For instance, continuous world systems and a design that could support dozens, sometimes hundreds of players at the same time given the hardware restrictions of the time. This was a nightmare to debug and usually difficult bugs would arise in scenarios that you couldn’t anticipate. This was a new land to explore and no one had a proven answer yet.

- Pipeline & Tools: They were still using older methods for software development. Agile was yet to be “discovered” so Microsoft Project was commonly used for the traditional waterfall development practices, many of course opted for their own management software (nothing beats pen & paper, at least until we run out of trees or Tablets flood the market). Control systems utilized were mostly Visual Source Safe, CVS among others. Content tools were usually traditional applications such as Abobe Photoshop, Autodesk´s 3D Studio Max, Maya (which wasn´t at the hand of Autodesk back then) and a lot of custom made software built for the occasion.

- Server: This was an obscure subject at the time, because everybody was keeping their implementation a well kept secret. Of course, with millions of dollars in expenditure, it’s easy to understand why. The first big commercial hits started to pave the way for others, by eventually building their own datacenters. This proved that it wasn’t just a matter of developing a complex piece of software; you had to have knowledge and capable personnel to run a datacenter, which is not something cheap or easy for that matter. Since most of the games were shared, regular hardware provisioning was a common matter, as well as having a server operations team ready to upload new version, provide server maintenance and make sure the whole thing was running 24/7. As you may realize, this was not something a small team could afford. This gave birth to the era of big teams, more common than not in the hundreds range.

Today: Technology-wise, what do we need to create a MMO today?

But what If we wanted to create a MMO today? Somehow you have the team; you have the money and the right technology partners (chances are, if you have them, you already know any of this). You would then need the following items, and while not all MMOs need all of these, most of them are required in one way or another.

- A client: There are more options now. It could be a full blown application, a regular browser or scripts running on a commercial or even open source engine. The umbrella of available languages to code a game on has been expanded, you could now write it in Lua, Python, Angelscript, Squirrel or a slew of other scripting languages. Of course, you would have a lot of C++ code thrown in for performance and specific reasons. This application could actually be running on a regular PC, a notebook/netbook, tablet or even a cell phone.

There is a lot more middleware now; you could buy a complete engine, with different price ranges. You have solutions that tackle one or more areas (physics, audio, 3d, animation, UI, A.I., particle systems) or even very specific problems such as tree & foliage rendering.
Independent and smaller teams have options too, Open Source software has matured plenty over the years and there is now a great deal of alternatives.

- An efficient pipeline: This sounds like a utopia, there is really no ultimate bullet here but at least everyone is appreciating the fact that to be able to deliver software of this magnitude, you need to be able to achieve some form of efficiency. Naturally, pipeline is just a wildcard term for a variety of procedures and tools. Version control is one of the requirements, which now boasts a huge amount of options. Subversion and perforce are just a few names available. Project management has shifted into Agile, extreme programming, behavior driven development and other ways of handling this ever changing panorama of functional requirements.

Entire teams have realized that adaptation is the key and some developers even go as far as having wheels on their desks in order to pair developers on demand according to varying specifications. The traditional way of developing software has crumbled and movements have arisen to fill in the blanks left by the ruins.

- Content tools: Unleashing the artists has never rang so true now, not only artists but level designers, systems designers, balance specialists and anyone creating content. Data driven is not just a fancy term but a whole basic concept that managers and programmers alike take into consideration while designing tools for current MMOs. Also, an emergent trend is coming up, web tools are gaining traction and becoming relevant not as a replacement to traditional applications but as a complement instead. A few months ago, a known developer (company) just disclosed that their entire pipeline was going to be built around the web, using custom plugins to connect to 3D authoring software.

Around all this, there are a lot of specific needs that are taken care of by entire departments. We have now lead tool developers, tool developers, even tool designers and testers. It has become an entire area on its own merit but unfortunately is one of the most underappreciated ones to this day.

- Server infrastructure: This requires a series on its own, server infrastructure is now an integral part of both the development process and the live period. Thanks to a series of advances in virtualization, it’s now easier to simulate live environments and provide flexible servers that are configured to certain needs; this helps ease up development a lot.

On the production side, servers are more powerful than ever, they are more efficient and most importantly, inexpensive compared to the old ages. A medium sized MMORPG today can be run on a commodity hardware farm, of course, with probably more downtime due to failures but not so much as to be a show stopper.

Mature datacenters and connectivity all over the world helped bring options for games that required region locking. Improved protocols and capable personnel have made running a fully fledged mission critical game, a reality.

- A long term plan: Of course, the first MMOs had a long term plan but they actually were plowing strange lands. They didn´t know for certain that their visions were going to be correct (take a look again at the big trail of MMO corpses). After all these years, there is now a reference for what to do and most importantly, what not to do. This allowed for more risk taking ventures and sustainable projects.

Suddenly a game wasn´t just about finishing the retail version but designing it in way that could be improved. This is obviously more wishful thinking than anything one can dream, right? The opposite of this happens a lot, sadly. At the end of the day player numbers have proven that new content is better than consistency.

- Marketing (It´s still a product): This is the ugly truth. No, these games are (usually?) not made out of altruism. Of course, several developers love to do them, but if you have a company, you need to pay the wages, people need money to sustain themselves, you have bills, middleware to pay for and the list goes on and on. Yes, it’s a dog eat dog world out there, that could be better but in the meantime, we have to face the harsh reality.

Requirements like target market, gender, age groups, coolness factor, competition, region and a plethora of other items are just more restrictions that you give to game design, the best teams out there simply have great communication between the design and product team and came up with a cohesive and feasible plan.
Then you just need to follow and finish it…

Technology of tomorrow

Finally! We reached the most interesting part of the article, or so I´d like to think. The question is simply:
How do we leverage current and upcoming technology to ease MMO development?

Well, of course there is no easy answer but there are some ideas currently in place by some brave developers. For one, cloud computing is making a real dent into the mainstream arena, creating an opportunity space for startups and also big companies that want to be cost effective. Scaling has become a buzz word on one side but it’s really the key to all of this. Zynga for instance leverages the Amazon Cloud service by scaling up and down when needed. This means designing the software with scalability and replication from the ground up. It’s hard to refractor an entire game but we will continuously see more and more examples of this as years go by. On the other hand, it’s not a coincidence that the major proponents of this are relatively new companies and teams. NoSQL and all kind of middleware are popping up everywhere that will help make huge data processing systems a more robust reality.

Cloud computing not only opens up a world of possibilities for the live servers but also for development. Right now it’s possible to have a “datacenter in a browser” (Like the Swedish company City Network states) and do all kind of things like stress testing, content management tools, QA and anything you can come up with that requires several servers and clients.

On the software landscape we will have more and more mature open source software. Don’t get me wrong, there have been open source software in the background for years (zlib, opengl libraries, openal to name just a few) but now you have commercial games using open source engines, that’s a giant step. In addition, we have all kind of tools that are improving on a yearly basis (Gimp, blender, etc).

We now have a huge opportunity coming on the horizon with HTML 5 and the rapid development of browsers (Chrome, Firefox, Safari and Opera leading the innovations). All current web games will receive a face lift and bring them to a never before seen status. Suddenly, there will be no real difference between some web games and traditional ones (Heck, I even played one the other day over Steam, that could might as well been a flash game on a browser).

SaaS (Software as a Service) is finally showing its face and a lot of online services offering all kinds of solutions. Everything is connected is now something proven and not just a marketing term. Social media became an integral part of development and not just a medium for press-releases and viral marketing.
Okay fine, but what does this mean for players?

It paves the way for new kind of games, for old games with new tricks, it’s no telling what could happen but we are in the middle of a big transition that will settle in a couple of years with all kind of interesting stuff. These are, indeed, exciting times.
Of course, in a couple of years we will also have new ideas and technologies into place.

.

No comments:

Post a Comment