Choose a roadmap slice
Start with one bounded problem whose dependencies and finish line are understood.
Explore the roadmapOpen-source historical RTS · MPL-2.0
Build the game with us.
Seven civilizations. Forty-eight campaign chapters. One public codebase. Explore how the game works, vibe code the next improvement, and send a pull request that thousands of future commanders can play.
Built in public
StoneSiege is a real, playable RTS and an open invitation to make something better. Fix a mobile interaction. Rebalance an army. Animate a unit. Write a scenario. Improve accessibility. Bring the idea you cannot stop thinking about.
Use the tools you like—including AI coding agents. Understand what you ship, run the checks, respect asset provenance, and open a focused pull request. Every change starts with a public issue: search existing issues and pull requests, coordinate with anyone already active, and claim or create one focused task before editing. Maintainers and contributors can turn a weekend experiment into part of the game.
You are contributing to StoneSiege, an open-source historical RTS. Do not stop after setup: complete the task and prepare a focused pull request.
CONTRIBUTOR REQUIREMENT
The contributor needs a free GitHub account to coordinate the issue, publish a branch, and open a pull request. Before implementation, confirm that they have an account and are signed in where the issue and pull request will be created. If they do not have an account, limit work to read-only investigation and explain that they must create and sign in to an account before the contribution can begin. Never create an account, request a password, or invent credentials for them.
ISSUE-FIRST COORDINATION — REQUIRED BEFORE IMPLEMENTATION
Every code, campaign, art, audio, balance, test, or documentation contribution must have one GitHub issue before files are changed. The issue is the public coordination record.
1. Search open and closed issues for the same problem or idea:
gh issue list --repo Knorcedger/stonesiege --state all --search "<keywords>"
2. Search open pull requests for overlapping work:
gh pr list --repo Knorcedger/stonesiege --state open --search "<keywords>"
3. If a matching issue exists, inspect its assignees, recent comments, and linked pull requests. If someone is actively working on it, coordinate in that issue and do not start a duplicate implementation. If it is available, comment with your intended scope and ask to be assigned or assign yourself when permitted.
4. If no matching issue exists, create one before editing. Describe the player or contributor problem, the proposed focused scope, acceptance criteria, and important tradeoffs. Do not open a duplicate issue merely to satisfy this rule.
5. Record the issue number. Name the branch for it and make the pull request close or reference it. Investigation needed to write or evaluate the issue is allowed; implementation starts only after the issue exists and the overlap check is complete.
TASK
[Describe the bug, feature, campaign, artwork, animation, balance change, or documentation improvement here.]
WORKFLOW
1. If StoneSiege is not already checked out, run:
git clone https://github.com/Knorcedger/stonesiege.git
cd stonesiege
2. Read AGENTS.md, README.md, CONTRIBUTING.md, CODE_OF_CONDUCT.md, docs/ARCHITECTURE.md, and the documentation relevant to the task. Follow every nested AGENTS.md file that applies to files you touch.
3. Inspect git status before editing. Preserve existing work; never reset, overwrite, or discard changes you did not create.
4. Use Node.js 22.12+ or 24+, then install and run the project:
npm ci
npm run dev
Verify the game at http://localhost:5199.
5. Work on a dedicated branch unless the user already prepared one:
git switch -c contrib/<issue-number>-<short-description>
Never commit directly to main.
6. Implement only the requested change. Keep simulation code deterministic, keep presentation out of packages/sim, avoid unnecessary dependencies, and follow the existing architecture and visual language. New or AI-assisted assets must include provenance and licence information required by CONTRIBUTING.md and ASSET_LICENSE.md.
7. Add or update focused tests. For visible changes, capture before/after screenshots or a short recording.
8. Run the complete quality gate and fix failures caused by the change:
npm run check
9. Review the diff for correctness, secrets, unrelated formatting, accidental generated files, and undocumented asset provenance.
10. Commit with the Developer Certificate of Origin sign-off:
git commit -s -m "<imperative summary>"
11. Publish the branch to a Git remote you can write to and open a pull request against Knorcedger/stonesiege:main. Put “Closes #<issue-number>” in the pull-request description, or “Refs #<issue-number>” when the PR deliberately delivers only part of the accepted issue. Never push directly to main. If GitHub authentication or write access is unavailable, do not invent credentials—leave the branch ready and give the owner the exact commands needed to publish it and open the PR.
12. The pull-request description must cover the problem, solution and tradeoffs, tests performed, visual evidence when relevant, material AI assistance, and asset provenance or licensing considerations.
Return a concise summary with the changed files, verification results, commit, and pull-request URL (or the exact remaining publication commands).Start with one bounded problem whose dependencies and finish line are understood.
Explore the roadmapCheck issues, assignees, comments, and active PRs. Coordinate instead of duplicating work.
Search issuesUse a dedicated issue branch, move quickly, then understand and verify every change.
Read the standardsReference or close the issue, explain the tradeoffs, show evidence, and invite review.
Review active PRsGame code is available under MPL-2.0. Artwork and trademarks follow the separate asset, provenance, and trademark terms in the repository.
The work ahead is public
The roadmap breaks major ambitions into prerequisites, work packages, starter slices, and exit signals. It is detailed enough to coordinate contribution—not a promise that every idea should be built at once.
Huge-map benchmarks, deeper rivers and cliffs, bridges, coasts, multi-tile gates, and map validation.
Provinces, capture rules, authoring tools, long-game saves, empire AI, and the first occupied-realm adventure.
Coast-aware maps, docks and ports, fishing, transports, warships, naval controls, and naval AI.
History is the source material
Follow leaders across nearly four centuries of conflict. Every campaign is playable today, and every scenario is code contributors can inspect, extend, rebalance, fact-check, or transform into a better adventure.

