top of page

Role: Solo Developer
Engine: Unreal Engine
Year: 2022

About:
Rogue AI is an endless runner game made for PC and mobile. Take control of Prototype: Y0G1 has he attempts to escape the facility he was created in while avoiding the facilities defence systems
preventing his freedom.

This module focused on optimisation, this required the project to include set parameters such as object pooling, seed generation and the game to be playable on PC and mobile with UI and resolution to suit each platform.

During the course of the project, I primarily worked with:​

  • Blueprint Visual Scripting

  • Gameplay Mechanics

  • Enemy AI

  • Level Design

  • Asset Creation

  • Sound

  • UI Design

What I learnt during this project:

  • Object pooling

  • Random seed generation

  • UI optimisation for compatibility between PC and mobile

  • Data obfuscation

Gameplay Video

Rogue AI Banner.jpg

Let's Get Technical

Object Pooling

Upon initial start-up of the games main level, all required level sections, coins, power-ups and enemies are spawned to eliminate the need for continuous asset generation and improve the games performance.
Object Pooling of Platforms
(Right Mouse Button + Drag to Navigation) (Ctrl + Mouse Wheel to Zoom)
 
Object Pooling of Interactable Actors
(Right Mouse Button + Drag to Navigation) (Ctrl + Mouse Wheel to Zoom)
 
Players that reach the end of a platform will cross a collision box teleporting the previous platform to the end to simulate an endless corridor
Box Teleport Collision.png
Level Sections Teleport.gif
End Result

Random Seed Generation

Several aspects of the game such as obstacle sequences, coin and power-up spawns and level design are determined by a seed either randomly generated or chosen by the player at the beginning of the game.
In-Game Seed Generator Widget
Seed Generation Window.png
Seed Confirmation and Save in the games instance
(Right Mouse Button + Drag to Navigation) (Ctrl + Mouse Wheel to Zoom)
 
Obstacle Sequencing based on Seed
(Right Mouse Button + Drag to Navigation) (Ctrl + Mouse Wheel to Zoom)
Coin Spawning based on Seed
(Right Mouse Button + Drag to Navigation) (Ctrl + Mouse Wheel to Zoom)
Power-Up Spawning based on Seed
(Right Mouse Button + Drag to Navigation) (Ctrl + Mouse Wheel to Zoom)
Level Design based on Seed
The unobfuscation involves the same process but in reverse, resulting in in-game use of player names being visible. However, viewing the data within the games files using tools such as Hex Editor will appear incoherent.

Obfuscation

To ensure the safety and integrity of all data collected within the games leader board and to prevent users from altering the data saved locally with Hex Editor software, differing methods of obfuscation is used.
The obfuscation of player names involves the placement of 4 random letters between each character of the persons name.
The Name MAX will be used for this example
Obfuscation.png
Obfuscation of All Player Names in Saved Data
(Right Mouse Button + Drag to Navigation) (Ctrl + Mouse Wheel to Zoom)
The unobfuscation involves the same process but in reverse, resulting in in-game use of player names being visible. However, viewing the data within the games files using tools such as Hex Editor will appear incoherent.
Unobfuscation of All Player Names in Saved Data
(Right Mouse Button + Drag to Navigation) (Ctrl + Mouse Wheel to Zoom)
Methods of obfuscation were also applied to each players score on the leader boards. The solution was to multiply each players final score by the random seed used to generate the level they achieved their score. Since both variables are saved together, a link is established and seemed most optimal.
Final Score Obfuscation Example
Final Score
250
Random Seed
475
Obfuscated Data
118750
*
=
bottom of page