LogoIgnis

Ignis

A 2D Flutter game engine built on nodes and signals.

The Ignis mark, a painting of a flame.
  • 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, LocalAssetBundle instantly 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;
  });
}
overview.dart
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#

Attribution#

The mark in the header is a beautiful painting by Mewyn.

The example assets in the demos are provided by Infected Tribe.