A cross-platform 2D game prototyping framework based on OpenGL and C++

Angel balances the speed and flexibility of native code with an eye towards rapid iteration and out-of-the-box functionality. In a world of web games and memory-managed scripting engines, sometimes you still want to get your hands dirty — but that doesn't mean you have to get stuck in the mud.

Cross-Platform

Angel can create games for Windows, the Mac, most flavors of Linux, and iOS. It uses the native build systems on each platform (Visual Studio, Xcode, Make), so you can be up and running as soon as possible.

Helpful and Agile

Angel was created with game jams in mind, so it's focused on providing as many convenient features as possible, but in a quickly understandable way.

At the same time, we don't hide the actual code in a maze of data structures. The low-level code that Angel wraps is always just an easy click away, ready to be overridden or improved.

We want you to spend more time actually making your game, and less time getting library features working.

Downloads

Angel 3.2 Source Code

(All Platforms)

Angel 3.2 Documentation

(PDF and HTML)

Angel 3.2 Windows Demos

Angel 3.2 Mac Demos

The demo packs include a basic platformer, a nostalgic space-rock-shooting game, a pretty scene, and a copy of IntroGame, which shows off most engine features in a sequence of descriptive screens. All demos include their source code, so if you're curious about how to do something you see here, have a look!

Project Goals

Provide all functionality in a quickly understandable way.

We try to avoid overly complicated programming techniques, even if that means sacrificing efficiency or, in some cases, functionality.

As far down the stack as we can manage, the code is plainly written and thoroughly commented. We expect people to modify the core engine in the course of their work, so we've tried to make that a manageable thing.

Provide as much functionality as possible.

Angel was originally created (and is still used) as an engine for game jams, and the last thing you want to be doing in a jam context is debugging the pathfinding code you had to cobble together.

If there's something big you feel is missing from Angel, please send an email to the discussion group. We can't add every feature, obviously, but we want to at least make sure there's nothing we're forgetting.

Allow an experienced developer to dive deeper.

Given the first two points, we create a lot of wrappers around third-party libraries, but we always make it simple to access the raw capabilities of those libraries. So if you know what you're doing, you can be making direct OpenGL calls or poking the Box2D physics simulation.

In short, we strive to keep our code relatively shallow — it's always easy to find the code doing the actual work, so you're not slogging through multiple levels of OO redirection.

Simplicity

Out of the box, Angel sets up a basic OpenGL view and provides you with a suite of Actor classes which encapsulate various functionality. Physics, text rendering, camera controls, transformation intervals, sprite animations, and plenty more. When you build in Release mode, we even put together a folder with your executable and all necessary libraries and resources, perfect for zipping up and distributing.

Convenience through Scripting

There's a number of things that can be annoying to add to your game that help with development and make the eventual player's experience better, but aren't the sexy work that you want to be doing when you've got an idea burning you up.

To that end, we have a tuning interface, a preferences system, and an in-game console, all driven through Lua. You can manipulate the world through the console, or write your own script files to run your game functionality. Lua sits as a thin layer on top of Angel, so whether you build your game mostly in script or in code is up to you!

Open

This is more than just being BSD-licensed. Angel is designed as a framework that you build into, not just a standalone library that sits alongside your work. It's extensible, and meant to be extended. Create your own Actor types, tweak the order in which the simulation loop runs updates, increase the update interval of the physics engine — whatever you need to do. Eventually Angel becomes your game.