'Endless Runner'
September 2018 - Present
â–ª Ongoing
The 'Endless Runner' project is the first side project i'm developing solely after my university education.
The purpose of this project is to develop my blueprinting knowledge further and to also gain a better understanding of its abilities and functionalities.
The project will be executed as a fully functional piece

Week 1
Getting things started!
â–ª Forcing the players character to run forward endlessly.
Result:
By connecting the 'Event Tick' node to the characters forward movement input, this would force the input to be called every frame in game. Thus, moving the players character forward endlessly without player input.
​
â–ª Spawning the platform endlessly.
Result:
This was achieved by placing a 'Collision Box' at the front of the platform mesh, that once the player would overlap with it would spawn another actor at the spawn point location.
The spawning of set actor is done through the custom GameMode for this project.
There is then a 1 second delay before the first actor is destroyed. This is done to optimise the game as the player will never see behind them.
​
â–ª Increasing player speed overtime.
Result:
Once the player has overlapped the 'Collision Box' within the platform blueprint, this function would be called from the custom GameMode. Which multiples the current max speed of the character by a small amount.
The max value of set speed is clamped to ensure the speed does not get out of control.
This mechanic is implemented to add challenge to the player as the game progresses.
Week 2
What's next?
â–ª Player Input, switching running lanes with side to side movement.
Result:
Firstly i set up a float array to store each lanes center values. These values would serve to be movement distance for the player once they shift left or right.
Once a movement input it activated it would then change the value of a stored variable (CurrentLane) that determines which lane the player is currently in.
In order to make the movement into the lanes more smooth, i used a 'TimeLine' node to set the speed in which the player changes over.
​
​
â–ª Displaying players distance travelled, using UI.
Result:
By using the 'EventTick' node which activates every frame in game. I basically set up a event that adds one every 0.1 second to a variable (DistanceTravelled).
This variable is then called within the UI (Using it as the players HUD) binding the value of the variable to the text display.
​
â–ª Spawning obstacles on the platform / Obstacles themselves.
Result:
Once the player has overlapped the 'Collision Box' within the platform blueprint, this function would be called from the custom GameMode. Which randomly chooses a float value in range of 0-1 and if the random value equals to the float value i have set, it will then spawn a obstacle.
Basically you can think of the float value as a percent, the event picks a percent from 0%-100% and say i set a 40% value. The probability of the obstacle spawning is 40% every time the player overlaps the 'Collision Box'. This event function is specific in each lane, meaning i could give the left lane a 40% chance whereas the right lane could have a 100% chance of spawning a obstacle.
The spawned obstacle actor is simply a static mesh i created within Autodesk Maya with 'Event BeginPlay' node that once the obstacle is spawned, after 7 seconds it will destroy itself.
This is done to optimise the game as the player will never see those original obstacles again and to stop the game from drawing off it.
Week 3
Time for the score!
â–ª Point Pickup blueprint actor
Result:
This actor is created as a coin pickup in game, adding extra points to the players score once collected.
To collect the coins the player must overlap its ‘Collision Box’ by running through it, once done it will then destroy it. Just before it’s destroyed, it will +1 to a variable in which keeps data on how many coins the player collects in the given run.
Once the point pickup is spawned, after 7 seconds if it hasn’t been collected it will destroy itself. This is done similarly as the obstacles, to optimise the game as the player won’t see anything behind them.
â–ª Spawning the point pickups on the platform
Result:
The script to spawning the point pickups is a continuation to the spawning of the obstacles script. The way that the blueprint has been scripted is if the obstacle did not spawn in the given lane it then passes down to the next line of script that allows for the point pickup to be spawned. In the same way as the obstacle would be, the point pickup has a percentage of probable spawning if the obstacle failed to spawn in the first place.
Again, this method is duplicated for each lane giving the same percentage of probable spawn, yet variation in spawning actors in each lane. Meaning each playthrough will be different from the last.
â–ª Displaying the coins collected, using UI
Result:
As stated before every time the player collects a coin, it will +1 to a variable that stores how many coins is collected. This variable is called in the UI binding its value to a displayed text, showing the player how many coins they have collected in that specific run.
Week 4
Time for the score!
â–ª Displaying the players total score.
Result:
Within the custom GameMode a custom event is called every frame through the ‘Event Tick’ node that basically determines if the player has died. If not to then add the ‘Distance Travelled’ and the ‘Current Points’ variables together. The result value is then stored in its own variable known as the ‘High-Score’.
This variable is then called in the UI, binding its value to a displayed text, showing the player their Total points in the run.
â–ª Rag-doll death function.
Result:
By creating a physics asset from the player characters skeleton mesh, this allows the character to simulate physics for a rag-doll effect.
By creating a custom death function within the player characters blueprint it stores a variable value determining the players death. This then activates a simulated physics node whilst disabling movement and input. The disables are added to ensure the player is unable to interact after death. Once all this is done it then activates another function that saves the games data.
In order for the player to die, within the obstacle blueprint there is a ‘Collision Box’ that once the player overlaps it, will then call the death function.
â–ª High-Score system.
Result:
As a result of the player dying, a custom function is called saving the players score data into a save object file. Think of the save object file as a box with different compartments. You set up each compartment to store a particular piece of information. In this projects case its to store the players total score. This data will be kept and stored to the computer’s hard drive. This then allows the player to exit the game, play it again at another time and still have their last high-score data saved.
The custom function firstly checks if there is already a save data on the hard drive. The result of this is then branches to different outcomes. If TRUE it then loads that save data and applies it stored value to display on the players UI. If FALSE it then creates a new save data and stores the high-score value to the hard drive. But if there already a save data saved but the players high-score is greater than the last time they played, the function will then override the last stored high-score and apply the newer one.
Week 5
Adding some Pickup Items
â–ª Magnet power pickup blueprint mechanic
Result:
This actor is created as a power pickup in game. This power grants the player the ability to attract nearby coins to their location, meaning the player will collect all coins regardless of overlapping them over time.
This function is activated once the player overlaps its ‘Collision Box’, which then references a variable in the player character blueprint stating the power is activated. This then fires two custom events;
The first is within the coin point pickup, that once the player overlaps another ‘Collision Box’ specific to the magnet power active, calls to see if the power is active. If TRUE it then sets the coin point pickups location to the player position. This is done through the use of the ‘Timeline’ and ‘VInterp’ node. The timeline is used to output values over time based upon a created curve and the vinterp is used to reach a certain targeted location based from its current location. The two of these together creates the blend in which the coin point pickups moves to the player.
The second is within the player character blueprint, a ‘Event Tick’ node is used to determine if the power pickup is active. A branch is used to ask if the value is TRUE or FALSE, if TRUE; every second it will reduce a value of 10 from a set time variable. Another branch is use to determine if the set time variable is below 10, if so then this will set the power active variable to FALSE.
Again, to ensure the game is optimised, after 7 seconds if it hasn’t been collected it will destroy itself.
​
â–ª X2 (double points) power pickup blueprint mechanic
Result:
This actor is created as a power pickup in game. This power allows the player to receive double the amount of points given for collecting the coin point pickups over time.
This function is activated once the player overlaps its ‘Collision Box’, which then references a variable in the player character blueprint stating the power is activated. This then fires a event within the player character blueprint, a ‘Event Tick’ node is used to determine if the power pickup is active. A branch is used to ask if the value is TRUE or FALSE, if TRUE; it will set the variable for ‘Point Multiply’ double the original amount. With every passing second, it will reduce a value of 10 from a set time variable. Another branch is use to determine if the set time variable is below 10, if so then this will set the power active variable to FALSE and return the ‘Point Multiply’ variable back to its original value.
Again, to ensure the game is optimised, after 7 seconds if it hasn’t been collected it will destroy itself.
â–ª Spawning power pickups
Result:
The script to spawning the power pickups is a continuation to the spawning script. Which follows a sequence of actors to spawn, if the obstacle didn’t spawn it will then give the point pickup a chance. If the point pickup didn’t spawn then It would give the power pickups a chance too.
Again, this method is duplicated for each lane giving the same percentage of probable spawn, yet variation in spawning actors in each lane.



























