Fantasy War Sim Field Notes

Peasants to Kings war encounter system

A campaign-scale war table built so players could command armies without losing the story.

Fantasy War Sim is a browser-based battle and campaign-pressure tool I built for Peasants to Kings. It supports strategic war turns, army-vs-army resolution, morale and supply pressure, table-readable reports, and enough documentation for another GM to inspect the system instead of guessing what happened.

2public GitHub repos: simulator and GM host.
5public proof screenshots captured from the working app.
2PDF rule resources linked for deeper review.
0tracking dependencies in the local-first browser app.

What This Proves

This was a real GM operations system, not just lore.

The war encounter work shows how I translate campaign chaos into playable procedure: players can act at army scale, zoom into cinematic scenes, and see consequences ripple through the wider war.

The GM problem

Peasants to Kings had moments where the story outgrew ordinary combat. The party was not only fighting enemies. They were influencing forces, morale, allies, enemies, supply, weather, and battlefield leverage.

I needed a way to run war without flattening player agency into a single narration. The simulator gives the table a shared procedure: set the armies, expose the dice math, resolve the battle, then carry the consequences back into the campaign.

  • Strategic layer for armies, factions, turn pressure, and resources.
  • Cinematic layer for player-character scenes that can alter the war.
  • Auditable battle output so players can understand the result.
  • Rules and help pages so the system can be remembered after the session.
Fantasy War Sim War Report modal showing an attacker victory, updated army sizes, and battle resolution data.
Resolved sample battle report: the tool exposes victory, losses, updated sizes, and the comparison method instead of hiding the ruling behind the screen.

Inside The Simulator

A field table for war turns, battle reports, and rules memory.

The interface is intentionally plain-spoken: War Room for the wide view, Battle for engagement resolution, help and rulebook pages for quick table recovery.

Fantasy War Sim War Room tab showing war status, allies, neutrals, enemies, command points, supply, morale, and influence.

War Room

Campaign pressure is tracked at the level where a GM can make the front feel alive: resources, side pressure, turn flow, and active battle effects.

Fantasy War Sim Help Wiki showing quick overview, Battle Guide, army and faction guidance, settings, and rules navigation.

Help Wiki

The help surface turns mechanics into table-use guidance, including quick start, Battle Guide, import/export, settings, and rule navigation.

War Encounter Rules page showing a full rulebook with table of contents and Quick Start section.

Rules As A Runbook

The long-form rules explain the two-layer structure: strategic war turns plus cinematic sequences where player choices can shift the wider battle.

Mobile viewport of Fantasy War Sim showing stacked Battle tab sections and readable controls.

Responsive Enough For Table Use

The simulator remains readable on a narrow screen, which matters when a GM is juggling notes, maps, Discord, and player questions during a live session.

How It Played

Progressive disclosure was the point of the encounter.

Players did not need to become wargame technicians all at once. The table could start with a clear strategic situation, zoom into character-scale scenes, then return to the war with changed leverage.

1. Frame the front.

Set the armies, factions, weather, and campaign resources so the table understands what is at stake before any dice hit the table.

2. Let players intervene.

Use cinematic scenes for sabotage, command, rescue, diplomacy, or heroics that can change the army-scale battle instead of sitting beside it.

3. Resolve and carry forward.

Run the battle, expose the report, then update the campaign state so victory, loss, morale, and pressure affect the next session.

Run Or Inspect It

The public repos make this inspectable instead of decorative.

The fastest path is the browser simulator repo. The GM Host repo is the more advanced desktop-hosting track for local Electron experiments.

Run the browser simulator

Clone the repo, install dependencies if you want the test tooling, then open the HTML directly or serve the folder locally.

git clone https://github.com/JonathanKHobson/fantasy-war-sim.git
cd fantasy-war-sim
python3 -m http.server 4187 --bind 127.0.0.1
# Open http://127.0.0.1:4187/fantasy-war-sim.html

The simulator is local-first and can also be inspected from the repository files. Automated tests use Playwright.

Inspect the GM Host

The GM Host repo is the desktop-facing lane for running/hosting the war table through an Electron app.

git clone https://github.com/JonathanKHobson/fantasy-war-sim-gm-host.git
cd fantasy-war-sim-gm-host
npm install
npm run desktop:start

This is the more technical branch of the project. Use it if you want to inspect the desktop shell and local hosting path.

What AI helped with

AI was used as a development partner for implementation passes, documentation synthesis, architectural handoffs, UI/help-page iteration, and review loops. The point was not to replace GM judgment. The point was to turn a messy live-table system into inspectable artifacts faster.

The public proof is the code, screenshots, rule PDFs, help wiki, and the way the system preserves the GM logic behind the encounter.

Current condition

This is a meaningful older project, now public and portfolio-ready as evidence. It is not being presented as a polished commercial product.

  • Public repos are live.
  • Public screenshots were captured from the working local app on June 12, 2026.
  • One local test run was limited by a missing Playwright browser binary, while screenshot QA succeeded through installed Chrome.
  • The best portfolio use is proof of GM systems design, facilitation, and AI-assisted tool building.

Source Links

Code, PDFs, and proof artifacts.

These links are meant for a reviewer who wants to go deeper after the first scan.

ResourceWhy it mattersLink
Fantasy War Sim repoMain browser app, help wiki, rulebook HTML, tests, and public screenshots.github.com/JonathanKHobson/fantasy-war-sim
Fantasy War Sim GM Host repoDesktop/Electron host lane for local GM hosting experiments.github.com/JonathanKHobson/fantasy-war-sim-gm-host
War Encounter Rules PDFLong-form rules for strategic war plus cinematic sequences.Open rules PDF
Types of Encounters & Scenes PDFBroader GM scene taxonomy that supports the war-encounter philosophy.Open scene-types PDF
Screenshot derivativesPublic web images captured from the running simulator for portfolio use.Open screenshot folder

Portfolio integration note

Add this as a deeper proof link from the Peasants to Kings page. It should support, not replace, the main case: "War Encounter / Fantasy War Sim: how I designed and ran campaign-scale conflict."

Review source