Research is chosen in the Faction Research window, where each
faction ranks the technologies its leaders put forward and the
winner receives that cycle’s Research Points.
Field Effect
⚔ Contested Territory
— Territory Dormant —
⚔ Active Event
⚑ Scenario
⬡ Territory Locked
Player's Guide
How to use the Campaign Map
Getting Started
Guided TourNew here? Take the guided tour of the campaign — the map, your faction, reporting a battle and where you vote.
WalkthroughsThe first time you open Battle Setup or the Battle Report form, a short highlighted walkthrough explains each control. Replay either below, or reset all one-time tips to see them again.
Navigating the Map
Scroll WheelZoom in and out on the map.
Click & DragPan around the map while zoomed in.
Double-ClickReset the map to full zoom-out view.
+ / − ButtonsZoom in or out using the controls at the right side of the map. The ⟳ button appears when zoomed in and resets the view.
Hex Details
Click a HexOpens a detail panel for that territory. Shows its name, terrain type, primary and secondary resources, any active event and its scenario, and any building present.
Faction ColourHexes outlined in a faction colour are owned territory. A dashed amber border means the hex is currently contested.
Event RingAn animated ring around a hex means an active event is taking place there. At full zoom-out, event and faction icons appear over each territory instead.
Factions
Faction PanelThe three faction cards on the right side of the map. Click any card to open that faction's detail modal.
Faction ModalShows the faction's lore, campaign goals, current resources and buildings. Split into three tabs: Details, Building, and Research. Voting is no longer here — the action ballot is in The Council and the research ballot in Faction Research, both reached from the navigation bar.
ResourcesEach faction tracks five resources: Metals, Organics, Food, Energy, and Population. They are earned from the faction's buildings and territory each cycle, and spent by its council on new buildings, hex claims and research.
Voting
Ballot WeightBoth ballots are ranked choice, so you do not spend votes — you carry a weight. It is the votes you earned this cycle from approved battle reports (a Win earns 3, a Draw 2, a Loss 1), with a minimum of 1, and it applies in full to each ballot. It resets every cycle, so nobody accrues permanent influence and everyone who shows up counts.
Action BallotIn The Council, on the navigation bar. Each of the faction's leaders proposes one concrete action — a named building on a named hex. Rank them; the top three are elected in order and that order is the order they are carried out in.
Research BallotIn Faction Research, on the navigation bar. Rank the technologies the council has put forward; the winner becomes the faction's funding target.
Planning a Battle
Battle SetupIn the navigation bar. Rolls a complete tabletop battlefield for a game — board size, deployment zones, terrain and objectives — tuned to the hex you are fighting over. No login needed. You can also open it from a contested hex with ⚔ Set Up Battle.
My TerrainIn the navigation bar. Build a collection of the terrain pieces you actually own, and Battle Setup can generate boards from your real kit instead of random shapes. Requires login; your collection syncs across devices.
Share a BoardThe Share button on a generated setup makes a short link that reproduces the exact same board for your opponent.
Challenge LinkThe 🔗 Challenge Link button in a hex's detail panel makes a short link that drops an opponent on that hex, ready to agree a fight and file their report.
Battle Reports
Who Can FileAny logged-in player — sign in with Discord.
Which HexesOnly active hexes formally marked Contested accept reports.
Filing a ReportClick the contested hex, then File Battle Report in the detail panel. Fill in your Discord username, opponent's Discord username, your faction, the outcome, and any notes. Your Discord field is pre-filled and locked once you are logged in.
ApprovalReports start as pending and must be approved by a GM before votes are counted. Approved reports are visible in your Match History.
My ReportsAccess your last 30 reports from My Reports in the user dropdown (top-right). Reports can be edited within 7 days of submission.
Login & Account
Discord LoginClick Login with Discord in the top-right. Any Discord account can sign in. Your session stays active for 30 days.
Your AvatarOnce logged in, your Discord avatar and username appear in the top-right. Click it to access My Reports or Logout.
Other Features
Feature VoteIn the navigation bar. A ranked-choice poll on upcoming additions to the app itself — rank the options you would most like built next. Separate from the in-game council and research ballots.
Campaign DispatchA gold banner below the header carries official announcements from the GM. Click ✕ to dismiss it for your current session.
Campaign CycleThe timer in the top-left shows the current Cycle number and countdown to the next monthly reroll, when events are reassigned across the map.
SettingsIn the navigation bar. Adjust text size and customise accent, text, background, and panel colours; when logged in, set your Discord name and faction preference here too. Saved in your browser.
Settings
Player
Discord
1st choice
2nd choice
3rd choice
Your 1st choice is the faction a battle report assumes you played.
The rest decide which faction is suggested for your opponent.
Which side are you drawn to? Set your 1st, 2nd and
3rd choice below. You can change this anytime in Settings — it's mainly used
to pre-fill your match reports.
⚔ Battle Setup
Multiplayer — free-for-all or even teams, and the mission everyone is playing
Terrain densityfrom hex20% · Medium
Army-Driven — a layout and a density either side of the no-man's-land
Zone A density20% · Medium
Zone B density20% · Medium
⛰ My Terrain
New Piece
🗳 Feature Vote
🗺️ Map Builder
Roll a battlefield, curate it, and save a static table you can play in the OPR Notebook.
Customize the title and subtitle shown at the top of the map.
Campaign Dispatch
Post a message visible to all players on the map. Posting a new one replaces the current announcement.
Campaign Cycle
The active cycle drives the countdown timer — its end date is the deadline players see.
Lore is published to the NCOPR website alongside the battles fought during the cycle.
Monthly Reroll
Closes all open events and assigns new ones to random active hexes. Closed events are kept as campaign history, not deleted. Also resets the countdown by sliding the active cycle's window forward. This cannot be undone.
Scenario Pool
Add a new scenario to the pool available during event creation and monthly rerolls.
Faction Resources
Edit resource totals directly for a faction. Values shown are current amounts. Resources cannot go below zero.
Apply Building Output
Credit all factions with resources generated by their placed buildings. Run once per campaign cycle.
Feature Vote
Standalone player poll on upcoming app features — global, not per-faction. Create a feature, then add your own options under it; multiple features can be open at once, each resolved independently. Players rank the options (ranked choice, partial rankings allowed) and can change their ranking until that feature resolves. Resolution is instant-runoff: lowest-ranked options are eliminated round by round until one wins a majority.
Queue an Action
Each faction gets a fixed number of actions per cycle
(actions_per_month). Queued actions do nothing until
Advance Cycle runs them — income is credited first, so a
building constructed here does not produce until the following cycle.
An action that has become illegal by then is skipped with a stated reason
and costs nothing.
Action Ledger
Every action attempted, and what became of it. Nothing is deleted here except a
queued action you withdraw — a withdrawn action was never taken, so it
leaves no row.
Loading…
Resolve a Conflict
Every contested hex with battle reports this cycle. Resolution reads
every approved report on the hex in this cycle — an event is not
required, and a hex without one resolves the same way.
Resolve conflicts before Advance Cycle so territory settles first.
The winner is a weighted draw, so a preview is taken once and kept:
reopening shows the same result, and only Discard takes a fresh roll.
Loading…
Resolved This Campaign
Accepted results, newest first. These are public — the same breakdown is
readable by players and by the website.
Loading…
Funding Targets
Each faction funds one technology at a time (D82), and only
that bar advances. RP settles at Advance Cycle, not now.
A completed bar clears its own target; leaving a target blank holds the
faction's RP unallocated. Bars are permanent — switching
defers, it never destroys.
Loading…
Faction Passives
The active passive, once per faction per cycle. The flat and
catch-up passives need no control — they are computed at settlement.
Iron's Forward Reckoning surveys a hex adjacent to its
territory; the other two target a hex the faction controls.
Ruin's reading can fail, leaving that hex a hazard that produces
nothing for one cycle.
Loading…
Propose Faction Actions
Each faction's leader scores every legal action and proposes up to
three. Preview scores without touching anything;
Propose writes the chosen actions into the ledger as
queued, and Advance Cycle executes them exactly as it
executes a GM's own. Re-proposing replaces the leader's previous proposal
for this cycle and leaves actions you queued by hand alone.
Convene the Council
Each active leader is handed its own top-scoring legal, affordable
candidates and returns a proposal in its own voice; the engine decides
what is legal, so the model cannot invent an action
(D17). Research is a separate button because thirty
model calls in one request would time out (D75) — and there the
sponsor and the technology are already fixed in the data,
so the model only writes the argument. Reactions is
pass 2, run separately so a failure in it never discards pass 1.
Where a response cannot be used the leader still proposes, on the
engine's top pick, flagged below and re-rollable on its own (D18).
Nothing here is visible to players until you Publish.
Review & Publish (D22)
A safety valve, not curation — you are not choosing
what the leaders want, only catching a bad generation before players see
it. Re-roll one leader, edit a statement, or strike a proposal.
Publish opens the ballot from what is staged here,
carrying each leader's own words, and posts to Discord.
Two leaders proposing the identical action are merged into one consensus
entry (D26), or ranked choice would split the vote between them.
Open Action Ballots below stays as the no-model
path; it builds from engine scores and carries no statements.
Pick a faction above.
Action Ballot — without the model
Opens one ballot per faction — one proposal per active
leader, with two leaders proposing the identical action merged
into a single consensus entry (D26). Players rank them on the
Council; Advance Cycle elects the top
three in order and queues them, and that order is the order they
are carried out in. Re-running leaves an already-open ballot
alone, because it may already hold votes. Scores stay hidden from
players until the ballot closes (D63); a seat the vote cannot fill falls
back to engine score, and each row says which it was.
Decision Breakdown
What each leader considered, and why every candidate won or lost.
Scores are the ones recorded when the decision was taken, not
recomputed — the board moves, and a recomputed score would disagree
with the action beside it.
Loading…
Balance Report
BLD §15's tracking, aggregated over the rows the campaign has already
written — nothing here is recomputed, so a figure reads the same in a
later cycle as it did when it was taken.
GM only: BLD §14.3 says so in its own words, and per-leader
frequencies plus score breakdowns are exactly what would let a player reverse
the scorer.
Loading…
Balance Constants
The tunable values the campaign engine reads. BLD §1 requires these to be data
rather than literals, so every one is a campaign_settings row.
Blank a field to restore its default. Two keys
(rp_earned_ceiling, rp_fund_research_max) are
deliberately unset — there, blank means “no bound
configured”, which is not the same as 0.
Loading…
Edit Event
The monthly reroll closes every open event. Tick this for an event that isn't tied to the cycle — it will stay open until you close it yourself.