Scattered Time
Description
Stuck in a paradoxical realm where time just keeps looping. No life remains, only security robots and cameras to catch any remaining life. You must explore an unfamiliar city, learn your routes, and find all 8 portal shards to escape this realm and break the loop.
Project Info
Role: AI Programmer and Game Designer
Team size: 3
Engine: Unreal Engine 5
Tools: Perforce, Blender, Audacity
Duration: 1 month
Date: April 2025 - May 2025
Awards: 3rd Place Winner LaSalle Game Jam 2025
Theme: Back To Square One
My Experience
For this 1-month project and my final submission for my game engine II class, I took the roles as both AI
Programmer and Game Designer.
Once the theme of the game was announced, all I could think of was coming back in time,
a paradox that cannot be broken. One of my main inspirations was the game: "Exit 8". From there,
is that the idea of "Scattered Time" was born.
The first mechanic that we worried about was the time loop while keeping the theme alive.
How could we make the player go back in time? Well, if you are in a paradox, time is broken,
so we decided to make the player, and everything else in the world, restart to its initial position
every minute, exactly back to square one. After we decided to go with this mechanic, we realized
that we couldn't make the player do the same things again every minute. So we thought about a
setting that. made the player take a different decision every time they come back in time, but
still makes what they did before relevant. That's when the idea of a Maze came up.
I am passionate about making things work and move by themselves, and that's why my role during this game
focused on the AI programming side, making the robots and the security cameras work as intended. The cameras
were the first thing I worked on, making them rotate and detect the player when they came into view. It was a
fun challenge to start with, and I learned a lot about line traces, vectors, rotators, and animations,
especially when things such as pivot points and offsets came into play when animating cameras. It helped me
understand more how important its to think forward when working on something, that in this case, the camera
itself and the base of it would be a good thing to have as separate meshes to make the rotation easier, but I
undestood that there are always many ways to solve a problem when programming, and at the same time I learned
how important it is to think ahead when working on something.
When I started working on the robot's AI, I was starting to touch on an area of coding I didn't have much
experience with: Behaviour Trees, AI Controllers, Blackboards, and more. It was challenging at first,
especially to understand how these things worked together and how decisions by AI were taken, but after
watching some tutorials and reading documentation, I started to understand how these things truly worked.
Mainly, Sequence and Selector nodes were the base of the BT. A sequence will take the next action once the
first (the one at the left) is completed, while a selector will take the next action once the first one fails.
As well as that, decorators control whether an action can be executed or not based on certain parameters (very
similar to if-statements). This is some of the base knowledge I understood and applied it to the robots
systems: patrolling. Mainly, the robot will have a HashMap with different patrol points and a time where it
must remain at each point. I created a BTT that will run overand over, just adjung the current patrol point
and making the robot move to it, wait the time, and then go to the next point, but this BTT is placed all the
way at the right side of my BT, which means that if any other action can be taken, the robot will take that
one instead, in my case, chase the player. I mainly used two decorators to check this: if the variable
"Player" is set in the blackboard, it means the player is detected by the robot and so it will chase, else it
means the player is not detected and so it will patrol, but if the player is out of range, the robot will
forget the player and continue to the next patrol point saved.
Throughout this project, I was surprised by all the things AI systems can do in Unreal Engine 5. On the other
hand, I also understood how players perceive a world they don't fully understand once they start a game for
the first time and how they can adapt while still offering a place challenging to the player. I am very proud
of Scattered Time and what I was able to achieve with it.