-
Embrace composition. Everything is a
Node. Compose behavior and graphics with trees. - Completely synchronous. Nodes are built and rendered in a synchronous loop. Errors are reported at the source.
-
Signals over callbacks. The
Signal, a lightweight event emitter, powers everything from animations to collisions. -
Embedded in Flutter. Any node can be rendered in the widget tree via
SceneWidget. Ignis runs wherever Flutter runs. - Live nodes. Any node can opt into rebuilding itself on save, so your edits land in the running game.
-
Live assets. When developing on the host machine,
LocalAssetBundleinstantly reloads assets into the global cache.
@override
void build() {
super.build();
final square = add(
ShapeNode(
shape: .square(40),
anchor: .center,
paint: Paint()..color = Colors.orange,
),
);
tick((dt) {
square.angle += pi / 4 * dt;
});
}
Loading the scene…
By the way...
Every demo on this site is a real Ignis scene compiled into the page, not a recording or a code sample.
Start Here#
- Motivation - why this engine exists.
- Nodes - how to use a
Node.
Attribution#
The mark in the header is a beautiful painting by Mewyn.
The example assets in the demos are provided by Infected Tribe.
