Skip to main content

Prerequisites

You build an EigenInteractive game in your own repository, and the engine ships as ordinary packages. You never clone the engine repositories, and nothing about the engine installs globally — create-eigen-game runs through npm create, and wrangler arrives as a project dependency. The two Firebase CLIs are the only global installs on this page.

What you do need is the toolchain underneath both halves: a JavaScript runtime for the Worker, Flutter for the app, and accounts at the two services the engine is built on.

Skip ahead to check everything at once if you already have a Flutter setup that builds Android apps — that is most of this page.

To write and test game rules

This much is enough to scaffold a project, write rules in both languages, and run every test. No account, no device, no Android SDK.

ToolVersionWhy
Node.js22 or newerRuns the scaffolder, wrangler, and the Worker's tests
pnpm or npmany current releasepnpm is the default the scaffolder assumes; npm works identically
Flutter3.44 or newer, bringing Dart 3.12 or newerThe app half, the Dart rules twin, and the payload generator
GitanyFlutter uses it internally, and it is your project's history

Dart is not a separate install — it ships inside Flutter, and flutter --version prints both.

Scaffolding needs network access

create-eigen-game installs both halves as it goes — npm for the Worker, pub.dev for the app — so it needs the network throughout, not just at the start. An interrupted run leaves a partly installed project on disk; delete the directory and start again.

You do not pick versions. The scaffolder installs one engine release and the eigen_flutter release that was tested against it, so a new project starts on a pair already known to work together rather than on whatever was newest that morning. Versions and compatibility lists the pairs, and is where to look when you later upgrade one half.

To run the app

The Worker runs locally with no extra tooling — wrangler dev is enough. The Flutter app needs two things: a Firebase project, and a platform to run on.

A Firebase project

A Firebase project for player identity and push notifications. One project serves both, and it is free to start. This is not something to defer until you deploy: a scaffolded app throws Firebase is not configured the moment it launches, because identity is how a player gets a seat at all.

Connecting one needs two command-line tools, and this is the one place something is installed globally:

npm install -g firebase-tools # the `firebase` CLI
dart pub global activate flutterfire_cli # the `flutterfire` CLI

pnpm firebase:configure in a scaffolded project drives both. dart pub global activate does not put flutterfire on your PATH, so if your shell cannot find it afterwards, add Dart's global package directory:

export PATH="$PATH":"$HOME/.pub-cache/bin"

See Configure a game for what the configuration step actually writes, and Push notifications for the messaging half.

A platform

A scaffolded project targets two.

Web needs Chrome, which flutter run -d chrome drives directly. It is the fastest loop and the one to start with.

Android needs the full mobile toolchain:

ToolVersionNotes
Android StudiocurrentThe simplest way to get the SDK, platform tools and an emulator. The command-line tools alone also work
Android SDKAPI 36 to compileThe app's minSdk is 24, so it runs on Android 7.0 and later
JDK17 or newerGradle compiles against Java 17. Android Studio bundles one

Do not install these by hand and hope. flutter doctor inspects all of it and tells you exactly what is missing — see below.

iOS is not part of a scaffolded project

The scaffolder runs flutter create --platforms android,web, so there is no Xcode requirement and no macOS requirement. Nothing prevents you adding the iOS platform yourself later; it simply is not set up for you.

To deploy it

A Cloudflare account for the Worker, its D1 database and its Durable Objects. Free to start, and the one thing on this page genuinely not needed until you deploy. You do not install wrangler globally — a scaffolded project depends on it directly, and wrangler login authenticates through your browser on first use.

Check everything at once

Run this from anywhere. Every line should print a version at or above what the tables list:

node -v # v22.x or newer
pnpm -v # or: npm -v
git --version
flutter --version # Flutter 3.44+ · Dart 3.12+

Then let Flutter audit its own half, which covers the Android SDK, the JDK, device connections and Chrome in one pass:

flutter doctor -v

Read the output rather than the summary count. A green Flutter, Android toolchain and Chrome is everything a scaffolded project needs; unrelated categories — Xcode, Linux desktop, Visual Studio — are expected to be missing and do not affect you.

Then the two Firebase CLIs, which are separate installs and the pair that firebase:configure drives:

firebase --version
flutterfire --version

Now build something

Quickstart scaffolds both halves and gets them running locally. Your first game writes Rock–Paper–Scissors end to end, in both languages.

Adding EigenInteractive to an app you already have, or want to lay the project out yourself? Set up without the scaffolder uses the same public packages and skips create-eigen-game entirely — which also means it does not need network access at project-creation time.