# Arena: decisions beyond painting the map

> Current status reviewed September 29, 2026. See [the release index](README.md) for shipped versus planned features, network, wallet signing and deployment boundaries. Older dated experiments below are retained as history.

**October 1 update:** new practice matches use **Control v4**. Cores now score time held, every objective is equidistant from both bases, isolated pockets cannot act and repairing costs 3 energy with a four-second delay after each hit. Separate onchain v4 contracts passed local EVM and two-wallet browser tests; deployed league v2 remains unchanged. See [current rules and migration](orb-arena.md).

The v3 prototype and design rationale below are a historical record. Roles, coordinated bonuses and pings remain proposals. Legacy practice saves retain their own version.

## Playable practice prototype

- Orthogonally connected territory scores one point per sector. The connection must
  reach the team's original base (A1 or L8); bases cannot be attacked.
- Cutting a bridge isolates the pocket. Ownership remains; a dashed border and
  desaturated portrait identify it. Reconnecting immediately restores its territory
  points. Islands may still attack/expand/reinforce to rescue themselves.
- A core also needs a path to its base at the award boundary. The first five awards
  are 8 points; the final core at G6 is worth 16. Its location and value are visible
  throughout the round. Earned bonuses are never revoked or awarded retroactively.
- Server rules settle elapsed awards before a move changes the map. A retry is
  actor-bound and idempotent; the existing version check serializes concurrent moves.
- No extra polling, background scoring timer or transaction is introduced. Supply
  is a bounded flood fill over 96 cells; the onchain version still needs separate
  gas benchmarking and multiplayer balance tests before adopting it.

Validated with deterministic rule tests (cuts, rescue, award-boundary moves, final
award, protected bases, deadlines, team limits and legacy compatibility), local API
tests, and a browser fixture using the real practice component and rules in EN/PT.

The recorded local bot match finished 96–6. This is one scripted match, not player
research, but it illustrates a risk: an early territorial lead gives the winning
team more adjacent targets, and isolated tiles remain productive forever. More
clicks and an ever-larger map would amplify that problem.

## Design rationale and next experiments

**Supply lines.** Territory must connect to the team's starting base to produce
territorial points. Cutting a narrow bridge isolates a pocket: the portrait stays,
but its border becomes dashed and it stops scoring until reconnected. An isolated
pocket is not automatically handed to the attacker. This introduces flanking,
rescue and defensive choices without stealing wallet assets or changing ownership
outside the match. Scores can be recomputed for a bounded 96-cell board; benchmark
the contract cost before choosing implementation. Never assume a full-board scan
every transaction is cheap merely because the chain has high throughput.

**Coordinated attacks.** A reinforced sector becomes a short team objective:
one player pressures it, another lands the capture while a teammate maintains the
supply route. Start by making existing shields and pressure legible; only add a
combo bonus after multi-player testing. A solo player must retain a slower path
to the same objective. No advantage from paid boosts or sending duplicate moves.

**A meaningful finish.** Announce the last core early and increase its final award
relative to territory. This creates an obvious place to contest near the end,
without randomly choosing a winner or secretly buffing the losing team. Tune the
value against typical score gaps: the final objective should matter, but should
not erase the first two minutes of play.

## Later options, if the core loop is fun

- **Roles chosen before the round:** scout (recon/route markers), defender
  (temporary shielding), disruptor (temporary supply interruption). One distinct
  cooldown per role, the same total power budget, and clear counterplay. Prototype
  this separately from supply lines to avoid changing everything at once.
- **Team pings:** mark “attack here”, “protect bridge” or “next core”. These are
  ephemeral communication, not transactions, and complement voice chat.
- **Short rematch loop:** winning community portrait, MVP by useful contributions
  rather than clicks, then a one-button rematch with fresh consent where required.
  Trophies express achievement; they never strengthen a player in the next game.

## Visual change implemented now

Owned sectors display a square community portrait in place of the diamond.
The background is neutral; a subtle team-colored border, coordinates, shield marks
and a gold objective outline preserve readability. Scoreboards use the same
portrait. Missing/inaccessible images use initials. Each available community image
is fetched once per mounted board and reused across cells via an object URL.
Changing the icon refreshes it; unmount aborts requests and revokes object URLs.

Images remain permission-checked offchain branding. Public chain rounds only
provide community IDs and names, not permission to view a private community image.
The current UI resolves pictures from communities visible to the signed-in user;
an inaccessible opponent uses initials. Open test rounds have arbitrary team names
and no community binding, so their square marks are initials. Do not infer identity
from a matching name or loosen the avatar API's access controls.

## Validation before a rules release

Prototype rules in practice first. Test 1v1 and coordinated teams, deliberately
fall behind early, try cutting/reconnecting a bridge, and confirm both sides can
explain why they won or lost. Measure comeback opportunities, useful team actions,
uncontested clicking and rematch interest. Use the results to decide the smallest
onchain v3 change. A contract update requires a new version and explicit treatment
of existing rounds and sponsored pools; do not replace deployed bytecode in place.

Fast, independent confirmed actions across many matches are the legitimate reason
to use Monad. Extra clicks, chat messages onchain and synthetic TPS are not gameplay.
