Isles of Aether
Project Details
Role:
Tools Used:
Design Director
Gameplay Programmer
Narrative
Marketing
AI team
Unreal Engine 5.2
Google Drive
Perforce
Click Up
Time Frame:
Link to game:
January 2023 - April 2024
“It is better to make a thousand mistakes than to think you know everything and not make any.”
About the project
For a year and three months, I worked with my classmates to develop Isles of Aether, the senior capstone project of 2024. This project was the culmination of the Shawnee State University digital simulation and gaming engineering technology program. I had the pleasure of being the design director for the latter year. Isles of Aether was inspired by third-person action-adventure games like Jedi: Fallen Order, Ghost of Tsushima, and The Witcher 3: The Wild Hunt.
The Design Process
Isles was originally designed by asking our class what we enjoyed in games. At the time, our group had no formal leadership and no direction, and many of the early mechanics were included because we enjoyed them, not because it was good for our game. Three months into the project, I was elected design director. My job was to cut the fluff and redirect everyone's thoughts and feelings into a cohesive experience. This was extraordinarily difficult. In January of 2023, I had no formal experience designing games. Given my new position, I began taking classes and reading about how to properly design a game. Yet most of what I know now, I learned through failure during this project. I'm grateful my team gave me room to grow and learn as we developed this game together.
As a Lead
Design is where art and engineering marry. As such, I tried to unite the two sides. At Shawnee State University, artists and programmers had been separated in different courses since freshman year. Three years on, we knew little of each other's capabilities or the terminology of our respective fields. To bridge this gap, I organized informal team gatherings and game nights, fostering a relaxed environment where team members could bond and build friendships. This approach encouraged open dialogue and honest questions, promoting a collaborative and supportive atmosphere, even when the questions seemed basic.
During my time as lead designer, I embraced multiple roles. I created and delivered presentations both internally and externally, including a notable presentation at the Shawnee Game Conference. I swiftly mastered new systems, such as producing a trailer in just two days using Unreal Engine. Despite the challenges, our team collaborated effectively to achieve our goals. I engaged with professors and professionals, discussing our game, team dynamics, and individual strengths while actively seeking their insights. Early in the process, we attended the East Coast Game Conference (ECGC) to network, with the intention of returning the following year to showcase our final build. Unfortunately, ECGC was canceled, but having that goal motivated us through tough times.
How it works
Health Orbs
To reinforce an aggressive combat system, the primary way to regain health is by attacking and killing enemies. These orbs frequently spawn when the enemy is struck and are guaranteed to spawn upon the enemy's death. All the following was done in blueprints!
If the player enters the health orb's sphere of influence, the orb will be magnetically drawn to the center of the player's chest. Once the orb collides with the player’s mesh, the player's health increases by one.
Orbs only exist between 8-9.5 seconds after spawning. To clarify when an orb would de-spawn, I made a simple dynamic mesh that briefly brightens the orbs before fading out.
Spawning Health Orbs
Once triggered, the event spawns orbs at the location of the enemy. A variant force is then applied to the spawned orb, sending it flying within a 30° cone. To determine the direction of the cone, I take the player's location, calculate its "look at" rotation using the enemy as the target, and then use the resulting forward vector as the cone's direction. This method ensures the orbs always fly away from the enemy in a unique way.
Stagger System
Respawning
Our inspiration from Souls-like titles extended to our respawning system as well. When the player rests at a signpost, all enemies return to their initial state. My job was implementing a system where we used as few resources as possible to respawn the dead enemies.
Upon death, an enemy's body ragdolls and the AI will un-possess it. To reset the character, I removed the ragdoll effect, reattached the capsule component to the actor, cleared any effects from the Gameplay Ability System, reset the UI, and teleported the character back to its original position. I dubbed this technique the "Frankenstein Respawn" since no new assets were created, we're just reusing parts like the good doctor did. ​
AI Prediction
During production, enemies frequently had trouble tracking the player around obstacles. I made a straightforward prediction system to anticipate the player's movement after disappearing from the enemy's line of sight.
When an enemy loses sight of the player, the system calculates a search point using the player's velocity, location, and estimated travel time. This allows the enemy to "predict" where the player will end up after said estimated time. The enemies run to where they've calculated the player to be, and if not found, search the area.
My team was enraptured by stamina and posture mechanics from Star Wars Jedi: Fallen Order and Sekiro: Shadows Die Twice respectively. As such, the group designed our interpretation of these systems. After initial prototyping, my job was to create a versatile system that integrated existing code, unified the prototype UI, and was guaranteed future-proof.
I began by implementing the concept into the C++ code for our base character, used for both players and enemies. I created several Unreal properties and functions, such as Staggered, BeenStaggered, DrainStagger, and ResetStagger. On a completely unrelated note, I would love to learn your coding convention.
The BeenStaggered function triggers when a character's current stagger amount exceeds their maximum, setting the Staggered property to true and stopping current actions. This initiates DrainStagger, which decreases the stagger amount until it's zero. ResetStagger then resets the stagger status and unlocks movement.
The UI element above enemies' heads displays the stagger amount and only appears when the player damages an enemy. If left alone, the bar disappears.
AI Reactivity
At the end of November, the team knew our combat system was dry and lacking excitement. We let the public playtest Isles at the Shawnee Game Conference, and the feedback wasn't stellar. This led to a massive restructuring and revitalization of the combat mechanics. My responsibility was to enhance enemy reactions to player combat actions.
The AI reactivity is divided into melee and spell responses, each with its own intricacies. Here are the basics:
Melee reactions are triggered when an enemy is hit by a sphere trace, originating from the player's position and extending a bit past the attack's endpoint. If an enemy is within this space during an attack, they have a chance to react. Enemies will either block the attack or dodge away from the player, with a strong preference for blocking.
Spell reactions work similarly but are categorized into three subtypes: projectile, area of effect, and buff. Different sphere traces are used for each spell type. Since blocking does not mitigate spell damage, enemies will always dodge away from incoming spells.
What I learned
Fostering Collaboration
Organizing informal team gatherings and game nights helped build friendships and promoted open dialogue, enhancing collaboration and understanding across disciplines. Maintaining a positive and supportive team environment is crucial for motivation and productivity.
Have Other People Play Your Game
Incorporating feedback from our playtesting sessions at SGC revealed faults we hadn't noticed. Fresh perspectives from players unfamiliar with the project were invaluable.
Importance of Clear Direction
Initially, my team lacked direction and included mechanics based on personal preference. As design director, I aimed to streamline the game and provide cohesive guidance.
Recognizing and Leveraging Strengths
Engaging with my team members to understand their strengths and interests allowed me to leverage their unique skills effectively. Recognizing and utilizing individual strengths enhanced our overall team performance.
Gallery

Almost all of us together for the final presentation.



Almost all of us together for the final presentation.