OpenDeadlock is a fan project inspired by the classic turn-based strategy game Deadlock: Planetary Conquest. The goal is to rebuild the original experience in a modern, cross-platform form while leaving room for multiplayer, better AI opponents, mobile play, and refreshed artwork.
The app is built with Flutter so the same codebase can target web, desktop, and mobile.
These commands bring up the playable prototype from PR #2 at a predictable local URL. They are written for a fresh checkout of Nick's upstream repository.
Review snapshot:
- Pull request: #2
- Review branch:
hashkanna:kanna/playable-prototype - Local review URL:
http://127.0.0.1:8080/
Copy/paste review path:
git clone https://github.com/UberNick/opendeadlock.git
cd opendeadlock
gh pr checkout 2
flutter pub get
flutter run -d chrome --web-hostname 127.0.0.1 --web-port 8080Then open http://127.0.0.1:8080/. You should see the OpenDeadlock main menu
with Continue, Quick Start, New Game, Load Game, and
Developer Menu actions. Keep the Flutter terminal process running while the
browser is open.
Already have a local clone? Start from the repository folder instead:
gh pr checkout 2
flutter pub get
flutter run -d chrome --web-hostname 127.0.0.1 --web-port 8080The longer sections below include requirements, a no-GitHub-CLI checkout path, static serving, and troubleshooting notes.
- Flutter SDK: https://docs.flutter.dev/get-started/install
- CI currently validates with Flutter
3.44.4on the stable channel.
- CI currently validates with Flutter
- Chrome, for the local web runner
- Git
- GitHub CLI, optional but convenient for checking out pull requests: https://cli.github.com/
Check the Flutter install with:
flutter doctorIf you have GitHub CLI installed, this is the shortest path from a fresh checkout to a browser URL:
git clone https://github.com/UberNick/opendeadlock.git
cd opendeadlock
gh pr checkout 2
flutter pub get
flutter run -d chrome --web-hostname 127.0.0.1 --web-port 8080Then open:
http://127.0.0.1:8080/
Flutter usually opens Chrome automatically, but the URL above is the stable local
address for this review session. Keep the Flutter terminal process running while
reviewing the app; press Ctrl-C in that terminal when you are done.
When the page loads successfully, the first screen should show the OpenDeadlock
main menu. If Chrome opens to a blank page, hard refresh the tab once; if the
terminal process stopped, run the flutter run command again.
If you do not have GitHub CLI, fetch the pull request ref directly:
git clone https://github.com/UberNick/opendeadlock.git
cd opendeadlock
git fetch origin pull/2/head:review-pr-2
git switch review-pr-2
flutter pub get
flutter run -d chrome --web-hostname 127.0.0.1 --web-port 8080Then open http://127.0.0.1:8080/.
You can also fetch the review branch directly from the fork:
git clone https://github.com/UberNick/opendeadlock.git
cd opendeadlock
git fetch https://github.com/hashkanna/opendeadlock.git kanna/playable-prototype
git switch -c review-kanna-playable-prototype FETCH_HEAD
flutter pub get
flutter run -d chrome --web-hostname 127.0.0.1 --web-port 8080Use this path if gh pr checkout 2 is unavailable or GitHub CLI is not logged
in.
If port 8080 is already in use, use another port:
flutter run -d chrome --web-hostname 127.0.0.1 --web-port 8081Then open http://127.0.0.1:8081/.
The first screen should be the OpenDeadlock main menu. For a quick review:
- Click Quick Start to jump straight into the playable map.
- Click New Game to review the setup flow with race, map, opponent, and rules options.
- Click Developer Menu, then Legacy References, to compare the prototype against Nick's legacy screenshots.
Clone the repository and install packages:
git clone https://github.com/UberNick/opendeadlock.git
cd opendeadlock
flutter pub getStart the Flutter web runner:
flutter run -d chromeFlutter will print a local URL in the terminal and open Chrome automatically.
For a future pull request, replace 2 in the commands above with the pull
request number you want to review.
For a predictable local URL without the Flutter debug runner, build the web app and serve the generated files:
flutter build web
python3 -m http.server 8080 -d build/webThen open:
http://127.0.0.1:8080/
Do not open build/web/index.html directly with file://; serve the build/web
folder over http:// with the command above so Flutter web assets load in the
same way they do in a deployed build.
If port 8080 is already busy, use another port:
python3 -m http.server 8081 -d build/webThen open http://127.0.0.1:8081/.
- If Flutter reports no Chrome device, run
flutter config --enable-weband thenflutter devices. - If dependency resolution fails after switching branches, run
flutter clean && flutter pub get. - If the app starts but the browser does not open automatically, open the printed
localhost URL manually. For the commands above, use
http://127.0.0.1:8080/. - If port
8080is busy, use--web-port 8081forflutter runorpython3 -m http.server 8081 -d build/webfor the static build. - If
gh pr checkout 2says a review branch already exists, switch to that branch and pull the latest changes from the PR before runningflutter pub get.
This branch includes a playable Flutter prototype that focuses on the first usable loop:
- New game setup with AI, hotseat, and async multiplayer presets plus race, difficulty, opponent, map, and rules options
- Planet map, colony overview, construction, population, resource, and research controls
- Turn advancement with colony production, AI turns, reports, and news
- Local save, snapshot, replay, and order package flows
- Main menu entry points for continuing, starting, and loading games
- A legacy screenshot reference gallery for matching the original game UI
Reference screenshots from Nick's email are checked in at:
docs/reference/legacy-screenshots/nick-2026-06-27/
Before opening a pull request, run:
flutter test
flutter analyze
flutter build webThe generated build/ directory is ignored by Git and should not be committed.
- Create platform scaffolding
- Build basic interface
- Integrate development tools
- Build map display
- Build world display
- Build colony display
- Create construction UI
- Build game engine and turn behavior
- Incorporate artwork
- Create population rules
- Create resource rules
- Create production rules
- Create movement rules
- Create race rules
- Incorporate sound and music
- Introduce opponents
- Build basic AIs
- Build battle interface
- Create battle and endgame rules
- Create multiplayer interface
- Add multiplayer connectivity
- Build race AIs
- Incorporate video and cutscenes
- Build personality traits
OpenDeadlock Task board:
This page is to manage current work-in-progress and next-up tasks. Completed tasks are archived.
OpenDeadlock Brainstorm board:
This page is for gathering long-term ideas and enhancements.
Gallius IV Home Page:
Gallius IV Discussion Board:
Fan Wiki:
Legacy OpenDeadlock Decoder Project:
Legacy OpenDeadlock Decoder Wiki:
Original game:
- Windows
- MacOS
- Web
- iOS
- Android
Linux desktop can also be made available. If interested, please let us know in the forums
OpenDeadlock is a community project, and contributions are welcome by all. Feel free to submit Pull Requests, update Trello tickets, or post to the Gallius IV forums if you'd like to contribute in other ways.
Contributions are especially welcome in the following areas:
- Research / ideas
- Testing
- Developing
- Artwork
- DevOps
See the Task board and Brainstorm board for details on ongoing work and ideas.