A selection of open source libs

Posted on September 26, 2010

Hi everyone,

After my post last week mentioning Speex, Wavpack and Vorbis I had a request for more open source options that may be of interest (thanks @karnakgames) as I hinted at there being quite a lot of them.

This post is going to be a list of interesting libraries that are ones we have used or would consider using, I’ve missed off larger libs such as OGRE / Irrilicht as those include many features covered by our own multi-platform technology. That being said we do occasionally use alternative solutions for things we do support in our tech either as an experiment testing out other interfaces or if feature implementations for a particular project would be too much of a time/cost investment.

I’m sure I’ve forgotten plenty of quality libraries and snippets so please post up in the comment and I’ll integrate those (plus any new ones I think of over the next few weeks!)

Audio/Video

  • Speex/Vorbis/Wavpack
  • Theora http://www.theora.org/
    • Another great package from the xiph.org group, this time a video codec that has become more and more popular the last few years. The encoders have steadily improved since we last used it and I believe it’s reasonably competitive with more popular codecs now (in terms of quality / bitrate) and has been mentioned in the news quite a bit this last year with the support for it in some browsers using the HTML5 video tag. It still has quite a way to go against h264 but it is a feasible solution depending on your video playback requirements.
  • Libsox (LGPL)  http://sox.sourceforge.net
    • A great set of audio manipulation routines as implemented by the command line tool ‘sox’

AI / Pathfinding

  • OpenSteer http://opensteer.sourceforge.net/
    • In the past when we’ve implemented boid systems we wrote our own based off Craig Reynolds work, OpenSteer is a library featuring implementations of the earlier steering behaviours and may be useful as an introduction


Physics

  • Open Dynamics Engine (ODE) http://ode.org/ode.html
    • This was a very popular open source physics engine (and still is though not maintained as much it seems), we’ve worked quite a bit with ODE in the past.
  • Bullet http://code.google.com/p/bullet/
    • The new leader of open source physics engines with as many features as commercially available solutions and an active community. We’ve not had chance to use it in a project yet but look forward to doing so.
  • Box2d http://www.box2d.org/
    • My favourite of the 2d physics engines, very simple to integrate into your code and it seems to be pretty solid.

UI related

  • FreeType2 http://www.freetype.org/index2.html
    • The very popular font engine, we’ve not used it in a project but have integrated it into some of our tools for the future. For completely dynamic font usage you could integrate this directly into your game for on the fly font generation.
  • Gameswf  http://tulrich.com/geekstuff/gameswf.html
    • Thatcher Ulrichs public domain library which I believe is still being maintained and has spawned many of the commercial Flash players / Flash based UI tools. This is something we played around with on internal projects many years ago and I’d love to look at again.
  • CEGUI http://www.cegui.org.uk/wiki/index.php/Main_Page
    • A GUI system which seems to be very popular, I’ve not looked at it in the past as I believe it was previously LGPL which is a bit of a scarier license when working on certain gaming platforms.
  • libRocket http://librocket.com/
    • Another interesting UI middleware package (based on HTML/CSS standards) I spotted the other day and will be investigating as an alternative to our existing UI solutions.
  • wxWidgets http://www.wxwidgets.org/
    • We tend to use wx for tool UI development whenever possible though WPF is certainly very tempting for Windows tool UI development now.

Scripting

  • Lua http://www.lua.org
    • One of the most popular scripting languages used for in-game scripting, we’ve used it on a few projects and are still massive fans. Early development was a lot tougher than it is now (having to write our own debugger!) but the community has really grown.
  • V8 http://code.google.com/p/v8/
    • Googles open source JavaScript engine, I’ve heard of a few people integrating this into their games. I’m not a massive JavaScript fan to be honest but I can see the appeal.
  • Python http://www.python.org/
    • A very popular language for tool development however many people also integrate into their games for scripting.

Networking

  • Libcurl http://curl.haxx.se/
    • The library beneath command line tool ‘curl’ which supports about everything you can imagine in terms of standard internet protocols – HTTP/FTP in particular and is very useful for interaction with web browsers across your cross-platform games.

Misc

  • Open Asset Import Library http://assimp.sourceforge.net/index.html
    • I came across this looking for some for a mesh import routine on a prototype project I was working on and flagged it as something to look into integrating with our tools. It seems to support a decent list of file format imports and mesh cleaning.
  • John Ratcliff’s Code Suppository  http://codesuppository.blogspot.com/
    • A range of useful snippets (and larger) varying from convex decomposition to mesh cleaning and micro memory allocators.
  • Boost  (http://www.boost.org/)
    • Not a library we use to be honest but very popular and for good reason especially in terms of useful code for tool development.

That’s all!

The above list is far from complete and I could have added quite a few more in each section, I’m sure I’ll kick myself over some of the ones I’ve missed.

Next week I’m actually away so I’ll be putting together the post in a few days and scheduling it, any requests are welcome for upcoming posts. We’re getting nearer to talking about our upcoming project releases which is very exciting for us.

Things we’ve been enjoying this week

  • Minecraft
    • I’m not going to link it as I’m not evil. I finally gave it a try and got sucked in!
Be Sociable, Share!

Tags: ,

3 Responses

  1. Byron
    September 26, 2010

    Great post! There are so many great resources out there to not only use but to learn from. I have used Box2D in personal projects and Berkelium in commercial projects. I’d highly recommend people taker a close look at V8 if you’re looking to go beyond Lua. It’s starting to gain traction beyond just the browser and is making it’s way back onto the server side: http://nodejs.org/.

    I’d also highly recommend game developer look at OpenSteer even if you don’t end up using the library. If you’re going to use AI to move objects around (2d or 3d) you’re likely going to be basing your work off the research Craig Reynolds has already done.


  2. warmi
    September 27, 2010

    I would also mention physicfs.
    http://icculus.org/physfs/

    It is a compact implementation of a virtual file system of sorts – great for managing all your game assets.


  3. Ken
    September 27, 2010

    I second the recommendation of Lua. In my opinion though, V8 (or any Javascript engine) is not an acceptable replacement for Lua for game scripting.

    The ease of integrating Lua with low-level code, the powerful table mechanism, and the ability to easily add OO extensions makes Lua a clear winner for me.


Leave a Reply