Hive Dive
-
Score & high-score system
-
Level design & Gameplay balance
-
Technical concept development & prototyping
-
Programming Lead
Project Type: Team/University Project
Software: Unreal Engine 5, Blueprints, C++
Platform: PC
Role: Gameplay/Tools programmer
Team Size: 18
Duration: 32 weeks
Project Overview
Made in year 3 at Breda University of Applied Sciences. Hive Dive is an endless arcade shooter with the goal to kill enemies in your path and get a better high score.
Skills Developed
-
Unreal C++ Development: Core spawning logic and data table integration.
-
Collaborative Development: Worked together with designers to align tool with creative goals.
-
Debugging Visualization: Created visual feedback for testing spawn points.
Highlighted Feature
Enemy Spawning Tool
I created an in-world spawner actor for procedural levels that allows designers to configure enemy placement and balance difficulty. Key features include:
-
Spline Based Spawning: Uses world splines to define spawn points along procedural level paths.
-
Even Spawn Point Distribution: Ensures enemies are distributed evenly along spline.
-
Difficulty Control: Use of custom data table to set spawn weights for each enemy.
Spawner Actor
The spawner actor allows designers to configure enemy placement. The tool uses the splines in the world to define spawn points.

Spawner Actor

Spawner Actor Settings
-
Spawn Location Amount: The amount of spawn points in a level.
-
Start & End Offset: How far from the start/end of the spline , spawn points should be placed. Ensuring that spawning only occurs within the desired section of the spline. For example for avoiding spawns right at the start or end.
-
Enemy Data Table: A custom data table can be chosen here. The data table defines each enemy you want to spawn, as well as the spawn chance of each enemy (using weights).
-
Minimum & Maximum enemies to spawn: The minimum and maximum enemies that spawn on each spawn point.
-
Spawn Radius: The radius each enemy would spawn within around the spawn point.
-
Should Spawn Enemy Variety: When toggled on; Allows multiple enemies to spawn on one spawn point , instead of just one enemy type. (while it allows for new enemies to spawn on a spawn point , the variation in enemies it is not always guaranteed as the enemies all have a spawn chance.)
-
Debugging: When toggled on; Shows visualization of spawn points.
Spline Based Spawning + Even Spawn Point Distribution
For enemies it was important to evenly distribute them along the spline in the level for the flow of the game. Keeping a consistent threat, but also having control over the pace of the spawning was important for designers, since the levels were procedural and splines can have varied lengths and shapes.

Even Distribution: Tested out distribution on multiple splines. Setting different start & end offset, and spawn location amount on the spawner actor.

Even Enemy Distribution: The test on the left were done with regular actors. I also tested out if enemy actors would distribute evenly. Above are the enemies, each red square on the spline is where they start when spawning.
Difficulty Control: Weight-based spawning from customizable data table
To give designers control over enemy difficulty balance, I implemented a weight system.
Each enemy is assigned a weight value in a data table. A higher weight means that enemy will appear more often than others. It was inspired by Borderlands loot system [Inside the borderlands 2 loot system].

Spawning Data Table: A new data table can be created from custom C++ data. For each new entry in the data table you can choose the object to spawn and its weight.

Spawning Test: I tested the weight-based spawning by repeatedly spawning objects from the data table along splines. As expected, Common and Uncommon enemies appear more frequently, since they have the highest weights in the table.