Skip to content

Repository files navigation

OpenDeadlock

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.

Quick Start for Nick's Local Review

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 8080

Then 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 8080

The longer sections below include requirements, a no-GitHub-CLI checkout path, static serving, and troubleshooting notes.

Requirements

Check the Flutter install with:

flutter doctor

1. Check Out PR #2

If 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 8080

Then 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 8080

Then 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 8080

Use 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 8081

Then open http://127.0.0.1:8081/.

2. What to Click First

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.

3. Run the Default Branch Locally

Clone the repository and install packages:

git clone https://github.com/UberNick/opendeadlock.git
cd opendeadlock
flutter pub get

Start the Flutter web runner:

flutter run -d chrome

Flutter 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.

4. Run a Static Local Web Build

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/web

Then 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/web

Then open http://127.0.0.1:8081/.

Local Troubleshooting

  • If Flutter reports no Chrome device, run flutter config --enable-web and then flutter 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 8080 is busy, use --web-port 8081 for flutter run or python3 -m http.server 8081 -d build/web for the static build.
  • If gh pr checkout 2 says a review branch already exists, switch to that branch and pull the latest changes from the PR before running flutter pub get.

Current Prototype

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/

Validation

Before opening a pull request, run:

flutter test
flutter analyze
flutter build web

The generated build/ directory is ignored by Git and should not be committed.

Project Roadmap

  • 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

Links and Resources

This project

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.

Fan and Community resources

Gallius IV Home Page:

Gallius IV Discussion Board:

Fan Wiki:

Legacy Project

Legacy OpenDeadlock Decoder Project:

Legacy OpenDeadlock Decoder Wiki:

Original Game

Original game:

Supported Platforms

  • Windows
  • MacOS
  • Web
  • iOS
  • Android

Linux desktop can also be made available. If interested, please let us know in the forums

Contributing

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.

About

OpenDeadlock is a fan project inspired by the classic turn-based strategy game

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages