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.