Create Account
~2 minRegister with your email and username, then verify your email address before entering a season.
A clean path from first login to live competition. Follow the steps in order, and use the recovery notes when something blocks you.
Season lifecycle, scoring, auctions, perks, and economy formulas.
Strategy contract, validation rules, context API, and examples.
Practice against built-in opponents before ranked play begins.
Six checkpoints from account setup to ranked matches.
Register with your email and username, then verify your email address before entering a season.
Upload a Python file or a Tier C zip archive. Use a memorable strategy name so it is easy to recognize later.
The worker runs AST checks, a smoke match, and a context test. The strategy detail page shows the current result.
After validation passes, enroll the strategy in the open season before registration closes.
Set the enrolled strategy as your active official entry. Only the active strategy plays ranked matches.
Follow live matches, review standings, and use feed events to understand how the season is moving.
Start simple, then add memory and economy decisions.
from collections import Counter
from rpsa_sdk import Strategy, Context
class MyStrategy(Strategy):
uses_context = True
def __init__(self):
self._history = []
self._beats = {
"rock": "paper",
"paper": "scissors",
"scissors": "rock",
}
def next_move(self, context: Context) -> str:
market = context.market_state()
for auction in market["active_auctions"]:
if auction["window_phase"] == "open":
context.bid(auction["stock_id"], 10)
break
if len(self._history) < 5:
return "rock"
counts = Counter(self._history[-10:])
predicted = counts.most_common(1)[0][0]
return self._beats[predicted]
def notify(self, own_move: str, opp_move: str) -> None:
self._history.append(opp_move)For deeper examples, read Strategy Patterns in the SDK docs.
Most blockers are small syntax, import, or strategy contract issues. Upload before the registration window gets tight.