Saturday, December 12, 2009

Out with UDK, in with OGRE

After dicking around with the Unreal Development Kit, which was released for free a month ago, I've come to the conclusion that it's not what I want. There are a bunch of reasons for this. I'll list some pros first. In no particular order:

Unreal Pros:
  • UnrealScript is pretty similar to C++ and Java. Not hard to pick up.
  • Lots of nitty gritty stuff is handled for you. Things like rendering a level and letting you use the built-in UT character models is trivial.
  • OK documentation for getting your project up and running initially.
  • Powerful tools for doing animation and stuff inside the editor.
  • Kismet (graphical flowchart programming tool) is awesome.
  • Network support.

Unreal Cons:
  • Unintuitive directory structures for projects. You need to put your code beside the Unreal Tournament code? Huh?
  • Compiler for UnrealScript often crashes instead of giving a meaningful error, usually caused by malformed statements.
  • It's really aimed toward FPS and other shooters, with network support. Other gametypes are certainly possible, but you have to rewrite a lot of the framework in unintuitive ways. For example, detecting a click still uses the "StartFire()" function even when your game has nothing to do with guns and firing.
  • Poor API documentation. You're forced to dig through the code, and search on forums for help.
  • No official support for a lot of popular 3d modeling programs. They support 3dsMax and Maya, but not Blender. A cool dude made a Blender exporter plugin in his spare time, but it's far from complete.
  • If you make money from your game above $5k, you need to pay 25% royalties to Epic Games.
Summary:  It boils down to lack of support for modern free tools, and having a bunch of unintuitive API humps. I assume most users of UDK before Epic Games released it for free lurked the forums all the time to learn tricks to use Unreal Engine. That or they worked alongside Epic Games developers and so got special support while writing. Not to mention that they get the full Unreal Engine written in C++ if they can afford the license.




Now, why OGRE?
  • Very intuitive if you know C++, have a basic understanding of graphics systems like OpenGL, and have worked with any sort of game engine before, like pygame.
  • Great documentation and tutorials.
  • Support for Blender.
  • Use C++ directly. Meaning you can use Visual Studio or whatever full-featured IDE.
  • Plugin system to integrate with other great tools, like CEGUI, a GUI manager.
  • Just as easy as UDK to get your first project running, thanks to the Ogre AppWizard for Visual Studio. It does all the standard boilerplate for you for new projects.
  • Open-source under LGPL with some (good for developer) exceptions. So I can look at the engine code and change it if necessary, as long as I provide the source code of changes along with my product. Starting version 1.7 which isn't out yet, it will be licensed under MIT license which is even less restrictive than LGPL. (Steve Streeting explains why he made the shift to MIT license.)
  • Recently ported to iPhone and iTouch. Although, a tad late considering Android has been stepping up the competition considerably.
Also in a previous post I mentioned wanting to use Irrlicht. But I moved away from Irrlicht before even starting using it, so I can't compare OGRE and Irrlicht. However judging by Internet people's comments, OGRE is more powerful with higher learning curve, which I don't mind at all. Also it's been proven successful commercially with Torchlight, which is hugely motivational.