Back to Portfolio

An original IP Souls-like melee boss fight developed with a team of 16 across 5 disciplines. Sunset Ecstasy centres on a modular Sun & Moon stance combat system where the player is constantly encouraged to change how they play mid-fight, backed by a bespoke HUD and a boss fight built to feel overwhelming and impactful.

Type Group Project
Team Size 16 across 5 disciplines
Duration Nov 2025 – May 2026
Engine Unreal Engine 5

MY ROLE

Combat & Movement

Co-Programmed

Co-programming the player's combat and movement system, including the Sun and Moon stance abilities that make up our core USP.

Boss Attack Patterns

Co-Programmed

Co-programming the boss AI and attack patterns, from simple prototypes right through to a fully polished set of animated, feedback-rich attacks and environmental events.

HUD & Sun / Moon USP

Owned

Owning the main character UI from first sketch to final polish, iterating on it constantly to make sure players could actually read our core Sun and Moon USP without being told.

Tutorial Layout

Owned

Designing the tutorial layout and the key information the player needs, then building the tutorial events themselves so players walk into the boss arena knowing what they need to know.

THE DESIGN CHALLENGE

Ambition. An original IP Souls-like boss fight with a 16 person team spanning 5 disciplines. The combat had to feel modular and impactful and actively push the player to change how they were playing mid-fight rather than settle into one pattern.

Constraint. Every system I owned had to be readable without us sitting next to a player explaining it. If a mechanic needed us to point at the screen for it to make sense, it was not doing its job yet.

Approach. Short iterative playtesting loops on every system I touched. Keep the ideas that landed, rethink the ones that did not, and only move on once players were interacting with the mechanic the way we intended without being told.

DESIGN ITERATIONS

Four systems, each rebuilt from playtest feedback until they held up on their own. Click any iteration to open it.

01

Main Character UI

The HUD is where the player reads our Sun and Moon USP. Getting it clear enough that players could work it out on their own without us explaining took four iterations.

Iteration 1

Circular sun / moon bar

Players liked the symbolism but nobody grasped the mechanic without us explaining it.

Main Character UI iteration 1

The first design had a circle split into a sun half and a moon half, with segments that filled as you hit the boss in that stance. Around it sat three healing flask segments, and filling a full side would unlock an ultimate. If the player was not consistently hitting the boss the bar would drain back to the last full segment, pushing them to stay on the offensive.

What we learned. Players liked the sun and moon symbolism, but never grasped the mechanic without us explaining. They did not realise the side segments were healing, the bar drained too fast to reward a combo, and they could not tell which stance they were currently in.

→ Find a way for the player to see which stance they are on at a glance.

Iteration 2

Flame flip-book stance indicator

A quick flame animation ended up being one of the most impactful changes I made to the UI.

Main Character UI iteration 2

A quick change that ended up being one of the most impactful things I did on the UI. I whipped up a 2D flip-book flame animation that glows blue on the moon side when you are in moon stance and orange on the sun side when you are in sun stance. The animation draws the eye straight to the HUD so players see the change without me having to point at it.

What we learned. Players immediately understood which stance they were on and could form their own mental model without being told. Some noted it did not quite make sense that the moon had a fire effect on it.

→ Try a more custom effect for the moon side, and keep pushing the wider bar redesign.

Iteration 3

Elden Ring inspired overhaul

Familiar Elden Ring inspired layout felt cleaner and more professional, but players still got confused about which stance they were on.

Main Character UI iteration 3

A complete overhaul of the health and Sun/Moon bar. I took inspiration from Elden Ring so the layout would feel instantly familiar, then added our USP elements on top. The sun sits on top of the bar and the moon on the bottom, with the healing charges parked on the far right. A simple red health bar and green stamina bar keep the rest of the HUD from being confused for something it is not.

What we learned. Players who had played the earlier version much preferred this one and said it felt cleaner and more professional. But some still got confused about which stance they were on, the gap between the health and stamina bar felt out of place, and players did not notice the bar filling up unless it was pointed out.

→ The UI needs more movement, and the current stance needs to be even more obvious.

Iteration 4 (Polish)

Everything at once

Pulled all the earlier lessons together with rotating stances, glowing progress inside each segment and small orbs flying from the boss to the bar on every hit.

Main Character UI iteration 4 polish

The final polish pass pulled every lesson together. The Sun/Moon circle now rotates so the active stance is always on top with the inactive one desaturated at the bottom, glowing effects inside each segment show progress, and I brought the flame effect back with a custom moon wave to fix the "moon on fire" complaint. The opacity of the effect ramps with the bar's fill so players can feel their progress.

