Website powered by

Blood Shot: Level Geometry Along Spline Tool

Blood Shot is a Interaccess Media Arts Prize nominated first-person shooter game made in Unity, solo-developed from scratch and inspired by Star Fox, Playstation 1 games and medical photography techniques.
Using C#, I made a custom in-editor tool where the user adjusts a spline along which the level geometry is drawn procedurally during runtime, to facilitate quick and flexible level creation. This path is also used for calculating the path the player flies down, and in which directin the enemies move.

Check out the game at https://garbange.itch.io/blood-shot

Variant 1 : The spline system supports splitting off into different branches for levels where the player navigates the human body in 3rd person

Variant 1 : The spline system supports splitting off into different branches for levels where the player navigates the human body in 3rd person

Variant 2: The spline system can generate first-person levels that the player is forced forward through,  while enemies move in an oncoming fashion.

Variant 2: The spline system can generate first-person levels that the player is forced forward through, while enemies move in an oncoming fashion.

The level can be generated from a single spline, or from a branching connected system.

The level can be generated from a single spline, or from a branching connected system.

At runtime the level's geometry is generated and the path the player can take is defined by the spline.

At runtime the level's geometry is generated and the path the player can take is defined by the spline.

Enemies can be dragged and dropped into the scene and will snap onto the nearest location of the spline, within the defined radius of the geometry's width.

Enemies can be dragged and dropped into the scene and will snap onto the nearest location of the spline, within the defined radius of the geometry's width.

First person point-of-view of opening scene,  featuring the player's view while traveling along the spline & inside the tunnel's geometry.

First person point-of-view of opening scene, featuring the player's view while traveling along the spline & inside the tunnel's geometry.

C# code that creates the scriptable object responsible for storing points, and allows a segment to contain other segments. This object can be created within the Unity asset menu.

C# code that creates the scriptable object responsible for storing points, and allows a segment to contain other segments. This object can be created within the Unity asset menu.

Althought another function generates the visuals of the spline based on the points stored in the scriptable object, this code creates the in-editor handles that allows for easier point manipulation.

Althought another function generates the visuals of the spline based on the points stored in the scriptable object, this code creates the in-editor handles that allows for easier point manipulation.

This function sorts the points from the scriptable object into different branches, keeping track of what segments are connected and where, and where segments split off.

This function sorts the points from the scriptable object into different branches, keeping track of what segments are connected and where, and where segments split off.