The Most Important Part When Creating a 3D Game

From time to time, people send me mails, asking me if they can create a World of Warcraft, Oblivion or Quake like game when using Irrlicht as Game Engine. Well, in short: Yes, of course you can. No one will stop you.

But a longer answer would be: First, let me tell you that Irrlicht is a 3D engine. It draws nice graphics. And doesn't do a lot more. Irrlicht is NOT a game engine. Let me draw you a simple UML diagram, illustrating what you usually find in a typical game:

game engine uml diagram

Diagram created using UModel

As you might notice, a very basic game consists usually of a graphics engine (examples for these are Irrlicht, Ogre or maybe even a DirectDraw based one), a sound engine (for example using fmod or irrKlang) and today, in most cases even a physics engine (like ODE or Bullet). And last but not least, there has to be the game logic somewhere. This is the most important part which no one will create for you, which is the core of your game. The component that is the fun part, the one that basically is your game.

All this together is forming a so called game engine.
The gray rectangles on the bottom on this diagram are exchangeable components. Instead of using Irrlicht, you could use DirectDraw and instead of using irrKlang you can use fmod, but the game you are creating will still be the same. The important part is the gray rectangle with the text 'Game Logic' on it. Concentrate on this, that's what the most essential part is.

So yes, you can create the next Oblivion using Irrlicht, if you like. But have you ever thought of making it fun first, and using for example simple 2d graphics? Before trying to generate a huge 3d world on your own which usually takes teams of up to 100 people, many years and several million euros of money? Games are not there for the graphics. They are there for the fun. For entertaining people. Just a thought.

(Disclaimer: This blog post has been created so I can link it for all the following mails I get, asking me if they can use Irrlicht as game engine for their next MMORPG.)

eight comments, already:

Two comments:
1) Why don’t you link OGRE or fmod? BTW, it’s either fmod or FMOD, I never saw “fMod” before.
2) DirectDraw is really deprecated (since DX7) and recently was replaced by Direct2D.
rip () - 19 10 09 - 16:49

corrected. The part with DirectDraw was just an example (as all libraries in there are), but yes, could have used direct2d as well.
niko - 19 10 09 - 17:00

Yes, but can one create the next Pong?! Write me quick; my whole development team is waiting to make his next move!
Jacob () (link) - 19 10 09 - 17:36

Nice Overview
the Link to ODE is a little wrong fg
By the way: Thanks alot for your projekts (Irr…;) you are the best!
Stefan Branske - 19 10 09 - 23:41

That’s so true. I am currently trying to get a game engine together with just a simple game to “test” it (a marble-madness-inspired-game ;) ). Later on I hope that I can put most of my focus to the game logics without having to care too much about the graphics and phyiscs and sound engines.

Btw: I spend at least half of the time (i guess even more) in desiging levels for my game. So if you want to create a WoW clone be sure that you have the manpower to get a nice and decent world put together, which is quite a lot more work than the simple levels of my “marbles” games.
Brainsaw (link) - 20 10 09 - 07:14

I agree 100% with the above post, BUT
you left out the most important part: Networking code.

Whether you use a 3d or a 2d engine, the networking part in a mmorpg is by far one of the hardest things to write, even with a full high-level networking engine under your belt, you still have to deal with things like dead-reckoning (and endless DR debugging sessions), security, and scalability.

I’d LOVE to see some comments & suggestions about that. Anyone ever hoping to finish even the smallest mmorpg (or any multi-player network game for that matter) is going to have to deal with this.
Gothi[c] - 21 10 09 - 13:18

s/most important part/second most important part/ ;)
Gothi[c] - 21 10 09 - 13:33

@Gothi©: I didn’t mention networking because I never done that. But I would like to do a networking version of my “marbles2” game … I think I’ll try that as soon as I’m finished with the current version without network.
Brainsaw (link) - 22 10 09 - 07:22

Remember personal info?
Email (optional):
URL (optional):
Enter "layered" (antispam):
Comment:Emoticons / Textile

  ( Register your username / Log in )

Notify: Yes, send me email when someone replies.  

Small print: All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.
Note: If you type in your email adress above, it will be visible to other visitors, although it will be hidden for bots using javaScript.