We are rebooting the classic Reaper Bot from the original source and fixing the community-reported issues first. The goal is a stable, fair, and readable baseline that we can extend in small, testable steps.
All active, working code lives in mre/ only:
https://github.com/saworbit/mre/tree/master/mre
Everything under archive/ is legacy reference material. Do not edit or build
from archive/.
28+ community issues addressed + expanded navigation features - see CHANGELOG.md for details.
- Crashes: SP edict overflow, MP route recursion, scoreboard overflow
- Movement: Jumpy strafing, water flashing, stuck in place, lift/door handling
- Hazards: Lava/slime avoidance, explosive self-damage, LG water discharge
- Fairness: Target selection, vacuum pickup, camping, skill-based aim jitter, observer targeting
- Powerups: Line-of-sight required for pickups (prevents through-wall grabs)
- Physics: Explosion knockback, backpack spawning
- Compatibility: sv_aim warning spam
- Aiming: Predictive lead capping
- High skill levels unlocked (skill 0-10, was 0-3) - skill 4+ = "god mode" bots
- Impulse 100 quick-add bot (standard convention from Frogbot)
- Velocity-based 3D swimming (oxygen-aware surfacing and pitch steering)
- Feeler steering + breadcrumbs (escape scans and dropped BotPath waypoints)
- Navigation learning (link types, usage weighting, danger/decay, rocket jumps)
- Silent Specters (stealth unstuck rollouts; jump noise minimized, enemy-aware penalty)
- Cursed Nodes (adaptive stuck-learning mesh with decay, biases rollouts + routing)
- Phantom Apprenticeship (spectral episodes with rollout validation, soft A* bias, decay; no teleport shortcuts or golden locks)
- Vortex Navmesh + Apex HPA* (incremental dynamic navmesh seeded from spawns/items, phantom-validated edges, cursed/glory-biased costs, hierarchical clustering for large maps; no pre-bake)
- Vortex Telechains (teleporter warp detection and one-way quantum edges; chain-safe, hazard-aware, low-cost path fusion)
- Apex Lifts (lift sampling with wait-cost biasing and HPA* portal weighting for timed platforms)
- Ripple Oracles + Maelstrom MCTS (UCT-style causal interactable prediction; fuses button/plat/door cascades as ripple edges)
- Grenade Vortex (GJ/GLJ): Grenade jumps and bounce-jumps integrated into Quantum Leaps with ammo-aware priors, purpose-tuned arcs, and phantom auto-tuning
- Mirage Minds (persona-driven humanization with entropy, micro-goals, heatmap denial, and feint pauses)
- Teacher Mode debug impulses (102 show / 103 hide bot learning nodes, 104 dump spectral episodes)
- Speed Demon update (bunny hopping on straight runs and reflex projectile dodging)
- Predator Update: Strategic intelligence upgrade
- Sound Navigation: Bots hear combat, item pickups, water splashes, and footsteps (with occlusion) and investigate
- Curiosity: Bots shoot shootable buttons/doors/walls to discover secrets
- Smooth Steering: 3-frame angle averaging prevents jitter from pathfinder/whisker oscillation
- Sixth Sense: 360-degree awareness for items within 300 units (no facing check needed)
- High-Value Item Focus: Direct drive to powerups when close (<200 units) prevents strafing past
- Proactive Lookahead: 1-tick movement sim nudges bots away from dead-ends
- Mastermind Update: Proactive tactical combat
- Pre-Fire: Bots shoot rockets at corners where you just disappeared
- The Trap: Low-health bots stop running and ambush chasers with SSG/RL
- Displacement: Bots knock enemies into lava/slime using splash damage
- Darwin Update: Adaptive self-learning through reinforcement
- Natural Selection: Bots mark death locations as dangerous (avoided) and kill locations as glorious (attractive)
- Weapon Specialization: Bots develop personal weapon preferences based on success/failure history
- Stuck Learning: Navigation failures mark problematic nodes as difficult
- Decay System: Danger fades fast (courage) while glory fades slow (nostalgia)
- "Bot frags not shown" - MSG_UPDATEFRAGS sent correctly, likely fixed by 0-index fix
- "Extra SNG ammo" - bots use same ammo as players
- "Firing faster" - bots use identical attack timings
- "Respawn splash sound" - spawn uses correct teleport sounds
- "Floating after respawn" - spawn already uses MOVETYPE_STEP
- Score display at intermission - standard Quake behavior
- Scoreboard colors - engine limitation, modern ports handle correctly
- MultiSkin unreliable - code works, requires player.mdl with 16 skins
.\ci\build_mre.ps1This compiles mre/, writes progs.dat into ci/mre/progs.dat, and deploys the same copy to launch/quake-spasm/mre/progs.dat so the runtime directory stays in-sync with the build.
Manual build (fteqcc) + deploy:
cd c:\reaperai\mre
..\tools\fteqcc_win64\fteqcc64.exe -O3 -Tq1 -DQS_V6 progs.src
copy c:\reaperai\progs.dat c:\reaperai\launch\quake-spasm\mre\progs.dat /YNote: progs.dat currently exceeds the 32k global limit, so an enhanced QCVM/engine is required at runtime.
cd launch\quake-spasm
launch_reapbot_v2.bat 8 dm4Manual command with logging:
quakespasm-sdl12.exe -game mre -condebug +developer 1 -listen 8 +maxplayers 8 +deathmatch 1 +map dm4If QuakeSpasm reports progs.dat has wrong version number (7 should be 6),
run via the bundled FTEQW engine instead:
cd c:\reaperai\launch\fteqw_win64
fteqw64.exe -basedir c:\reaperai\launch\quake-spasm -game mre -condebug +developer 1 -listen 8 +maxplayers 8 +deathmatch 1 +map dm4# Full stability regression tests (~4 minutes)
.\ci\test_stability.bat
# Quick tests (~2 minutes)
.\ci\test_stability.bat --quickCommand to run stability regression tests: .\ci\test_stability.bat (add --quick for shorter runs).
Automated tests check for: edict overflow, runaway loops, route recursion, scoreboard overflow.
- ARCHITECTURE_CURRENT.md - Control flow and call graph
- REAPER_BOT_REBOOT_SPEC.md - Design and implementation spec (aligned)
- mre/README.md - Quick start and testing checklist
- mre/COMMUNITY_ISSUES.md - Issue tracker
- mre/CHANGELOG.md - Detailed changes
- mre/SOURCES.md - Research sources
- KNOWN_ISSUES.md - Current regressions (bots clipping, logging gaps) and reproduction notes
The reboot now includes predictive rollout systems for navigation and combat:
- Navigation Shadow Puppets: short-horizon beam search to avoid hazards and dead-ends.
- Combat Crucible: dual-rollout combat oracle that selects a first action using beam search.
Runtime cvars (see DEVELOPMENT.md for full details):
shadow_debug(0/1) master debugshadow_nav_*andshadow_combat_*tuning knobs
sv_mirage(0/1) master enablemirage_debug(0/1) developer logs
- Incremental mesh: flood-fill from spawns/items builds nodes and edges over time (no pre-bake).
- Phantom episodes validate edges; cursed nodes add cost; glory usage attracts paths.
- Apex HPA* clusters the mesh on larger maps for faster queries.
- Mesh only takes over when a direct line to the goal is blocked; normal BotPath routing remains the baseline.
- Detects large teleporter warps and fuses one-way "quantum" edges between entry/exit nodes.
- Chaining is permitted with loop limits; hazard exits are cursed, powerups boost usage.
- Tele edges are low-cost in Vortex A* and low-cost portals in Apex HPA*.
- Lift nodes are sampled from world geometry and tagged in Vortex.
- A* adds a wait penalty based on lift cycle timing and bot skill (impatience).
- Apex HPA* marks lift portals for cheaper abstraction of multi-hop lift paths.
- When goals are blocked, Ripple probes nearby interactables (buttons/doors/plats).
- MCTS rollouts simulate shoot/touch/wait cascades and fuse one-way ripple edges.
- Vortex pathing can redirect to the interactable position before resuming the goal.
- Extends Quantum Leaps with grenade jumps (GJ) and bounce-aware GLJ actions.
- MCTS rollouts sample RJ/GJ/GLJ based on ammo, health, and purpose (lava/vault/high).
- Phantom episodes auto-tune GJ horiz/vert coeffs and GLJ launch angles.