StoneSiegePlay on web

Open-source historical RTS · MPL-2.0

StoneSiege

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.

TypeScript · Web · Android · iOSPull requests welcome

Built in public

Vibe code the
next chapter.

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.

Prompt for your AI coding agentSearch, claim, or create a GitHub issue before the agent changes files.
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).
7Playable civilizations
48Campaign chapters
MPLOpen-source game code
01

Choose a roadmap slice

Start with one bounded problem whose dependencies and finish line are understood.

Explore the roadmap
02

Search and claim

Check issues, assignees, comments, and active PRs. Coordinate instead of duplicating work.

Search issues
03

Build one issue

Use a dedicated issue branch, move quickly, then understand and verify every change.

Read the standards
04

Open a linked PR

Reference or close the issue, explain the tradeoffs, show evidence, and invite review.

Review active PRs

Game 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

Pick a frontier.
Open one issue.

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.

Phase 01

World and scale

Huge-map benchmarks, deeper rivers and cliffs, bridges, coasts, multi-tile gates, and map validation.

Phases 02–04

Grand Conquests

Provinces, capture rules, authoring tools, long-game saves, empire AI, and the first occupied-realm adventure.

Phase 05

Water and naval play

Coast-aware maps, docks and ports, fishing, transports, warships, naval controls, and naval AI.

History is the source material

Seven campaigns.
Forty-eight chapters.

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.

William Wallace riding through a snow-covered Scottish settlement

Scots · 12 chapters · 1297–1305

William Wallace

The Rising of Scotland
Henry V before an English army under a grey sky

English · 6 chapters · 1415–1422

Henry V

Crown Across the Sea
Harald Hardrada standing before a Viking shield wall

Vikings · 6 chapters · 1030–1066

Harald Hardrada

The Last Viking
Joan of Arc holding a French banner above a medieval city

French · 6 chapters · 1429–1431

Joan of Arc

The Maid of Orléans
Chinggis Khan mounted before a Mongol steppe army

Mongols · 6 chapters · c. 1171–1221

Chinggis Khan

The Felt-Walled Nation
Alexios Komnenos overlooking Constantinople

Byzantines · 6 chapters · 1081–1116

Alexios Komnenos

Empire Reforged
Saladin mounted above Jerusalem at sunset

Saracens · 6 chapters · 1169–1192

Saladin

The Unifier
Read and improve the campaign source

Seven armies · Seven visual identities

Armies worth
extending.

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 Highland Raider in mail with a sword and round leather targe

Scots

Highland Raider

Late medieval infantry

A swift sword-and-targe fighter inspired by the warriors of the western Highlands.

Historical reference
English Longbowman in a quilted jack holding a full-height yew war bow

English

Longbowman

Fifteenth-century archer

A trained foot archer built around the full-height English war bow and sustained range.

Historical reference
Viking Housecarl in riveted mail holding a two-handed Dane axe

Vikings

Housecarl

Eleventh-century retainer

A mail-clad household warrior whose Dane axe and discipline punish exposed archers.

Historical reference
French Chevalier in plate armour mounted on a protected warhorse with a lance

French

Chevalier

Fifteenth-century heavy cavalry

A plate-armoured mounted knight designed to break formations with a decisive lance charge.

Historical reference
Mongol Kheshig Horse Archer drawing a composite bow from a compact steppe horse

Mongols

Kheshig Horse Archer

Thirteenth-century mounted archer

An elite guard rider combining a compact steppe horse, composite bow, and lamellar armour.

Historical reference
Byzantine Cataphract in mail and lamellar mounted on a barded horse with a long lance

Byzantines

Cataphract

Middle Byzantine heavy cavalry

An imperial lancer protected by mail and lamellar, with layered barding for the horse.

Historical reference
Mamluk cavalryman in mail drawing a composite bow from horseback

Saracens

Mamluk

Thirteenth-century elite cavalry

A professional cavalry soldier trained across horsemanship, mounted archery, lance, and sword.

Historical reference
StoneSiege overview of a fully developed Imperial Scottish citadel with working farms, houses, castles, continuous walls, and a large army
Actual in-game capture · 01/04The Imperial citadel

The current build

A true RTS.
In your hands.

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

Every system can
be made better.

01

Game and simulation

Balance civilizations, deepen AI, extend pathfinding, tune combat, or author a new mechanic.

02

World and story

Research history, write scenarios, build maps, improve dialogue, and make each campaign memorable.

03

Art and experience

Refine sprites and motion, polish mobile controls, improve accessibility, sound, performance, and tools.

Contributor intelligence

Before you open the editor.

Is StoneSiege really open source?

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.

Can I contribute with AI or by vibe coding?

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.

What is already in the game?

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.

Where is the best place to start?

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.

Can I play before contributing?

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

Bring one idea.
Leave a pull request.

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.