Arena field manual
Rules that change how you play.
Rock-Paper-Code is a deterministic RPS arena with a wallet, auctions, scheduled perks, and stage resets. The match is still won one move at a time, but the contest is often decided by when you spend and when you wait.
Live constants
Launch profile
Rounds
2000
Mid auction
600
Max declare gap
150
Win clamp
+1.20
01 / Match protocol
The engine resolves every round before the economy gets fancy.
Base scoring
Draw-neutral streaks
Invalid move forfeit
rock, paper, or scissors forfeits that round. If both sides return invalid moves, the round is a draw.02 / Wallet economy
Capital management is part of the game.
120 cr
Contestant wallet at season entry.
0 cr
The engine can read S from config, but launch seasons use no stipend.
2% over 2000
Fee applies only to the excess after post-match settlement.
50 -> 150
Once per stage when the contestant wallet falls below 50 cr.
Win rounds, but protect optionality.
The launch economy rewards clean match edges, good timing, and auction discipline. Your first hard choice is whether a visible perk is worth tying up capital before you know the opponent's shape.
03 / Auction market
The shop is closed. The market is an auction board.
How acquisition works
No ctx.buy()Perks are acquired with ctx.bid(stock_id, amount). The public SDK and sandbox no longer support a live posted-price shop.
Launch supply uses k_units = 1 for each listed perk, which means a win denies the opponent that same stock. The engine itself remains supply-configurable.
Pre stocks can receive context bids during round 0 and clear at round 1. Mid stocks open and clear around the configured trigger round, which is 600 in the launch profile.
Create timing pressure with a measured premium.
Best when your strategy adapts during the match. You can contest the mid auction, then activate from the next round onward once ownership is confirmed.
Auction pressure
A quick bankroll read for the current board.
Bid with a planned activation window and enough remaining wallet to survive variance.
04 / Perk reference
Know which powers are live, optional, or retired.
| Launch perk | Category | Auction | Reserve | Effect |
|---|---|---|---|---|
| PowerPlay_120 | multiplier | Pre, sealed Vickrey | 12 cr | Winning rounds inside the active window pay x1.20, then respect the +1.20 clamp. |
| LossCap | loss_protection | Pre, sealed Vickrey | 12 cr | Losing rounds inside the active window are floored at -0.80 cr. |
| MomentumBoost | situational | Mid, uniform price | 15 cr | On a win streak >= 2, a win receives x1.80 before the +1.20 clamp. |
PowerPlay_110
Config-dependentSupported by catalog-era data, but not in the launch admin default supply.
WindowWager
Config-dependentWindow math is implemented; availability depends on season supply.
WindowHedge
Config-dependentSettles on the exclusive window boundary: [t_start, t_end) pays at t == t_end.
Perk planner
Multiplier pressure
PowerPlay_120
Chase when
Your strategy can turn prediction edges into frequent wins.
Avoid when
Your win rate is noisy or your opponent is likely to counter-adapt quickly.
Activation timing
Schedule for a future stretch where your model expects a stable edge.
Bid note
Reserve 12 cr. The sample SDK often starts at reserve + 3 cr.
Overlay order and stacking
01
Base delta
02
Draw effects
03
Situational
04
Multipliers + clamp
05
LossCap
Launch profile caps are one multiplier, one situational perk, one information perk, and max_dg of one. Activation must start at least one future round after declaration:t_start >= current_round + 1.
05 / Settlement math
The wallet ledger is formula-first and auditable.
Performance bonus
alpha * clipped(net_yield / rounds)
Launch alpha is 250, so one net standard win across 2000 rounds is worth 0.125 cr. Alpha remains profile-driven.
Luxury fee
max(0, wallet - 2000) * 0.02
Charged after match credits are applied. Wallets below 2000 cr pay no luxury fee.
Window settlement
[t_start, t_end) settles when t == t_end
The active rounds exclude t_end. Settlement occurs on the first round index after the window closes.
Upset bonus
Planned wallet credit
TrueSkill updates are active for ranked standings, but upset wallet credits are not currently paid in settlement.
06 / Season lifecycle
Stages give the economy a pulse.
Season entry
A contestant wallet starts at C0, which is 120 cr in the launch config.
Match kickoff
Auction stocks are created from season supply. Pre stocks can collect round-0 context bids and clear at round 1.
Mid match
Uniform-price stocks open around the configured trigger round, 600 by launch default.
Settlement
Round logs, performance bonus, luxury fee, recovery checks, and rating updates are recorded after the match.
Stage boundary
Wallets below the reset floor are softened upward, and bankruptcy recovery availability resets for contestant wallets.
07 / SDK and upload
A valid strategy is small, deterministic, and context-aware only when needed.
Static scan
Smoke test
Context test
Live match
Economy-aware skeleton
from decimal import Decimal
from rpsa_sdk.strategy import Strategy
class AuctionAware(Strategy):
uses_context = True
def __init__(self):
self._ctx = None
self._bid_placed = False
self._round = 0
def set_context(self, ctx):
self._ctx = ctx
def next_move(self):
if self._ctx and not self._bid_placed:
state = self._ctx.market_state()
for stock in state.get("active_auctions", []):
reserve = Decimal(str(stock.get("reserve_price", "0")))
bid = reserve + Decimal("3.00")
if self._ctx.credits() >= bid:
self._ctx.bid(stock["stock_id"], bid)
self._bid_placed = True
break
self._round += 1
return "rock"08 / Compliance
The sandbox rewards simple, inspectable code.
No hidden side effects
Latency matters
Two leaderboards
Exact activation and window boundaries
Activation declarations are not same-round effects. If your strategy declares at roundt, the earliest legal start is t + 1.
Duration windows are exclusive at the end. A perk active from 10 to20 applies on rounds 10 through 19, then closes at round 20.