A free and open source 2D game prototyping engine based on OpenGL and C++, created for last year's Indie Game Jam.
Posted by Varsity on Jan 31st, 2009
Angel can be downloaded from Google Code. It works on Windows and Macs, and "shouldn't be too hard to get running" on Linux. Official blurb follows:
Angel was originally made by a group of employees at Electronic Arts Los Angeles for use in a GameJam they were planning for April of 2008. The source was opened in January 2009.
- Actors (game objects with color, shape, responses, attributes, etc.)
- Texturing with Transparency
- "Animations" (texture swapping at defined intervals)
- Rigid-Body Physics
- A clever programmer can do soft-body physics with it
- Sound (.wav only)
- Text Rendering with multiple fonts
- Particle Systems
- Some basic AI (state machine and pathfinding)
- Config File Processing
- Input from a mouse, keyboard, or XBox 360 controller
- Binding inputs from a config file
- Tuning Variables that write out to a config file
- In-Game Console
(None of these things are horribly complex, but they're the sort of things that can be a pain to get working properly. The idea is to have a good set of base functionality to start with at the Jam.)
Some things to keep in mind as you explore this code:
- Angel is not intended as a general-purpose prototyping engine. That doesn't mean that it won't be suitable for lots of different things, but our chief goal in putting it together is to make it so people could get up and running with it as quickly as possible, specifically in a context where you only have 48 hours to make something with it.
- Angel is designed for experienced engineers. That doesn't mean that it uses all sorts of crazy programming techniques or is difficult to use (quite the opposite: see #1), but nor does it hold the developer's hand very much. It's expected that a developer has at least some experience exploring a codebase to see how it works.
- That said, we've taken pains to make the code as plain and readable as possible. In some places we've sacrificed efficiency or functionality if it would obfuscate the code.
All typical caveats apply: the code is messy in places, under-commented, certain things may be broken. We're still evolving the engine and cleaning it up, so any thoughts or recommendations are welcome.