Irrlicht Engine logo
FAQ
Frequently asked questions and their answers:

What is the Irrlicht Engine?
The Irrlicht Engine is a high performance open source and cross platform 3D engine for creating realtime 3D applications. Its main targets are to be easy to use, extremely fast, extensible and crash safe.

The engine is a quite flexible graphics engine, and it is possible to write lots of different applications with it. Some are: complex 3D simulation applications, first and third person shooter games with indoor and/or outdoor scenes, real time strategy games, 2D games, ...

For more informations, look at the features page.


Can I use the engine in a non open source commercial product?

Yes you can. The engine is open source and totally free. You can debug it, fix bugs and even change things you do not like. And you do not have to publish your changes: The engine is licensed under the zlib license, not the GPL or the LGPL. Look at license for more informations.


Can I create my game using Irrlicht as game engine?

Of course you can, it's easy.
But please note: Irrlicht is not a game engine, it only does graphics. For a game, you need a bit more, like sound output and maybe networking and physics, and tools such as a game level editor. You are free to choose any other library to do this. But to make it easier, there are libraries and tools made by us which are independent of Irrlicht, but easily integrate with Irrlicht engine projects. For example, there is irrKlang, a free 3D and 2D sound engine, or irrEdit, a free 3D world and level editor. See the toolset page, the wiki or the forum for more informations and help about this.


How can I make contributions to the engine?

If you've wrote your own SceneNodes, image or mesh loaders or further extensions to the engine, just send them per mail to me or post them into the forum. I will have a look at them and consider to put them on the homepage or even into the SDK of the engine.
There is a tutorial available on the tutorial page, which shows how to extend the Irrlicht engine. If you want your addition to be merged with the development branch, please also try to adhere to the Irrlicht coding rules.


There are lots of other 3D Engines available. So what are the advantages of the Irrlicht engine?

The Irrlicht engine was created because no available 3D engine satisfied my needs. I wanted an engine which had some awesome features, and no engine wich was available featured these things:

  • Easy to use. All standard things and all cool special effects of the Irrlicht Engine are able to be used without the need to study its documentation for days. For example: To start up the engine, load and show a complete quake 3 level needs only about 6 calls to the engine and about 10 lines of code. Just take a look at the tutorials and examples included in the sdk.
  • Flexibility: The programmer is able to change and influence almost everything in the engine although it is that easy to use.
  • Extreme stability. Most libraries for realtime applications crash when the user does something the library programmer did not expect. This is different in the Irrlicht engine. It prints out a warning to (debug-)log and continues, always trying to keep on running.
  • Fast as lightning. Because speed is always an issue with 3d engines.
    Lots of built-in importers. The engine is able to directly load lots of common file formats because I did not want to use converters or exporters, increasing development time. (.3ds, .md2, .obj, .pk3, .ms3d, .bsp, .x, .bmp, .tga, .jpg, .psd, .pcx...)
  • Platform independence. The engine is available on multiple platforms.
  • API independence. Because there are always some driver issues, the Irrlicht engine supports more then one API. Currently there is an OpenGL, Direct3D8 & Direct3D9 device, a null device and two software rasterizers. The devices are able to be switched during runtime.
  • No dependencies from other libraries. The engine needs no other libraries and sdks to be installed. Not for programming with the engine and not for using the engine as end user. E.g. The engine will also start up if no DirectX is installed on the end user system.
  • Detailed Documentation. With lots of examples and tutorials.
    All the standard stuff. It provides you built-in tools and utilities you will often need in 3D applications. Things you do not always want to code again when doing a new application. (GUI System, Font System + Tools, fast 3D Math, Containers, ...)
  • Open source. The engine is fully open source and totally free. You can debug it, fix bugs and even change things you do not like. And you do not have to publish your changes: The engine is licensed under the zlib licence, not the GPL or the LGPL.

You can take a look at the features page of the Irrlicht engine, for a more detailed description of most features.


Why is the engine so fast?

Lots of people are writing mails to me, telling me that they've evaluated some 3d engines now and are wondering why the Irrlicht Engine is that fast, faster than the other ones. To be honest, I don't know the exact reason. But there are some possibilities:

  • The Irrlicht Engine does not use that conservative culling algorithms like most other engines do, which works better on todays 3d hardware.
    It uses 16 bit textures by default (but all other formats are possbile too) which enables the engine to transfer and/or display textures 2 times faster than other engines.
  • The engine does not relay on lots of other slow libraries, almost everything is implemented directly inside the core of the engine.

How many polygons is the engine able to draw?

There is no limit. Okay, almost none: The only limit is your hardware. So push out as much polygons as you need, as long as your game is not getting slower.
Some people keep asking me why there are only 10000 polys in the techdemo as maximum. This is only because I did not want to include a huge quake 3 level, making the SDK download size bigger. If you want to see the engine render more polys, just replace the demo level with another one, and see for yourself.


I've a problem with my code, could solve it for me please? I get no answer in the forum.

