The Last Foul Ball
Role
Programmer
Producer
Date
Jan 2025
Engine
Unity
Perforce
The Last Foul Ball is a 2.5D top-down action RPG where you play as a sentient basketball. You roll, punch, and slam your way through rooms full of hostile sports balls, clearing enemies and facing a final boss fight to finish your final revenge. The game focuses on fast movement, clear telegraphed abilities, and readable top-down combat in a compact, dungeon-like map.

Inspiration
The game is inspired by basketball as an object and a motion, not traditional basketball rules. We borrow ideas like rolling, dashing, and slamming, and turn them into combat skills. There are many sports games about playing basketball, but very few where you are the basketball. Making the main character a ball fighting other sports balls creates a fun, slightly absurd setup that stands out and is easy to understand at a glance.
Story
The game takes place in a world where sports balls live like people. They have homes, gyms, trophies, and training spaces, all themed around their sport. Our main character is a basketball who once lived a normal life with his family. One day, a violent sports ball gang made up of other types of balls attacked them and took everything away.
Now he fights back. Moving through the gang’s territory, he takes down their minions, grows stronger, and heads toward a Final Match against the boss—Baseball. Along the way, he is not just seeking revenge; he is also trying to break the cycle of bullying and power in this world and prove that even a “simple” ball can stand up for himself and others.

Combat Design
Player Movement
Wsad / joystick (could go diagonally)
Player Ability
Movement: Roll | Basic Attack: Punch | Special Attack: Slam | |
Damage | N/A | 2 | 4 |
CD | 1s | N/A | 5s |
Range | N/A | Front rectangular (see red) ![]() | 2x player size circle (see yellow) ![]() |
Effect (if any) | -”dash” forward player’s facing position (faster soeed than walk) | -Just deal damage | -”Teleports” player position to the slam zone and deal damage -Stun enemies in range |
Keyboard | Left Shift | J | Hold K to start aiming Wsad to aim Release K to deal damage/slam |
Controller | Down button | Right button | Up button |


Enemy Design
Ping Pong
Chase player after they enter attack range
Charge for a moment, then dash toward player position
Contact damage

Small Baseball
Chase player after they enter attack range
Hit the player with a bat when entering attack range

Baseball Boss
Bat-hitting (melee)
Throwing small baseball projectiles to aim at the player's position (ranged)
Has two phase: 1) use melee and ranged attack with 3 projectiles at a time 2) surrounding by 8 projectiles and shoot out one by one toward player position


Level
Levels are designed as the “house” and hangout spaces of the sports ball gang, so the world feels like it belongs to them.
Environmental touches, like bowling ball statues, sports equipment, and customized props, help the house feel like a believable home base for the gang, not just a generic dungeon.


Technical Design
Player Control & Combat
The basketball is driven by a custom PlayerController using Unity’s Input System and Rigidbody2D. Movement is free 8-directional top-down, clamped inside the arena. Three core abilities are implemented, and each has its own cooldown tracking and animation triggers, creating a clear, responsive combat kit.
Roll: A short, fast movement with cooldown, using a coroutine to move the player and give brief invulnerability.
Punch: A close-range melee attack using an overlap box in front of the facing direction to detect enemies.

punch range (red rectangle) Slam: A targeted AOE where the player aims with a separate input, shows an aiming circle, then teleports/slams to that position and damages all enemies in a radius.

slam range (yellow circle)
Ability & Health UI
PlayerHealthUI is a persistent UI object that reads directly from PlayerController, keeping track of player’s health point in real time.

Three small bars show cooldowns for punch, slam, and roll by scaling darker UI elements based on remaining time.

Sprite Sorting & 2.5D Look
The game uses top-down 2D sprites arranged with sorting layers and ordering so characters and props overlap correctly, creating a 2.5D feeling (e.g., walking “behind” sofas or statues). And I used simple sprites (half-opaque circle) as objects’ shadow, creating more “volume” in the world so it does not look too flat.

Arts
Concept Art


Cutscenes



References
[Existing Game]

