Deathball Royale
A battle royale game where you try to collapse the ground underneath the enemy team and eliminate them by hitting enemy robots with balls.
Platform - PC
Genre - Arcade Battle Royale
Price - Free to play
Art - Ashwin Kamath
Programming - Ashwin Kamath, Qaisar Ali
Tasks
​
-
AI navigation
-
AI combat
-
Art
AI Navigation
A challenge I faced while developing the game was to restrict the play area every time a ring is dropped. I initially created a hard coded play area with random waypoints. But this proved to be unnecessarily hard as I had to redefine the play area every time a player was eliminated.
​
I then implemented Navmesh into the project with random waypoints. This worked much better than the previous navigation code and helped reduce development time. Navmesh waypoints change every second thus making the AI constantly move around the play area.
​
The Navmesh waits for 2 seconds before updating itself to let the ring drop animation play.
​
Ball refill spots are actors whose positions automatically get updated when the Navmesh is re-baked.
AI Combat
AI robots have 3 combat actions: Dodge, block and attack.
​
The dodge and block actions are chosen randomly. When a ball enters the robot's vision, it picks one of the two actions.
​
The dodge action adds an instantaneous force on the robot making it move sideways quickly.
​
The block action spawns a barrier in front of the robot thus preventing it from colliding with the ball.
​
The attack action involves the robot randomly picking a target and shooting the ball at it. The target is changed every couple of seconds.
Art
I wanted the arena to feel like an underground boxing ring with dark surroundings and one big light on top of the main area.
​
Flat white particles were added to create the illusion of a crowd being present around the arena.
​
A soft blue light under the play area enhances the feeling of emptiness under the arena and that when pieces of the ring fall, they never come back.
The robots are simple objects with a face and a "ball launcher" at the middle of its body.
Since this was for a game jam, I wanted to reduce the time it took to model and implement assets into our project. I did this by not adding limbs to the robot (which would require the addition of multiple animations)