Skip to content

SentientPlatypus/indonesian_coconut

Repository files navigation

Indonesian Coconut — A Reinforcement-Learning Rocket League Bot

alt text

Indonesian Coconut is a reinforcement-learning–driven Rocket League bot built using RLGym and a discrete lookup-table action space. Unlike continuous-control agents that rely on large action vectors and dense motor precision, Indonesian Coconut operates with a compact, interpretable discrete action representation while still achieving high-level mechanical behaviors such as controlled air-dribbles, flip resets, pressure-aware flicks, possession-safe dribbling, and adaptive defensive rotations.

The bot is trained using a specialized multi-component reward architecture designed to optimize not only for raw shot power or ball velocity, but for decision quality and possession stability. The reward system embeds concepts such as challenge anticipation, dribble retention, controlled aerial touches, boost-energy budgeting, and goal-probability shaping. This allows Indonesian Coconut to behave more like a human competitive player—with deliberate buildup, safe dispossession, and well-timed mechanical execution—rather than a purely greedy offense-maximizer.

Performance Evaluation

To benchmark policy quality, Indonesian Coconut was evaluated against Element, an established S-tier bot in the RLBot competitive scene. Using a binomial scoring model to assess statistical significance:

The RLGYM community requires a score of 42-28 or better to determine statistical significance (p < 0.05) where each goal is treated as an independent Bernoulli trial.

Indonesian Coconut achieved a decisive result of: 47–3

This exceeds the statistical significance threshold by a wide margin, providing strong evidence that Indonesian Coconut’s learned policy is overwhelmingly stronger across the full distribution of 1v1 play. See match statistics here alt text

Clips: (Embeds may not show, see the docs/highlights folder.)

Project layout

freestyler.py            Current training entry point (loads data/checkpoints/V3/17.9B)
train_template.py        Clean starting point for a new run (fresh rewards, no checkpoint)
rsv_renderer.py          RocketSimVis renderer (rlgym v2), used by the trainers
rewards/                 Reward functions
    customRewardsGYM.py    Core shaping rewards
    freestyleMechs.py      Freestyle-mechanic rewards (flicks, pogo, wall dash, ...)
rl_math/                 Geometry helpers (ball trajectory, goal solid-angle)
collision_meshes/        RocketSim arena collision data (required at runtime)
assets/                  README images
docs/highlights/         Highlight clips
tools/                   RLBot binaries (rlbotgui, RLBotServer, ...)
archive/                 Older/unused scripts kept for reference
data/                    Checkpoints & training data (gitignored; not in the repo)
Rlgym-v2-to-rlbot-v5/    Submodule: deploy a trained policy as an RLBot v5 bot
RocketSimVis/            Submodule: the visualizer

EC2 instance (in the works)

ssh -i ~/.ssh/indococo.pem ubuntu@54.167.88.183 claude --resume f32d1785-1247-4ed7-b147-94f6b080671f

tmux new -s indococo tmux attach -t indococo

About

Champ III tier PPO Rocket League bot

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages