Ballistics Projection in Video Games
(aka building aim bots)
Continuing off my last blog post, I’ve been making a lot of interesting projects in my AI for video games course. The latest topic that we covered was ballistics projection in video games and how we build agents that can aim and shoot at targets.
This is a really cool topic because it involves a lot of physics and math, and it’s a great way to learn about how we can use these concepts to build intelligent agents in games. It’s also really cool because as someone who grew up on video games like Counter-Strike and Call of Duty, I’ve always been fascinated by how players can make these incredible shots and how the game developers design and create a more life like experience.
Above, the demonstration shows how a target in a unity environment is calculating the trajectory of a projectile to hit a target. The agent is using a simple physics model to calculate the angle and velocity of the projectile to hit the target.
In ballistics projection, the goal is to calculate the correct launch parameters—specifically, the angle and velocity—required for a projectile to intercept a moving target. This involves solving the equations of motion under the influence of gravity. The key variables include the initial position of the projectile, the initial and constant velocity of the target, and the gravitational acceleration. By considering both horizontal and vertical components separately, we can derive the necessary launch velocity. The horizontal displacement is calculated as the product of the target’s velocity and time, while the vertical displacement is adjusted for gravitational acceleration. The resulting equations form a system that can be solved iteratively or using closed-form solutions to find the exact launch angle and speed, ensuring the projectile’s trajectory intersects with the target’s future position.
This is a simple implementation of the concept, but once we get into more complicated scenarios including cover fire and various obstacles in the agent’s target path, things can get a little tricker.
To make an agent capable of selecting which shots to take smartly, we incorporate finite state machines that tell us when to shoot, when to move, and when to reload. This is a simple way to model the agent’s behavior and make it more intelligent.