This repository contains the source code for Eastvillage's RLBot Java tutorial. The tutorial covers the basics of RLBot how to make your first bot.
If you have questions, feedback, or comments on the tutorial, hit me up on Discord, Eastvillage#2628
. You can find me on the RLBot Discord server.
NOTE: Please do not submit the tutorial bot to tournaments or claim it as your own unless you have made significant changes to it! (Community guidelines)
Important links:
- RLBot website
- JavaExampleBot
- RLBot wiki, and notable sub-sites:
- Input and output, i.e. the content of the GameTickPacket and the ControllerOutput
- Useful Game Values, like field dimensions, ball size, max speeds, and much more
- Bot appearance
- Ball path prediction
- Debug rendering
- Game-state manipulation
- RLBot framework
- chip's math notes
- RLBotTraining. Custom exercises (unit tests) for bots
Episode 1 - Setup and Renaming
- Quick framework explaination
- IDE suggestion
- Downloading the JavaExampleBot
- Renaming relavant files, including bot name, gradle, config, java bat path, etc
- Showing off RLBot's wiki
Episode 2 - RLBot, Vec3, and Doubles
- How the bot is created and called
- ATBA/JavaExampleBot logic explanation
- Why vectors are important (and inverted coordinate system)
- Replacing
Vector3
withVec3
- Fixing
CarOrientation
as a consequence of the weird coordinate system - Insert double/float casting in the right places
Episode 3 - DataPackets and State Machines
- Small explanation and cleanup of input and output data
- Adding bot to
DataPacket
- Introduction to state machines
- Making abstract
State
class - Making general
MoveToPointState
withtargetPoint
andtargetSpeed
- Making
AtbaState
andCollectBoostState
and switching between them
Episode 4 - Kickoffs and Local Coordinates
- Adding
KickoffState
(no dodge) - Making
MoveToPointState
use local coordinates to get down from wall - Making
MoveToPointState
only boost when going towards the target
Episode 5 - Dodges
- Talk about how RLBot works in frames/ticks and how to make sequential maneuvers
- Making a
Manuever
interface - Making a dodge for
KickoffState
andMoveToPointState
Episode 6 - Rendering and Ball Prediction
- Deep dive into the renderers
- Making our own
SmartRenderer
with more functions - Drawing ball prediction
- Using ball prediction to find where and when to hit the ball
Note: These are just ideas for episodes and their order may not be exactly as below.
Episode ? - Better Movement
- Introducing handbraking and turn radius (and "can to faster" option maybe?)
- Renaming
AtbaState
toChaseBallState
since it is not just Atba anymore
Episode ? - Simple Strategy and shoot maneuver
- Making it only chase the ball when on the correct side of the ball and retreat to own goal otherwise
- Adding a simple
ShotManeuver
Episode ? - Utility Systems
- Explaination of utility systems and why state machines doesn't scale
- Implementing a simple utility system
Episode ? - Aerials
- Building aerial controller
- Making a recover manuever
- Making an aerial manuever