header image

So, Heimdall

What I’ve been doing lately? Playing Skyrim, playing The Binding of Isaac, procrastinating and thinking about internal structure of a MMORPG game server, roughly in that order.

Wait, what? A MMORPG game server?

Yeah. Let this be an introduction to Heimdall – my personal pet project since around spring this year. Heimdall is (going to be) the engine for a (pseudo) isometric 2.5D MMORPG inspired by Ultima Online. I was a player and an administrator/programmer for many custom UO shards back in the days. I actually learned C# to be able to script RunUO, the best UO server emulator out there. Some time ago I and a couple of my friends came to a conclusion that it would be really nice to have a game like UO, but without its limitations, with our own world, lore and freedom to create things we would like to see out there. Game that is not another WoW clone, but a sandbox without meaningless “kill ten bears” quests all over the place, game where you could actually roleplay, fight and have good old-fashioned fun.

Of course at the beginning I was very skeptic to an idea of making a MMO from scratch. I’m a software engineer and a gamer, I know damn well how complicated it would be. To think of it, MMORPGs are probably one of the most complex pieces of software in existence. Let’s think about what topics you and your team need to know about:

  • Have damn good design skills to come up with a half-decent, maintanable and extendable architecture for the whole thing
  • Network programming on a pretty sophisticated level
  • Databases and storage backends
  • Security, on multiple levels (server, client, network)
  • Actual game design, which is enormous topic in itself (basic mechanics, world lore, map design, quests, encounters, etc etc)
  • Artificial Intelligence (or artificial stupidity) for your hostile entities
  • Graphics programming
  • Asset creation – drawing, modelling, creating sounds and music
  • GUI creation, usability, extendability of client UI
  • Patching, content distribution
  • Probably lots of other things I forgot

And that’s without a whole slew of issues that appear if you want to be “big”: server/database sharding, reliability, system/network engineering, knowledge of financial processing systems… Yeah, that’s A LOT of things to take care of. I knew that. But I still took the challenge. It may take years to come up with something usable, but it’s worth it for the learning experience alone for me.

So where do I stand now? I have the basic system architecture planned. I have an account/authentication server working (creating acounts, logging in, selecting game servers etc). I have a first prototype of graphical client in progress. Now I’m at the point of the biggest initial challenge (IMHO): to proceed with the initial prototype, I need to have base design for actual game server mechanics. First iteration requirement includes player avatars moving on the map, able to see each other. That means game server needs to process/store game world entities. Game entities need to be able to interact with each other, at least on a basic “perception” level. Coming up with a good, extendable and maintanable architecture for game entities is harrowing. Especially if you don’t know what will be added in the future.

At the moment I’m planning to use entity system approach instead of the traditional OO class tree. I’ll talk about it in more detail in a future post most likely, but that’s it for now.

~ by omeg on November 29, 2011.

code, game development, Heimdall

Leave a Reply