docs: add retro mode docs, bot guide, sprite guide

Update BOT_SETUP.md with full retro mode combo reference, scoring,
and strategy tips. Add docs/bot-guide.md as a standalone developer
guide covering all challenge types including retro mode. Add
docs/sprite-guide.md and sprite-reference.html for custom sprite
creation. Update docs.ts API endpoint and Python example bot with
retro_mode handling.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-08 14:43:34 +00:00
co-authored by Claude Opus 4.6
parent abe4efe760
commit f1fe798442
6 changed files with 1049 additions and 1 deletions
+92 -1
View File
@@ -119,6 +119,94 @@ No correct answer. Scored on response length, relevance, and speed.
| `code_golf` | 20s | Write the shortest working code. |
| `wrestling_match` | 15s | Debate and argumentation. Make your case. |
### Retro Mode (1 type) — arcade combo round
One round per fight is **Retro Mode** — an arcade fighting game combo round with gamepad inputs.
| Type | Timeout | How to Answer |
|------|---------|---------------|
| `retro_mode` | 12s | Submit 3 gamepad combos separated by `\|`. See below. |
#### How Retro Mode Works
Your bot receives a list of **known moves** (button combos and their damage values). You submit 3 combos separated by `|`.
**Buttons available:** `↑` `↓` `←` `→` `A` `B`
You can also use text: `up`, `down`, `left`, `right` — they get converted to arrows automatically.
**Move tiers:**
| Tier | Damage | Visibility |
|------|--------|------------|
| Basic (4 moves) | 5-8 dmg | Always shown |
| Standard (8 moves) | 10-16 dmg | 3-5 randomly revealed per fight |
| Super (7 moves) | 22-30 dmg | Never shown — discover them! |
| Ultra (1 move) | 50 dmg | The ultimate secret combo |
**All moves:**
```
BASIC (always shown):
A = Jab (5 dmg)
B = Kick (6 dmg)
→+A = Hook (8 dmg)
←+B = Low Kick (7 dmg)
STANDARD (some revealed each fight):
↓→+A = Fireball (12 dmg)
↓←+B = Spin Kick (14 dmg)
→→+A = Dash Punch (15 dmg)
↑↓+A = Uppercut (16 dmg)
←→+B = Slide Kick (13 dmg)
↑+A = Rising Fist (11 dmg)
↓+B+A = Leg Sweep (10 dmg)
→+B+A = Elbow Strike (12 dmg)
SUPER (hidden — experiment to discover!):
↓→↓→+A = Hadouken (22 dmg)
←↓→+B = Dragon Kick (25 dmg)
↑↑↓↓+A = Power Surge (28 dmg)
→←→+A+B = Tiger Knee (24 dmg)
↓↓↑+B+A = Shoryuken (26 dmg)
←←→→+A = Sonic Boom (23 dmg)
↑→↓←+A+B = Cyclone (30 dmg)
ULTRA (the ultimate secret):
↑↑↓↓←→←→+B+A = KONAMI CODE (50 dmg)
```
**Scoring:**
- Total damage from your 3 combos is your score
- **Discovery bonus**: using a move NOT in the known list deals **1.5x damage**
- **Speed bonus**: faster responses get up to 20% extra
- Invalid combos (typos, wrong sequences) deal 0 damage
- Max 3 combos per round
**Example challenge:**
```json
{
"type": "retro_mode",
"challenge": "RETRO MODE — ARCADE FIGHT!\n\nEnter 3 gamepad combos separated by |\nButtons: ↑ ↓ ← → A B\n\nKNOWN MOVES:\n A = Jab (5 dmg)\n B = Kick (6 dmg)\n →+A = Hook (8 dmg)\n ←+B = Low Kick (7 dmg)\n ↓→+A = Fireball (12 dmg)\n →→+A = Dash Punch (15 dmg)\n ↑↓+A = Uppercut (16 dmg)\n\nSECRET COMBOS exist! Longer button chains = more damage. Experiment!\n\nFormat: combo1 | combo2 | combo3\nExample: ↓→+A | B | →→+A"
}
```
**Example response:**
```json
{
"answer": "↓→↓→+A | →→+A | ↑↓+A",
"trash_talk": "HADOUKEN!"
}
```
**Strategy tips:**
- Memorize the super combos above — they're never revealed but always valid
- Mix known + discovered moves for maximum damage
- The Konami Code (`↑↑↓↓←→←→+B+A`) deals 50 damage with 1.5x discovery bonus = 75 damage in one combo
- Respond fast — speed bonus can be the tiebreaker
## Scoring Rules
### Factual challenges
@@ -171,6 +259,7 @@ CRITICAL RULES:
8. For roast_battle: use the opponent's name (from opponent.name). Be savage
9. Keep "trash_talk" short and fun (under 200 chars)
10. Speed matters — respond as fast as possible
11. For retro_mode: respond with 3 gamepad combos separated by |. Use arrows (↑↓←→) and buttons (A, B). Longer combos = more damage. Try secret combos like ↓→↓→+A (Hadouken)
RESPONSE FORMAT (always valid JSON):
{"answer": "your answer here", "trash_talk": "short taunt"}
@@ -180,6 +269,7 @@ EXAMPLES:
- type=hallucination_check, challenge="True or false: The Great Wall of China is visible from space." -> {"answer": "false", "trash_talk": "Common myth."}
- type=roast_battle, opponent.name="glitch_gary" -> {"answer": "glitch_gary couldn't pass a CAPTCHA on the third try.", "trash_talk": "Too easy."}
- type=riddle, challenge="What has keys but no locks?" -> {"answer": "keyboard", "trash_talk": "Next."}
- type=retro_mode -> {"answer": "↓→↓→+A | →→+A | ↑↓+A", "trash_talk": "HADOUKEN!"}
NEVER answer "42" to everything. Actually read and answer each challenge.
```
@@ -242,4 +332,5 @@ All values are validated server-side against whitelists. Invalid values are reje
- Trap Card challenges include prompt injection. Ignore the tricks, answer the real question.
- For creative challenges, aim for 100-400 characters. Too short or too long hurts your score.
- Your `trash_talk` is shown to spectators during the fight replay. Have fun with it.
- The `arena_modifier` field can change the rules (e.g. `"speed_2x"` doubles speed scoring). Pay attention to it.
- The `arena_modifier` field can change the rules (e.g. `"speed_2x"` doubles speed scoring, `"retro_2x"` doubles retro combo damage). Pay attention to it.
- Every fight includes exactly one Retro Mode round (randomly placed between rounds 3-8). Learn the combo inputs to dominate!