On the charges side, an external suggestion led me to flash the last remaining healing charge so players know it is their last one. When you switch stances the matching charge type moves to the top. To sell the fact that hitting the boss is actually filling the bar, I added small orbs that fly from the boss to the bar on each hit, drawing the eye across.

Verdict. Players finally read the UI the way we intended without needing to be told. It still feels unique but every element uses UI theory the player has seen before, which is the balance we were chasing from iteration 1.

02

Boss AI System

The whole game is one boss fight, so the encounter has to carry the experience. Four iterations went into a boss that feels overwhelming, varied, and impactful.

Iteration 1

Left swing, right swing, slam

Only three attacks and no animations, so players understandably found the fight repetitive and unimpactful.

Boss AI iteration 1

The first iteration had exactly three attacks and no animations, so the boss was still the default Unreal mannequin. That made it hard to pinpoint whether issues were mechanical or presentational, but even at this stage players called out that the attacks were repetitive and the hits did not feel like they were actually hurting the player.

What we learned. Players liked the sheer scale of the boss but everything else felt flat. Impact is not a single feature, it is a stack of small feedback tools that need to be layered on together.

→ Research feel-good techniques (camera shake, controller vibration, hit-stop, VFX, SFX) and start adding attack variety.

Iteration 2

Jump attack and crystal shield event

Players loved the variety of a jump attack and a crystal shield event, but the shield event felt like a safe cooldown rather than an actual threat.

Boss AI iteration 2

Got a placeholder boss mesh in and added two attacks that did not need custom animations. A jump attack that closes the gap when the boss sees you, and a crystal shield event where the boss retreats to the centre, spawns three orange or blue crystals that power a shield, and heals inside it until the player breaks them. The orange and blue crystals tie the environmental attack to the same Sun and Moon USP the player uses.

What we learned. Players enjoyed the puzzle of destroying the crystals and the sense that the boss could actually see them. But the jump attack slid on landing due to a bug and had no anticipation, the crystal event felt like a cooldown because there was no danger during it, and players did not realise the boss was healing.

→ Fix the jump feel, add real danger to the crystal phase (meteors), and telegraph the healing on the UI.

Iteration 3

Meteors, criticals, and a real boss mesh

Meteors, criticals and a real boss mesh made the fight feel genuinely dangerous, and the critical damage exchange became the moment players kept pointing at.

Boss AI iteration 3

Got the proper boss model in so animators could start working, then layered on a lot at once. Meteors now fall during the crystal shield event so the player cannot sit safely. A critical damage state triggers when the player deals enough damage or perfect blocks/dodges enough times, making the boss kneel for a heavy special attack that both player and boss animate together. The health bar shifts to a crystal overlay with a green hue when the boss is healing, and turns red in critical state so players know he is vulnerable. A Juggernaut-inspired poison sprint attack rounds it out, with the boss creating AOE poison trails at semi-random locations.

What we learned. Players loved the sense of scale, the meteors added real pressure to the crystal phase, and the critical damage exchange was the moment they consistently pointed at as the most engaging bit of the fight. They wanted proper custom animations, meteors that actually track the player, and a smarter poison attack.

→ Prioritise custom animations and locomotion, then push the meteor and poison attacks further.

Iteration 4 (Final)

Fully textured boss, everything wired up

The final polish pass layering camera shake, controller vibration, custom animations and every other feedback tool into a boss that finally feels the way we wanted from day one.

Boss AI iteration 4 final

The last iteration is where all the earlier feedback pays off. A list of what we layered on to sell the power we were aiming for from day one:

  • Varied camera shake per attack so the intensity scales with what the boss is doing
  • Controller force feedback on player hits
  • Sharp accurate audio pinned to every animation
  • Custom animations across attacks and locomotion
  • Deliberate animation length variation so the player can never fully predict what is next
  • Environmental attacks so the boss uses the whole arena
  • Real-time boss/player interaction on the critical damage attack
  • A modular knockback system where the direction and force match the attack (upswing sends the player airborne, slam pushes them away)
  • Dust, rock and energy VFX to sell the mass of every impact
  • Camera angling that makes the boss loom above the player, especially on the jump-launch attack

Verdict. The boss finally reads the way we wanted from iteration 1: overwhelming, varied and impactful. If we had more time I would push the phase 1 to phase 2 transition into a proper cutscene and add more environmental attacks that reshape the arena mid-fight.

03

Tutorial Crystals

The final tutorial event before the boss arena. Its job is to teach weapon switching and basic combat without spoon-feeding the player.

Iteration 1

Cracked pillar blocking the path

Blocking the intended path when there were two visible open hallways to either side was the wrong choice, and players kept trying to go around it.

Tutorial Crystals iteration 1

