Splek is a futuristic ball game based on the old human activity of tennis. Play as Zorb, a malfunctioning butler robot with an aptitude for Splek.

Fly through space fighting different Splek champions to get home, and reunite with your fellow robot buddies!

Developers:
Aidan Strong
Aaron Isara
Justin Nguyen
Keona Mae Pablo
Kaustuv Prateeq
Alex Stavedahl
Ryan Vuong
Jess Xu
Charles Zhang


Role:
AI Designer

Project dates:
January - June 2021

Tools:
Unity

Platforms:
PC

Rectangle 12asdasd.png

What is Splek?

During my time at UCLA, I had the amazing chance to work worked with UCLA’s ACM Game Studio on a two-quarter-long project called Splekbot. Inspired by Mario Tennis Aces and Paper Mario, Splekbot was a 3D tennis game that relied on trick shots and fast movement to win matches against AI enemies.

 

I worked as a graphics and AI designer on Splekbot, figuring out the art style we wanted to use and developing the behavior models for the enemies to follow.

vGlc0J.png

Developing a unique visual style

The visual style of Splekbot was heavily influenced by mixed 2D/3D games like Paper Mario. As a team we wanted to have the tennis games be played in 3D, as it would allow for more depth when it came to actually developing the mechanics. Yet, we lacked enough experienced 3D modelers to make the game from scratch. The decision to use a mixed 2D/3D perspective allowed us to have a unique visual style, spend less time worrying about our assets, and pay homage to an important title in the Mario franchise.

pFPvXM.png
Paper-Mario-The-Origami-King---Nintendo-Switch.jpeg
Paper Mario (Left) & Splekbot (Right)

Creating Compelling Enemy AI

I primarily worked as the AI designer on Splekbot, designing and implementing enemy behavior for both serving and rallying the tennis ball. Our primary goal was to make the AI feel like another player, not some omnipotent being that immediately knew the final destination.

We started by having the enemy mirror where the player stood on the court. If the player was leaning towards the left, the enemy would go on the right to catch any of their shots. This felt similar to how someone might position themselves in real tennis, being prepared for any different shot.

When the player did hit the ball, our AI did calculations to estimate where the ball would land on the court.
 

Rally.gif

If the ball was predicted to land within the boundaries of a wall, a second calculation was done to find where the ball would bounce after hitting the wall. After figuring out the ball’s final destination, the AI would walk to it and being charging its swing. The swing was directed toward the section of the court from which the player was farthest. As a team we decided this felt most natural for an enemy to do, aiming for the position that was furthest away from the player.

When players finally got their hands on Splekbot, we realized that the AI was actually too difficult to play against. It acted with omnipotent knowledge of where everything would land, and would always target the best spot on the court to hit. This wasn’t fun or fair to play against, and our playtesters rarely got beyond the first boss. Yet, reflecting back on Splekbot, I know there were minor adjustments we could’ve made to make the AI feel easier to play against.

To begin, I think we could’ve made the enemies behave more similarly to humans. Since average players are unable to calculate the precise location of a bounce shot, they will often walk towards the ball before it ricochets off of something. Once it does, they’ll recorrect their path and try to sprint to the ball’s new destination. This delay of waiting for the ball to bounce off of the wall is something we could’ve mimicked with our enemies. Instead of having the enemy know the final destination of the ball, we could’ve made it so the final destination wasn’t calculated till the ball had already hit the wall. This would’ve given the AI a bit of realistic inefficiency, and made it easier to play against. Additionally, this would’ve added a fancy way to try and defeat the AI, as bounce-shots would be more likely to confuse it.

AI Flow.png
Behavior Diagram for Enemy AI