STELLAR
ROLE
Gameplay programmer
​
SOFTWARE
Unreal Engine, Logic Pro
​
DEVELOPMENT FRAMEWORK
Blueprint, C++
​
DURATION
10 weeks
​
DATE
Spring 2024
​
TEAM SIZE
8​
OVERVIEW
Stellar is a puzzle/adventure game in which players take on the role of Stella, a fallen star on a journey to find her way back to the sky. The story begins with Stella plummeting from the heavens and landing on Earth, setting the player on a mission to help her return home.
​
This project was developed as part of my studies at Stockholm University, completed over a 10-week period with a team of eight students, including myself. It also served as my introduction to Unreal Engine and the Blueprint system, where I expanded my understanding of integrating Blueprints with C++.
​
In this collaborative project, each team member took on specific roles; mine was primarily focused on Gameplay Programming. Due to the condensed timeline and the broad scope of the game, we often worked beyond our primary roles. This provided me with valuable experience across multiple areas, broadening my skill set. Despite our varied responsibilities, we worked closely to maintain consistent design patterns, ensuring smooth integration across our codebase and creating a cohesive final product.
PRIMARY CONTRIBUTIONS AND KEY IMPLEMENTATIONS
While this project involved extensive collaboration, I took primary responsibility for several key implementations. Below, I outline these contributions and provide insight into my design and development process for each feature.
​
Primary contributions:​
-
GRAB-AND-DROP MECHANIC
-
PUSH-AND-RELEASE MECHANIC
-
​PUZZLES​
-
PUZZLE 1: PRESSURE PLATE ACTIVATION
-
PUZZLE 2: STATUE ALLIGNMENT WITH LEVER AND LIGHT CONTROL
-
PUZZLE 3: MOUNT AND PRESSURE PLATE
-
PUZZLE 4: BRIDGE ACTIVATION SEQUENCE
-
-
UI
1. GRAB-AND-DROP MECHANIC
I independently designed and developed a grab-and-drop interaction mechanic to allow players to pick up and place objects on pressure plates, triggering in-game events.
​
I defined several key goals for the mechanic:​
​
-
Responsiveness: Ensuring a fluid and seamless interaction that integrates smoothly into gameplay.
-
Accuracy with snap: Minimizing placement errors, especially when aligning objects with pressure plates.
-
Efficiency: Optimizing for quick interactions, allowing players to use the mechanic intuitively without delay.
​
These goals guided the development process, resulting in a responsive and accurate mechanic that enhances the player's experience by providing precise, fast, and satisfying object interactions.
EXAMPLE: GRAB AND DROP OBJECT
IMPLEMENTATION
I designed and developed the grab-and-drop interaction mechanic using Unreal Engine’s Blueprint system.​ The system is built around overlap events triggered by box collisions and an interaction interface. When a player picks up an object, it attaches directly to the player actor, providing immediate feedback and a "snappy" feel. Upon dropping the object, the mechanic performs a downward line trace to detect the ground position. To ensure precision-particularly when interacting with target areas like pressure plates-I implemented an invisible trigger zone around the plate. If the line trace intersects this zone, the object snaps to the plate’s center, allowing for accurate placement and improving the overall user experience. This approach effectively reduces error margins, making the interaction more intuitive and satisfying.
2. PUSH-AND-RELEASE MECHANIC
I independently designed and developed a push-and-release mechanic to allow players to interact with and move obstacles within the game environment.
​
I defined several key goals for this mechanic:​
​
-
Responsiveness: Ensuring quick and intuitive player interactions that integrate smoothly into gameplay.
-
Accuracy: Minimizing unintended movement or positioning errors, particularly when aligning obstacles within the environment.
-
Natural Feel: Creating an interaction that feels realistic and seamless, enhancing immersion.
​
These goals guided the development process, resulting in a responsive, accurate, and intuitive obstacle movement mechanic that provides a natural and engaging experience for players.
EXAMPLE: PUSH AND RELEASE OBJECT
IMPLEMENTATION
I designed and developed the push-and-release interaction mechanic using Unreal Engine’s Blueprint system. The system is built around overlap events triggered by box collisions and an interaction interface, ensuring precise and fluid engagement without the need for line tracing. When a player picks up an object, it attaches directly to the player actor, same as the grab-and-drop mechanic, providing immediate feedback. This approach was chosen to prioritize player immersion and interactivity, resulting in a efficient experience that enhances gameplay fluidity and player satisfaction.
COLLISION HANDLING PROBLEM
During development, a major challenge arose with handling collision for objects picked up or pushed by the player. Initially, I was unaware of how Unreal Engine manages collision for attached actors: when an actor with its own collision component (e.g., a capsule collider) is attached to another actor with a collision component, Unreal Engine disables the attached actor’s collision as an optimization measure.
​
This realization presented two possible solutions:
​
-
Multiple Player Mesh Variants: Collaborate with 3D artist to create several versions of the player model, each incorporating a different pickup object.
-
Sphere Trace Collision: Implement a sphere trace in the player’s forward direction to detect potential collisions, pausing movement when an obstacle is detected.
​
Given time constraints and the goal of minimizing workload for the modeling team, I opted for the second solution. While using a sphere trace is less optimized and not as precise as a collision capsule, it provided an effective, timely solution for this project.​
EXAMPLE: SPHERE TRACE FOR HANDLING THE COLLISION
EXAMPLE: SPHERE TRACE FOR HANDLING THE COLLISION
LOGIC FOR HANDLING THE COLLISION
PUZZLES
I was responsible for designing and developing all the puzzles in the game, with a bit of help from a fellow team member when needed. I designed each puzzle to challenge players while enhancing the overall gameplay experience. Each puzzle was carefully constructed to balance difficulty and enjoyment, adding depth and engagement to the game’s progression.
​
I defined several key goals for this mechanic:​
​
-
Modular Design: Structure puzzle objects to allow for versatile use across multiple scenarios, enabling flexibility and reusability in puzzle creation.
-
Data Efficiency: Ensured puzzles were optimized to minimize data load, delivering effective performance across diverse hardware setups.
-
​Challenge and Engagement: Designed puzzles to provide players with a stimulating challenge, balancing difficulty with an engaging experience.
​
Throughout the project, I iteratively refined the puzzles to meet these goals, adapting the design as needed to enhance functionality and player experience.
Below, I outline my thought process behind the choices made for each puzzle.
MODULARITY
To maximize flexibility and efficiency, I designed each puzzle actor with a modular structure. By creating a system where puzzle components could be easily adapted and reused across different scenarios, I ensured that each element could serve multiple use cases with minimal adjustment. This modular approach allowed us to rapidly iterate on puzzle designs and integrate variations without duplicating effort.
​
Key benefits of this modular system included:
​
-
Reusability: Core puzzle components could be reused across multiple levels and puzzle setups, saving time and resources while maintaining consistency.
-
Scalability: The modular design enabled us to scale complexity by combining or modifying existing puzzle elements, facilitating the creation of more intricate challenges without rebuilding from scratch.
-
Ease of Customization: Individual puzzle components were designed to be easily configurable, allowing for quick adjustments in functionality, appearance, or behavior to meet specific design needs.
​
This approach not only streamlined development but also created a foundation for future expansion, making the system adaptable for additional puzzles or gameplay variations in subsequent updates.
PUZZLE 1: PRESSURE PLATE ACTIVATION
In the first puzzle, players are tasked with picking up crystals and placing them on pressure plates scattered throughout the environment. The objective is to activate all the plates, which collectively trigger an event-typically the opening of a door that allows the player to progress further in their adventure. To increase the complexity of the puzzle, a lever is also introduced that can fasten a bridge, adding an additional layer of challenge.
​
This puzzle not only teaches players the core mechanics of object interaction and pressure plate activation but also encourages them to strategize their actions with the lever, setting the stage for more intricate challenges ahead.
LOGIC FOR GRABBING AN OBJECT
LOGIC FOR DROPPING AN OBJECT
LOGIC FOR COUNTING ACTIVATED PRESSURE PLATES UNTIL EVENT GETS TRIGGER
EXAMPLE: PRESSURE PLATE ACTIVATION AND LEVER LOCK FOR BRIDGE
PUZZLE 2: STATUE ALLIGNMENT WITH LEVER AND LIGHT CONTROL
In the second puzzle, players must use a lever to move statues positioned on a board, aligning each one into its correct place. I found a way to incorporate a mechanic developed by a fellow student: a light that can be transferred between the player and the puzzle. When the player adds the light to a specific row on the board, only the statue in that row can be moved.
​
Once all statues are accurately positioned, an event is triggered-opening a door that allows the player to continue their journey. This puzzle enhances the gameplay experience by introducing spatial reasoning and lever mechanics while also utilizing the light mechanic to add a layer of strategic complexity. This approach builds on the core interaction skills developed in the previous puzzle and encourages players to think critically about their actions.​
EXAMPLE: LEVER AND LIGHT RELATIONSHIP
EXAMPLE: STATUE MOVEMENT
CALCULATION FOR NEXT DIRECTION FOR THE STATUES
LOGIC FOR STATUE MOVEMENT
LOGIC FOR SETTING NEXT STATUE LOCATION WHEN MOVING
PUZZLE 3: MOUNT AND PRESSURE PLATE
In the third puzzle, players use the pressure plate mechanic introduced earlier, now with added complexity. Instead of simply dropping an object, they must guide their mount to the pressure plate to activate it. This puzzle encourages critical thinking and strategic planning as players explore the relationship between their actions and the mount's positioning to navigate across gaps.
EXAMPLE: MOUNT AND PRESSURE PLATE
PUZZLE 4: BRIDGE ACTIVATION SEQUENCE
In the fourth puzzle, players utilize the same grab-and-drop mechanic introduced in the first puzzle, but with added complexity. Each pressure plate can activate one or more bridges, requiring players to determine the correct sequence to activate these plates in order to cross all the bridges successfully. This design challenges players to think critically about their actions and the relationships between the pressure plates and bridges, emphasizing problem-solving skills and strategic planning as they navigate their way across the gaps.
EXAMPLE: GAMEPLAY LOOP (LEFT TO RIGHT)
LOGIC FOR MOVING AND SETTING THE LOCATION OF THE BRIDGES
LOGIC FOR ONE TIME MOVEMENT OF THE BRIDGE
LOGIC FOR CONTINUOUS MOVEMENT OF THE BRIDGE
UI
I designed and developed the game’s UI HUD to be highly modular, allowing frequent use of SetText efficiently. Additionally, I implemented a system to detect whether input is from a controller or keyboard/mouse.
EXAMPLE: INPUT DETECTION (LOWER LEFT CORNER)
LOGIC FOR CHANGING TEXT DEPENDING ON INPUT
LOGIC FOR DETECTING PRESSED KEY
LOGIC FOR INPUT DETECTION