A fallen pillar blocks the corridor, with cracks that spread and glow the more the player attacks it. Enough hits and the pillar splits and flies aside, opening the path. Players understood the "keep hitting" cue but the scene felt static, two open side corridors made them think they should go elsewhere first, and some tried to walk around the pillar and hit an invisible wall.

What we learned. The glowing cracks worked as a visual cue. Blocking the intended path with two visible alternatives to either side was the wrong choice.

→ Close off the side corridors, drop the second pillar-based obstacle (we had one at the start), and try something that visually reads as an enemy instead.

Iteration 2

Pulsating flesh ball

Visually much more eye-catching than the pillar, but the flesh ball had no in-world context and the forced weapon-switch pause was really jarring.

Tutorial Crystals iteration 2

Swapped the pillar for a placeholder pulsating meatball with a subtle inflate/deflate to make it feel alive. Added an "attack with glaive" prompt, and when the player got close the game paused with a UI screen forcing them to switch weapons. Blood splatters across the walls when it dies.

What we learned. Visually much more eye-catching than the pillar, and closing the side corridors fixed the navigation confusion. But the flesh ball had no in-world context, the forced weapon-switch pause was jarring, and once players discovered weapon switching they kept toggling and got confused why the ball was not dying.

→ Find a themed obstacle, teach the mechanic without pausing the game, and make the puzzle a bit more of a challenge.

Iteration 3

Two crystals, one puzzle

Two crystals mapped to the sun and moon stances, which also primed players for the boss's crystal shield event later in the fight.

Tutorial Crystals iteration 3

Swapped the flesh ball for two crystals, one orange and one blue, that map to the sun and moon stances. Simplified the prompt down to an action key and a symbol. Walking up to the wrong crystal tells you to switch, then to attack. It also teaches the crystal shield event the boss uses later, so the player walks into the fight already primed for that mechanic. Breaking both crystals drops a shield that opens into the boss cutscene.

What we learned. Players loved the visuals, the fact that they had to discover the puzzle themselves, and the way the orange/blue immediately reinforced the Sun/Moon USP. Nailing the theme also meant the tutorial finally felt like part of the world.

→ Polish: crystals felt too fragile, needed more SFX/VFX, and the shield door needed to match the game's aesthetic.

Iteration 4 (Polish)

Polish pass

A quick polish pass increasing the crystal health, adding shatter sound effects and redesigning the shield door to fit the game's aesthetic.

Tutorial Crystals iteration 4 polish
  • Increased crystal health so it takes three hits to break
  • Added crystal-shatter sound effects
  • Redesigned the shield door to fit the game's aesthetic

Verdict. The tutorial teaches weapon switching, basic combat, and the crystal shield mechanic all in one 20-second moment without a single line of instructional text.

04

Falling Pillar

The very first tutorial event, teaching the player how to dodge. It has to make dodging feel important without killing the player before they have learned anything.

Iteration 1

Cinematic QTE dodge

Players liked the cinematic pull-out and the QTE feel of the moment, but the tutorial popup felt spoon-feeding and there were no real stakes if you missed.

Falling Pillar iteration 1

A massive pillar comes down as the camera pulls out and the scene desaturates into black and white, giving it a QTE feel. Players liked the cinematic pull-out and the intensity of the moment, and difficulty felt fair for a first mechanic.

What we learned. The blatant tutorial popup felt spoon-feeding, players could not lose so there were no real stakes, and the physics-based rock fall made the pillar feel too light for its size.

→ Kill the popup, add real consequence, tune the fall to feel weighty.

Iteration 2

Consequence and framing

Killed the popup, added lethality and framed the camera properly so the tutorial actually had real stakes to it.

Falling Pillar iteration 2

Built the pillar around configurable fall points in Blueprint so I could quickly tweak speed and shape whenever the level art changed around it. Replaced the popup with a simple action-button icon that follows the pillar as it moves. Missing the input now crushes the player and restarts the section, so the tutorial finally has stakes that match what the dodge will actually be defending against later. Added an anticipation slide before the pillar drops so the beat feels less abrupt.

What we learned. Players preferred the diegetic prompt over the popup and responded well to the added stakes. No major complaints beyond wanting more sound/VFX and a better ground-impact look.

→ Polish pass on juice.

Iteration 3 (Polish)

Sound, dust, timing

Final polish pass adding sound effects, dust VFX and a bit more variety to how the debris spreads on impact.

  • Tuned a handful of time values on the fall and impact
  • Added rockslide and ground-impact sound effects
  • Added dust VFX for the slide and impact
  • Reworked the column impact so debris spreads with a bit of variety

Verdict. The first minute of the game now teaches the dodge with real consequence and enough atmosphere that players do not feel handled.

Play on Itch.io