Open source libraries for game development

pg-connect-

Yesterday I had the chance to give a talk at Pocket Gamers Connect at San Francisco about Open source libraries for Game development. It was the first time that I attended that conference, and I really like the 15-minute format for all the talks: all talks were concise, to the point.

The slides of my talk can be found here: Game-OpenSource. And below you can find my personal opinions about the different libraries and licenses:

Licenses

Commercial friendly licenses: MIT, BSD, Zlib, Apache 2, etc. Best possible option.

  • You can use them in any kind of game, any kind of store.
  • You are not forced to distribute patches for these libraries, but do it whenever possible.

Non-Commercial friendly licenses:

  • LGPL: Apparently it is possible to use it on the App Store and other stores if you use it as a dynamic library. If you use it as a static library, it is still not certain whether or not it is legal.
  • GPL: Try to avoid it if possible. This is famous Viral license.

Ad-hoc licenses: Licenses created by engineers, not attorneys. Avoid them.

Libraries

All-in-one Game Engine Libraries:

  • Cocos2d-x: What can I say, I’m one of the main developers :). Optimized for 2d, but with 3d advanced features as well. C++ based, with Lua and JavaScript bindings.
  • libGDX: Very good 2d + 3d game engine. Java based.
  • GamePlay3d: Very good 3d game engine, with basic 2d features. Its code is super clean, super easy to understand. C++ based.
  • Godot: 2d + 3d game engine. Nice visual editor based on Godot itself. Bonus point for dog-fooding its own technology! C++ based with its own scripting language.
  • Ogre3d: Very advanced 3d game engine. Great for console or desktop games.
  • Torque3d: Used to be a commercial product. Was released as open source a few years ago. C++ based, with its own scripting engine.

Physics libraries:

  • Chipmunk2d: Fastest 2d physics library. C based with bindings to many languages.
  • Box2d: Most popular 2d physics library. C++ based with bindings to many languages.
  • LiquidFun: Google’s Box2d fork. Includes particle engine to simulate liquid.
  • Bullet: Very good 3d physics engine.

Scripting languages:

  • Lua: Very popular among game developers. Easy to embed. Fast.
  • Squirrel: Based on Lua, includes objects and other features not present on Lua.
  • Python: Great language, although not the smallest/fastest language.
  • JavaScript: It is JavaScript. Three options: v8, JavaScript Core or SpiderMonkey. We are using SpiderMonkey in cocos2d-x. So far, so good.
  • AngelScript: Syntax pretty similar to C/C++. Great if you like C/C++ and don’t want to learn yet another language

Renderers and more:

  • LibSDL: C based, nice API. Includes many multimedia APIs.
  • SFML: Alternative to libSDL, C++ based.
  • Allegro: Another alternative to libSDL, C++.
  • Qt: A little bit of everything. C++ based with declarative JavaScript (QML). Includes some gaming components.
  • BGFX: Advanced renderer, C++ based. Very nice architecture.
  • ANGLE: OpenGL / OpenGL ES emulation for Direct3D. Google and Microsoft are behind this project.

Misc libraries:

  • FreeType: TTF font rendering
  • LibPNG, libJPEG, WebP: Image loaders. Use WebP to reduce file size.
  • GPUImage: Huge collection of post-processing effects. Ignore the Objective-C code, and use the shaders
  • FlatBuffers: Another Google project. Fast, efficient serialization library. C++, based. 
  • Entity-X: Entity Component System. Could be used on top of Cocos2d-x or any other engine. C++ based.
  • Recast: 3D navigation library. C++ based.

In a 15-minute talk, it is impossible to cover all the available libraries. So please, feel free to add in the comments other libraries.

Posted in Uncategorized Tagged with: , , ,

Categories