Developed over 2 months in late 2023 (100% worktime)
Work: Gameplay, UI
Developed over 2 months in late 2023 (100% worktime)
Work: Gameplay, UI
Block Bounce is a game I and four other game developers created in the course "Spelprojekt 1". In the game you play as a worker whose job it is to keep the boxes from hitting laser and overload the workplace.
The game is inspired by and plays like a classic arcade game where your goal is to achieve the highest score possible. There are three different levels with varying difficulty
Itch.io play link: Block Bounce
My Contributions
Player movement
Since movement was such a central part of our game, it was essential for it to feel responsive and satisfying to use. Therefore, I created a custom movement system based on a state machine for the different situations the player can encounter. It also includes a custom gravity system and a gravity modifier for better control over how the movement feels.
The movement also includes a combo system where the height of your bounce increases after destroying a block, as long as you avoid landing on the ground or on top of another block. The bounce height has a cap, but when used effectively, it makes the game feel much more fluid and smooth.
Block Spawning and Block Behavior
Since the game is about destroying blocks, blocks naturally have to spawn for there to be blocks to destroy. The spawner randomizes a position between the 8 possible rows and then spawns a block, which moves upward toward the ground, where it then stops. The time between block spawn depends on the level being played and the score but both the starting speed and increase rate can be changed independently. The amount of health the spawned block has is randomized when it's spawned, but the odds of it having certain health values change based on the level and score. The level sets the base odds, and the score increases them.
The block behavior system has gone through many revisions to work as intended. In the build published on Itch.io, it uses trigger boxes to check if another block is beneath it, and then moves upward until it no longer detects a block. This works most of the time but can sometimes cause bugs that make the block move upwards forever and not stop when it should. Later, I revisited this project and changed the system to use raycasts instead of trigger boxes, which made it much more consistent and, to my knowledge, fixed the bug that caused blocks to fly forever.
If I were to remake this whole system with the blocks again today, I would implement a pooling system for the blocks to save on performance by avoiding the constant destruction and spawning of new entities.
Menu
Because the game is designed to be played with a controller, the menu naturally needed to work with one as well. Since we made the game using Unity's default input system, we couldn't get the functionality we wanted. Therefore, I built my own system, which holds all the logic in a script and activates UI elements based on player input.