Scots · 12 chapters · 1297–1305

English · 6 chapters · 1415–1422

Vikings · 6 chapters · 1030–1066

French · 6 chapters · 1429–1431

Mongols · 6 chapters · c. 1171–1221

Byzantines · 6 chapters · 1081–1116

Saracens · 6 chapters · 1169–1192
Seven armies · Seven visual identities
The Scots, English, Vikings, French, Mongols, Byzantines, and Saracens each field their own Castle unit, bonuses, names, and technologies. These researched interpretations now extend into dedicated in-game directional rigs and movement cycles. Their source sheets and deterministic atlas pipeline are open for contributors to refine, animate, and build on.
Contribute art or animation
Scots
Late medieval infantry
A swift sword-and-targe fighter inspired by the warriors of the western Highlands.
Historical reference
English
Fifteenth-century archer
A trained foot archer built around the full-height English war bow and sustained range.
Historical reference
Vikings
Eleventh-century retainer
A mail-clad household warrior whose Dane axe and discipline punish exposed archers.
Historical reference
French
Fifteenth-century heavy cavalry
A plate-armoured mounted knight designed to break formations with a decisive lance charge.
Historical reference
Mongols
Thirteenth-century mounted archer
An elite guard rider combining a compact steppe horse, composite bow, and lamellar armour.
Historical reference
Byzantines
Middle Byzantine heavy cavalry
An imperial lancer protected by mail and lamellar, with layered barding for the horse.
Historical reference
Saracens
Thirteenth-century elite cavalry
A professional cavalry soldier trained across horsemanship, mounted archery, lance, and sword.
Historical reference
The current build
Direct units, build an economy, fortify settlements, cross rivers, hold gates, command formations, and fight adaptive AI. These are actual in-game captures—not a promise of a game that may exist later.
Ways to leave your mark
Balance civilizations, deepen AI, extend pathfinding, tune combat, or author a new mechanic.
Research history, write scenarios, build maps, improve dialogue, and make each campaign memorable.
Refine sprites and motion, polish mobile controls, improve accessibility, sound, performance, and tools.
Contributor intelligence
Yes. The complete game source is public on GitHub under the Mozilla Public License 2.0. You can run it locally, inspect every system, report issues, and contribute pull requests. Original artwork follows the separate asset and provenance rules documented in the repository.
Absolutely. Use the tools that help you move—an IDE, a visual editor, or an AI coding agent. Every change starts with a GitHub issue: search issues and active pull requests first, claim or create one focused task, then understand, test, and document what you submit.
StoneSiege includes seven historically distinct civilizations, 48 campaign chapters, skirmish battles, economy and age progression, formations, siege, rivers, cliffs, gates, mobile controls, and adaptive AI. The roadmap remains open to contributors.
Explore the public roadmap, then search issues and pull requests for a focused slice. If it is unclaimed, coordinate in the issue before editing; if no issue exists, create one with a clear problem and acceptance criteria. Code, tests, accessibility, mobile UX, balance, animation, historical research, scenarios, documentation, sound, and responsibly sourced artwork are all useful contributions.
Yes. The web build is public and runs in a browser, and StoneSiege is available on the App Store and Google Play.

The repository is open
Start with the source, the contributor guide, or the game itself. However you enter StoneSiege, there is room to make it yours—and make it better for everyone.