Post tutorial RSS Useful Third-party Libraries

Read our discussion about picking good third-party libraries, and avoid making the same mistakes we did.

Posted by on - Basic Client Side Coding

Have you ever been troubled about finding good third party libraries which are both affordable (free) and with a non-restrictive license? With this article we want to share our investigations, to let you save some time. Most of the libraries below have been tested and verified through prototyping by our dev team.Note: if you have any tips or questions, feel free to leave a comment!

Complete game engine

We initially had a discussion about using a complete game engine. We investigated many different engines, particularly Unreal Engine, but most require expensive licence fees for commercial use. So, since we are on a quite low budget in this project, we decided to implement our own engine and make use of severallibraries for specific parts instead.


For rendering we considered many alternatives, but finally decided to make our own engine using DirectX. Since our game is in space, the implementation of graphics is not very complicated, and by creating our own engine we will have more flexibility and it will be easier to find and understand bugs. A strong alternative we considered is Ogre.


Choice of sound engine has been a really hot topic of debate in our team. We require a sound library with easy support for 3D-audio and streamed sound sources. Our main considerations were OpenAL, SFML and FMOD. Finally we decided to use OpenAL.

For a non-commercial project or any commercial project with a higher budget, we would recommend FMOD. If you have a low or zero-budget project but still having ideas of releasing it commercially we recommend either OpenAL or SFML.

  • Very easy to use
  • Lots of documentation, great support
  • Free for non-commercial use
  • Requires paid license for commercial projects: $500 per title and platform for budget below $100000 (pricing details)

OpenAL (before v1.1)

  • Free to use, also commercially. (note that newer versions are proprietary)
  • Not updated for a long time. This means that it may lack more modern functions, but just playing sounds hasn't changed much, so we beleive this is actually an advantadge since it will be easier to find correct code examples.
  • Has many extensions for more advanced functionality. Use ALUT for loading sound files, and the OpenAL Effects Extension to apply various sound effects, such as high-pass filtering.


  • Free to use, also commercially
  • Continually updated
  • Easy to use
  • Lacking support for sound effects/filtering
  • Comes with a big library of other functionality, but it is possible to pick only the parts you need.


For network we recommend RakNet. It has a special license for commercial indie games, allowing your team to use it for free initially. When you have made a profit of $100000 you will have to pay $7500 for a full licence. RakNet comes with good support and lots of example code and documentation. It is easy to use, has tons of features and it took us just a few days to make a thorough working prototype with 10 clients and a server.


We initially considered Havoc, but decided to not use it since it seems complicated and requires a paid license. We decided to use Bulletphysics since it seems very well documented. Bulletphysics is free to use for commercial projects.


There are several libraries available for AI. However, most of them appear to be discontinued or lacking features. The most promising one we found, OpenSkyNet, is still in development but provides functionality for pathfinding and statemachines. We decided to implement our own AI since no library supported any features useful for our project.


There are many useful libraries, and using them can be a good alternative to save some time. However, finding libraries with enough documentation and a proper license for your project can be tricky.
Make sure to make early prototypes before you decide to implement a library to your game, that will help if it is worth the time to integrate the library in your engine. After all, using a library applies maintainence overhead, so be careful when you pick them.


This comment is currently awaiting admin approval, join now to view.

Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.