JA Joshua Ates
Projects/NCOPR Campaign Map
SOFTWARE · FULL-STACK WEB APP

NCOPR Campaign Map

A living hex-map campaign tracker for a tabletop wargaming community. Three factions fight over a 537-hex world, and every reported battle actually moves the campaign — shifting territory, feeding a resource economy, and unlocking research.

STACK  PHP 8.3 · MySQL · Vanilla JS · SVG
AUTH  Discord OAuth2 · role-gated GM
The 537-hex world — three faction capitals (gold, silver, green) and a contested center, rendered in SVG with pan/zoom.
537
hexes in the world
3
factions at war
5
resource types tracked
0
frontend frameworks
BATTLE SETUP GENERATOR

Every game, a fresh battlefield

A one-tap tool auto-generates a battlefield, deployment zones, and a full terrain layout for a player's next game — scoring, board size, and terrain type all rolled from live campaign state.

Shareable as a text summary or a rendered PNG "battle card" so players can post their matchup straight to the community.

HOW THE CAMPAIGN LIVES
01
Battle & report

Players log in via Discord, fight over contested territory, and submit battle results for GM approval.

02
Economy shifts

Approved results move territory and feed each faction's economy — metals, organics, food, energy, population.

03
Community votes

Two parallel voting systems — construction and research — share one earned vote pool, funded by battle activity.

Hand-rolled SVG pipeline

A custom rendering pipeline with per-hex clip-paths draws sprite-sheet terrain and building art onto 537 hexes — no mapping library.

One codebase, two entry points

A shared game-logic module is embedded identically across desktop and mobile HTML pages — avoiding a build step while keeping logic in sync.

Economy computed from live state

Resource and voting costs are derived dynamically from current game state rather than stored — so nothing drifts out of sync.

Full GM admin suite

Create/close events, mark hexes contested, place buildings, run the monthly reroll, post announcements, and preview the map as any player or guest.

EXPLORE THE LIVE MAP →
Runs a campaign for Grimdark Future · See also Grimdark Future Tactics →