1 December, 2004
Game development is tough work. Often it is useful to have a scripting language to make the work a bit easier. What should you look for in a scripting language? No, this is not going to be a religious rant.
I’m a software engineer by training. I have a degree in Computer Science and just under a decade of real experience now. I think religious arguments are stupid; one language is not always the best. Different tasks require different tools, and different languages are appropriate.
Meridian 59 uses a proprietary scripting language called “Blakod” developed by one of the original programmers, Chris Kirmse. It an object orientated language with C-like syntax, LISP-like lists, and uses message passing as the coding idiom. It’s actually a brilliant little language, very powerful and expressive. It’s worked very well over the past decade to allow the development of a dynamic game like M59 and ran on very modest machines by today’s standards. The original M59 servers were Pentium Pro 200 MHz machines with 128 MB of RAM and could host up to 200 simultaneous players in theory (more in practice as long as people weren’t too clumped together).
Things are different these days, however. There’s not much call for writing an entirely new scripting language. There are a number of languages out there that fit the bill just fine. Writing your own languages takes a lot of time and effort to get right, and it’s just not justified in these days of tremendous computing power. Especially when you’re talking about online RPGs, we rarely have to program down to the metal anymore. Server machines are so much more powerful today, it boggles the mind. You can’t even buy a processor that runs at “only” 200 MHz today.
As I said, each task requires a different tool that works well with the task. Choosing the wrong tool can make your job harder and send you over budget or behind schedule.
If I were to develop an online RPG these days, I would consider the task carefully. We have powerful machines, large teams, players that eat up content as fast as we can create it, and a lifespan measured in multiple years. This means we don’t have to run a super lean-and-mean language like Lua, we want something that a wide variety of people can use, we want something that is easy to develop in, and we want something that’s easily maintainable. Quite a tall order, hmm?
Again, a proprietary language written by a senior engineer is probably not a good idea. First, it takes time to develop a good language, more time than it takes to learn a new language for most people. Second, most programmers think like programmers, so they create complex scripting languages. What’s the goal of a scripting language? In online RPG development, it is usually to give non-programmers the ability to create content. A powerful but user-unfriendly language doesn’t accomplish this goal. You also have the issue of training. With a proprietary scripting language, you must write up your own training and information documents, but with an off-the-shelf solution there are usually plenty of well-written books and manuals to help. Finally, you have the issue of maintainability. If the original senior engineer leaves the project, he takes a lot of knowledge with him. Trying to pick up and extend a language years after the fact can be daunting (the voice of experience speaks!). With other languages, you have the possibility of outside expertise being able to lend assistance.
Personally, I think that Python fits the bill fairly well. It is a reasonably powerful language that is easy to learn and has a lot of support. The syntax enforces a specific coding style (this means less debates on silly trivia like bracket positioning, indenting guidelines, etc.) which is easy to read and easy to maintain. I’ve dabbled in Python a bit and found it to be really easy to use. Non-technical people I know have tried to use it with fairly cool results. It won’t make your programmers obsolete, but it will allow designers with some technical ability to write into the game themselves. And with variations such as Stackless Python (used in the online RPG EVE online), there’s a lot of possibilities. And, as you can see, the language has been tested in an online RPG environment. If I were to develop an online game, I would seriously consider using Python.
Remember: pick the appropriate tool for the task at hand. Python isn’t always the best choice. Sometimes you might want another language with a strength that Python does not have. Perhaps you need a faster language, or something that your technical team is more familiar with, or even something more powerful and expressive. There is no one right answer for every situation.