CadetEngine is a component-based AS3 Scene Engine supporting 2D and 3D GPU accelerated rendering, physics, custom behaviours and 3rd party library integration. It has been designed from the ground up to be plug-and-play with editability in mind.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Cadet Banner

  • Please check the Releases for software versions compatible with CadetEditor
  • See the wiki for details on how to get started.


CadetEngine is a component-based AS3 Scene Engine supporting 2D and 3D GPU accelerated rendering, physics, custom behaviours and 3rd party library integration.

The CadetEngine framework supports extensibility by being separated into tiers, each tier augments the Cadet core library via its own ActionScript Library project.

Cadet (core)

Dependencies: CoreApp

Cadet is the core scene engine, a bare bones structure containing (amongst others) the classes Component, ComponentContainer and CadetScene. All children of the CadetScene must be Components and all Components which have children must be ComponentContainers, for instance, CadetScene extends ComponentContainer, which in turn extends Component.

The Cadet core library can be used in conjunction with vanilla Starling, Away3D, etc projects in order to add game processes and behaviours. However, if you wish to integrate Cadet projects with the CadetEditor, the Cadet2D and Cadet3D libraries must be used. Cadet2D and Cadet3D wrap up Starling and Away3D implementations respectively via a single layer of abstraction, providing a simple wrapper API which allows specific properties to be inspectable via the property inspector and serializable using the serialization lib. Cadet2D and Cadet3D give Starling and Away3D a presence in the Cadet scene graph in the same way Cadet2DBox2D gives Box2D a presence in the scene graph. The CadetEditor solely acts upon the Cadet scene graph, so anything that needs to be editable needs to have a presence within it.

It's worth noting that Cadet doesn't get mixed up in the internal execution of any 3rd party libraries, it simply provides hooks for adding and removing entities to/from those libraries, and adding/removing instances of the libraries themselves; it does all of this by simply calling the 3rd party library's public API.



Dependencies: Cadet (core), CoreApp, Starling, Starling-Extension-Graphics, Starling-Extension-Particle-System

Cadet2D augments Cadet with 2D Rendering capability (via Starling and Starling-Extension-Graphics) and adds various 2D-specific geometries, skins, behaviours and processes. It also supports particles via Starling-Extension-Particle-System.



Dependencies: Cadet (core), Cadet2D

Cadet2DBox2D augments Cadet2D with a suite of physics behaviours and processes powered by the Box2D library. Cadet2DBox2D has been separated from Cadet2D in order to allow Cadet2D to be augmented by other physics engines without bundling all of the various implementations into one bloated library. It may also be the case that the user wishes to simply use Cadet2D without requiring physics.



Dependencies: Cadet (core), CoreApp, Away3D

Cadet3D augments Cadet with 3D Rendering capability (via Away3D) and various 3D-specific geometries, materials, lights, cameras, textures, etc.



Dependencies: Cadet (core), Cadet3D, AwayPhysics

Cadet3DPhysics augments Cadet3D with physics behaviours and processes powered by the AwayPhysics library. Cadet3DPhysics has been separated from Cadet3D as users may wish to simply use Cadet3D and not require physics, or perhaps try a different physics engine.