ahaha thank you!
It is a simple sense → decide → move loop every frame: the bot reads where the ball, you, and the goals are (plus things like “am I stuck in a corner?” or “is the ball moving toward my goal?”). From that it picks one of a few modes: defend, contest for the ball, attack, recover when it’s overcommitted, or bail out of corners. It also sticks with that choice for a few frames so it doesn’t jitter between behaviours.
Each mode sets a target position (guard the goal line, shadow the ball, rush to strike, etc.), then steers there with the same movement and boost rules as the player, including wall avoidance.
I actually think the human feel mostly comes from the fact that it sees the same things you do, and has the same physics-y input 😁