Sorry, but I don't have the time to debug your application. Lots of people are sending me their code because they are not capable of using a debugger, and I am not able to check every program which is sent to me. In most cases it's a problem in your C++ code and has nothing to do with the engine. Just start your debugger and find out where your application crashes. Or if you don't know how to use a debugger, you could print out a
text before every line, to find out at which line it crashes.
The most common reason, why you don't get any help in the forums is because you did not specify your problem enough. Just pasting 100 lines of code into there and writing "it crashes somewhere here, could you solve it for me" is not enough. Hey, you are the programmer, and at least 60% of the programming time is spent debugging the code. Well, this is how I do it, and the 60% value may be higher or lower for other programmers, but I think you get the clue. Just try to find out by yourself what you did wrong. You'll learn more from this then if you let it be fixed by others.


What does 'Irrlicht' mean?

Irrlicht is the german word for a fairy-tale creature which glows and flies, and can be found mostly in the vicinity of swamps. I think the correct english translation is "will-o'-the-wisp". Also, the word "Irrlicht" is the composition of the two german words "irr", meaning "mad" and "Licht", meaning "light". The Irrlicht Engine is being developed in Austria (country south of Germany, not Australia) and so I think 'Irrlicht' is a cool name, although non german speaking people may not know how to pronounce it.
Because lots of people asked me how it is pronounced, I uploaded a .wav file, in which you can hear a girl saying 'Irrlicht Engine'.


Can I join the Irrlicht Engine team?

Basically: No, sorry. We would like to keep the Irrlicht Engine team small to keep everything clearly arranged.
However, there are exceptions. If you for example create a cool/useful/huge addition to Irrlicht and we think it would be easier to maintain this part with you joining the team, and you would like to do this too. Example: It would be cool if Irrlicht would run on the Mac platform too. (It already does, just an example.) Several people created partial working ports and sent them in as diff file, but they were incomplete and at that time there was no version control system for Irrlicht and it was not easily possible to synchronize the code, and we didn't accept new team members then. But that's changed now: If you created a working, Mac port according to the Irrlicht coding rules, would like to share and maintain it and also like to join the team, then just send your code to niko. That's it.
Please note that we are getting really a lot of requests of people who want to joint the Irrlicht Engine team (about 4 or 5 per month). So it is really difficult to choose, because we would like to keep the team small.


What are the coding rules?

If you are creating a patch for Irrlicht and want it to be merged with the development branch, please try to follow these few rules:

  • Don't add dependencies to other libraries or at least only if really, really necessary.
    • Don't use the STL, use the Irrlicht built in containers instead.
    • Don't use platform specific functions, use the internal os:: namespace for that if there is no other way to do what you need.
  • Always keep in mind that Irrlicht must be compileable on lots of different platforms and with several compilers.
    • Don't use special compiler extensions and try to adhere to standard C++.
    • Use the Irrlicht types like f32 and u32 defined in irrTypes.h.
  • Try not to break the existing interface if it is not really necessary. Only change current behaviour of the engine if necessary. People should be able to upgrade to new Irrlicht engine versions as easily as possible. If you are doing this anyway, it would be a good idea to discuss this with niko before.
  • Try to adhere to the existing Irrlicht code style.
    • Interfaces visible from outside start with I (e.g. ISceneManager), implementations with C (CSceneManager), structures only for holding data with S (SVertex3D).
    • Methods start with a lower case letter, member variables with uppercase letter. (e.g. ISceneManager::addTestSceneNode(), ISceneManager::ListOfSceneNodes ).
    • Public methods of interfaces have default parameters where useful.
    • Add doxygen documentation to new or changed methods. If you did a bigger change to Irrlicht, it would also be nice to document this in the file changes.txt
    • Use the C++ line breaking style, not the one used by Java coders:
      Good Bad
      for(foo)
      
      {
      
         // bar    
      
      } 
      for(foo) {
      
        // bar
      
      } 
    • There are some other few rules, but the ones above are the most important ones, for example it is a good idea to use spaces, newlines and tabs as often as possible. Just try to make your code look like the existing one.
  • Always check for errors, prevent crashes and wrong behaviour by validating pointers (check if they are not null) and input parameters. Log an error message and keep on running instead of stopping execution at all cost. There are of course exceptions like performance critical code like triangle rasterization in software mode.

That's it, have fun coding.


Is there no CVS?

Irrlicht is now hosted by a subversion server. All data in the CVS server is pre 1.0 source. But if you still want to, you can access it via :pserver:anonymous@cvs.sourceforge.net:/cvsroot/irrlicht
Modulename is 'Irrlicht'. For a detailed description, see this sourceforge manual page.


How can I access the Subversion server?

You can access the subversion server via https://irrlicht.svn.sourceforge.net/svnroot/irrlicht/trunk, online online repository browsing works too.


What will be in the next release of the engine?

Take a look at the development page or my blog, I am updating it from time to time with development news. You will find a short list of features, which you can expect to appear in the next version of the engine.


When will be the next release of the engine?

When it is done. This is only a open source project with one programmer, and I don't get any money for it, so I don't even have real deadlines. Time has shown that I need about 1-2 months for a minor release, meaning for example going from version 0.4 to version 0.5. Usually I am announcing the coming of a new release one or two weeks before it is done, and posting some screenshots of new features on the news page. So please don't send me emails asking when the new release will be available: In most cases, I don't know myself.



Valid XHTML 1.0! Valid CSS!


Irrlicht Engine and Irrlicht Engine webpage © 2003-2005 by Nikolaus Gebhardt