I’m currently planning to develop an RPG. It will be a project I do in my free time. No pres-sure behind it. I’ll probably be doing it together with a friend and it’s just supposed to be a fun project, something we just work on, if we like to. Although it is a private fun project, I will make arrangements for this project, like project management and detailed documentation etc. I will also have a look at this thread and gather more information before starting.

An important choice I have to make is what libraries or framework I want to develop the game with. I know that there isn’t a BEST library, but maybe someone with some experience can recommend a fitting library. Maybe I just write down what my “requirements” are.

  • C++
  • Offline RPG
  • Running on Windows will suffice
  • Therefore I tend do Direct3D, contradictions? Proposals? OpenGL?
  • Well documented API

If you need some more specific information, just tell me.

If you can recommend libraries, how is multithreading done in those? Are new threads created implicitly? I’d just like to know as much as possible about what is coming to me, before starting.

Thanks in advance!


A good framework - or actually a toolset - is Unity3D. It's somewhat less flexible than "engines" that are focused only on rendering, but then it can save you enormous amounts of time by taking care of a lot of common tasks. You don't have to worry about render, physics, sound, resource importing, terrain engine (if you need one), it has passable GUI system.

In my experience, it's the only game engine out there that enables a single person to create a big game.

It requires C#, though (or its own Unityscript, but C# is way better).

  • \$\begingroup\$ For a hobby project I couldn't agree more. Don't waste time reinventing the wheel with your own 'custom' tech - just make a game and have fun. \$\endgroup\$ – James Jan 18 '11 at 17:57
  • \$\begingroup\$ I was under the impression that most people use Javascript with Unity, and that it supports C# w/Mono as well as Boo (a Python-like). \$\endgroup\$ – michael.bartnett Jan 19 '11 at 8:39
  • \$\begingroup\$ shiva3d is also a good engine similar to unity. The scripting language is LUA but plugins can be written in C. \$\endgroup\$ – Error 454 Jan 19 '11 at 9:20
  • 1
    \$\begingroup\$ @bearcdp Most people use unityscript. Most programmers use C# as it is way better documented. Actually, unityscript, and Boo, are not documented at all. \$\endgroup\$ – Nevermind Jan 19 '11 at 11:27
  • \$\begingroup\$ Although I will focus on Ogre3D, I will certainly have a look at Unity3D. And you're right, 'reinventing the wheel' is unnecessary. I don't want to create an engine, just a game. And I'm not afraid of coding like hell, so I wouldn't even need an editor like the one of Unity3D. But I will certainly consider using it. It will be Unity3D or Ogre3D at the end. Currently I'm tending toward Ogre. Thanks a lot for your advice! \$\endgroup\$ – Exa Jan 20 '11 at 11:42

To give proper advice we need to take a step back.

1) What are your goals.

2) What is your experience level.

If your answer to #1 is "I just want to make an RPG/tell a story/bring my characters to life" and #2 is "little to none", then I recommend you read this thread: Recommended RPG game that can be used to learn game Modding?

There's no reason to write rendering code if all you want to do is lay the framework for your story to take place in an existing engine, for example.

