A small-scale prototype inspired by the 2014 game, The Talos Principle. It focuses on player interaction with the world and recording mechanics, aiming to recapture the gameplay feel of the original game.
Author: Matija Jambresic
Start Date: 20th January 2025
Duration: ~ 2 weeks
Unreal Engine: v5.5.1
Gameplay video.
Interaction.h --- Interaction.cpp
Handles basic player interaction with the world. Casts a line trace to detect objects available for interaction and manages interaction input.
ItemHandle.h --- ItemHandle.cpp
A scene component that picks up or puts down items. It handles interaction while items are in the player's hand and resolves placing or dropping them.
IInteractable.h
An interface that defines basic interaction methods. Objects implementing this interface can interact with the player in a specific way.
RecordingStation.h --- RecordingStation.cpp
A game object with three states: idle, recording, and playing. Depending on its state, it either saves snapshots of the current referenced recordable objects or resimulates the previously snapshot ones.
IRecordable.h
An interface that allows objects to be referenced and participate in the recording system. It implements snapshotting and resimulation methods.
ItemSnapshot.h, PlayerCharacterSnapshot.h, ItemPadSnapshot.h
Data structures designed to snapshot specific recordable objects.
Puzzle.h --- Puzzle.cpp
An actor component that references different pieces of a puzzle, tracking the completion of objectives and ensuring objects behave as a cohesive whole.
PuzzleGate.h --- PuzzleGate.cpp
A game object that obstructs the player's way out of a puzzle. It has two states: open and closed, set based on objective completion.
IObjective.h
An interface that defines specific objectives for different puzzle objects.
Item.h --- Item.cpp
An interactable and recordable object that player can pick up, interact with, and place in the world or in designated sockets.
ItemPad.h --- ItemPad.cpp
An interactable and recordable object with a specific objective. It is triggered when the player steps on it or when an item is socketed.
Terminal.h --- Terminal.cpp
An interactable computer object that opens a terminal widget.
PlayerCharacter.h --- PlayerCharacter.cpp
An object that unifies player mechanics. In this prototype, it is primarily used as a recordable object for player snapshotting and resimulation.
The Blueprints functionality included in this project primarily enhances the prototype's appearance and completeness, but is not necessarily designed for extensibility.
One example is the typewriting effect for the Terminal widget. Since Blueprints don't support delays, I recommend rewriting this functionality in C++ for better compatibility and to reduce repetitive code.
This project is licensed under the terms of the MIT License.
Copyright © 2025 Matija Jambresic
For information about third-party assets used and their respective licenses, please see the Third Party file.
In addition to the license file required by the MIT License, please include the Third Party file in all copies of this project.