Milo van Pelt - Tools Programmer

Tools Programmer

Hive Dive

Created in Year 3 with other students 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.

Gameplay/Tools programmer

10 Devs

32 weeks

Unreal Engine 5, Blueprints

Released on Steam

Responsibilities:

  • Enemy spawning tool for designers

  • Score & high-score system for rewarding the player

  • Programming Lead

  • Level design & Gameplay balance

  • Technical concept development & Prototyping

Enemy Spawning Tool

I developed a spawning tool tailored to give level designers precise control over procedural enemy spawning on the player spline, within the level.

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.

Key Features

Even enemy distribution along player spline

Weight-based spawning from customizable data table

Visualization of spawn points

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.

Testing even distribution over spline with test objects. For each spline I set different start & end offsets (when the spawning begins and ends on a spline) and different amount of spawn points.

Also tested it with actual enemies that would be in the game to make sure the distribution worked correctly with them as well.

While even distribution helps with the pacing of the spawning. It is also important that not all the enemies have the same spawn rate, since some of them are harder. For designers I created a data table, where for each enemy the weight could be set. The idea came from how Borderlands manages their loot with weights [Inside the borderlands 2 loot system]. The data table can be given to the function above.

C++ class for custom spawn node

Data table can be created from custom data table (C++), where for each row the object can be chosen and weight can be set.

Custom node used by designers to tweak spawning along the spline

Tested code for weight-based spawning working by spawning the objects from the data table along a spline multiple times. Common and Uncommon are being spawned the most in the image below, which makes sense given that their weights are the highest in the data table.

For me and the designers it was important to have a visual representation of the spawn points, so we can test the system and designers can tweak spawn points and see the result in-game.

Spawn points are visually indicated with a red sphere. These turn green when the player goes trough them to indicate that they have flown trough it and are activating the check points for spawning an enemy.

Enemy Spawning Tool

I developed a spawning tool tailored to give level designers precise control over hand-placed enemy placement , within the level.

Key Features
  • Customizable Triggers: Designers could manually place triggers and assign spawn points for different enemy types.

  • Visual Debugging: Added debug lines showing the relationship between triggers and spawn points to simplify troubleshooting and adjustments.

  • Distance Indicators: Displayed precise distances between spawn points and triggers to fine-tune gameplay pacing.

  • Ease of Adjustment: Moving a trigger automatically updated the associated spawn points to reduce design errors.

Score & High score System

I developed a score and high score system. Killing enemies grants points and your top 3 high score's are saved locally and loaded and shown in the main menu.

Key Features
  • Dynamic Scoring: Main menu showed top three high-score's of player

  • Local saving: High-score was locally saved

  • Top three high-score display: Only the three highest score are displayed in the main menu.