Also, I personally don't think C++ is a good requirement to have. Learning a new language, especially something that's higher level, can be an enlightening experience and also help you get stuff done faster, even if it's not theoretically as efficient.

  • \$\begingroup\$ Thanks for your answer. My main goal is to bring a world to life. A story, characters, whatever you know about common rpgs. But that does not mean that I wouldn't want to do what it takes to accomplish that, I'm open to learn about rendering etc. Experiences in game dev: none. C++: very good. Of course, learning a new (and better fitting) language is something I could consider. Assumed I would stay with C++, do u have recommendations for engines or libraries my framework would take place in? \$\endgroup\$ – Exa Jan 18 '11 at 9:46
  • \$\begingroup\$ If you have no experience with game dev, I'd recommend starting in the modding route just to get your feet wet. That's the quickest way to get to your goal. Once you have a better understanding of what it takes from the game side of things, you will be in a better situation to know what you need from your engine to accomplish your game's needs. \$\endgroup\$ – Tetrad Jan 18 '11 at 17:30
  • \$\begingroup\$ Tedrad is right. I think modding an existing RPG is the closest thing to an "RPG-Framework" you'll get. \$\endgroup\$ – bummzack Jan 18 '11 at 23:15
  • \$\begingroup\$ Thanks for your advice! I think I will have a look at the construction set of Oblivion, because I played this game for years. Any other suitable modding frameworks? \$\endgroup\$ – Exa Jan 20 '11 at 11:23
  • \$\begingroup\$ @Exa, That thread is full of them (although for some reason that particular asker didn't want to use neverwinter nights for some reason). Also if this is the path you go down, you should mark my answer as "accepted". \$\endgroup\$ – Tetrad Jan 21 '11 at 17:55

One thing I would like to clear you up on - don't expect to find one library that does all that. Or even some of it. Robust, sturdy libraries exist for large things (SDL for 2D graphics, OGRE3D and Irrlicht for 3D, FMOD for sound, etc), but don't expect to find a well documented RPG engine.

Also, there is going to be little difference if you choose DX over GL. The only thing I can possibly see is that OpenGL drivers (Windows) tend to be slightly worse than directX ones. Since both OGRE and Irrlicht are abstractions, you can switch between either. So cross platform-ity is not completely out the window.

However, if you take each of your requirements separately: ogre3D and Irrlicht are good solid 3D graphics engines.

And as for your threading concern, here is an article about threading OGRE. Natively, neither of the engines support it. But there's no reason why you cannot support it yourself.

I do not know of any RPG engines, but you can always try searching here, Gamedev.net and forums, and generally googling for RPG designs. I know for a fact there are a lot of great threads on the gamedev.net forums (though you may have to search a bit harder since they just updated the forums).

Of course, there's always Unity to look at. You can script in C# or Javascript (both being easy enough to learn) and it is very powerful. This would probably be the easiest route, but it depends on how you want to do your project :)

  • \$\begingroup\$ Thanks for your answer. I already discovered Gamedev.net, that will certainly be a place I will often go to! As I already said in another comment, I will concentrate on Ogre3D. I had a look at the threading issue and like one of the quotes said, I will use thread for things like sound or AI scripts. Would you recommend using boost for that? I made good experiences with other boost libs so far. \$\endgroup\$ – Exa Jan 20 '11 at 11:37
  • \$\begingroup\$ boost.threads is definitely a good choice if you want threading, yes. I doubt you would want a whole separate thread for AI or sound, though. \$\endgroup\$ – The Communist Duck Jan 20 '11 at 16:43
  • \$\begingroup\$ I just want to avoid any kind of performance decreases, that's why I thought about threading. \$\endgroup\$ – Exa Jan 20 '11 at 21:47
  • \$\begingroup\$ You're optimizing prematurely. A good use of threads is for background loading. Syncing across threads is a pain - try to keep each thread's data use as separate as possible. \$\endgroup\$ – The Communist Duck Jan 20 '11 at 21:56
  • \$\begingroup\$ I'll keep that in mind. Thx. \$\endgroup\$ – Exa Jan 21 '11 at 8:53

If you really do want to write a 3D RPG (a goal I highly support, by the way) I think Ogre3D is going to be your best bet for a starting framework. It's OpenGL-based and C++-based and can just get a lot of the "busywork" of making a basic renderer out of the way. Plus, it's released under the LGPL, which means that, should you decide to make this a commercial project in the future, you won't have to change engines.

Second, I would recommend reading a blog called the CRPG Addict. (I don't have enough rep to embed a link, just google it). Not only is it interesting watching him play through older RPGs, but he's got some excellent articles on RPG design that you really should check out.

  • \$\begingroup\$ Thanks for your support :) I already had a look at Ogre and worked my way through some of the tutorials and it seems like it would fit perfectly for my needs. Am I right that Ogre works well with meshes I create in Blender? And CEGUI should be suitable to create a GUI I guess. \$\endgroup\$ – Exa Jan 20 '11 at 11:31

I could suggest Leadwerks, a really easy but flexible and powerful game engine which does dynamic real-time lighting, physics, sounds, and basic controllers for you.


  • \$\begingroup\$ Is there a free version of it or is it only commercially licensed? \$\endgroup\$ – Exa Jan 20 '11 at 11:26

There have been several excellent recommendations, I would add panda3d to the list of items to check out. It has quite good documentation and is fairly easy to use.


You might want to look at Sauerbraten (Cube 2), a project focused on being a working open source 3D game with a well-designed, extendable engine. The game they implemented is an FPS rather than an RPG, so the RPG elements would be up to you to design in, but that level of design is probably one that'd wind up being completely custom in any event.

One notable aspect of Sauerbraten is that it, like Cube, is heavily focused on the world model being runtime morphic, which can be extremely useful both for developers working on the setting from within it, and if you want to go the ambitious dynamic persistent world route.


Not the answer you're looking for? Browse other questions tagged or ask your own question.