Fehér Lufi

2023 "Lyukas a lelked"

Summary

This is the third game of the Freezing World Pentalogy, a series of five rapid prototypes created for a university module, and was developed within three or four days of work using Unity visual scripting. It's a top-down multi-phase horror boss fight, playing as a spirit fighting off the titular white balloon.

Overview

A parental instruction of "don't go out into the garden alone because there's a small lake" turned into a Hungarian horror story about a white balloon full of knives, which was the narrative basis for this game. I primarily used a premade tileset to save time, opting to add a colour filter onto a gameboy-styled tileset to create a dark environment shrouded in one main colour. I also heavily experimented with multiple layers of particles for the playable character and for abilities. For gameplay, I took inspiration from twin-stick shooters but created a horror-esque chase sequence followed by hunting the chaser down, in a power shift that still keeps the player on the weak side, as we were instructed to create a boss fight for this prototype.


Video Playthrough & Commentary

Pop out to watch in full screen.

Documentation (GDD & LDD)


Contents


Introduction

Summary

Key Features

Game Mechanics

Core Gameplay

Player Mechanics

Level Mechanics

Boss Mechanics

Level

Overview

Level Elements

Pacing & Flow

Interface

HUD

Other Screens

Art & Audio

Artwork

Animations

Sound


Introduction


Summary

Based on a twist of a Hungarian children’s horror tale, you play as a deceased spirit that made the foolish decision to go out into the garden at night, not heeding your parents’ warnings about the white balloon (“fehér lufi”) out there that chases you with bloodthirst. Armed with only a spiritual pushing ability, you must find and throw needles at the balloon until it pops to reveal the thousand knives within; but its deflated husk still chases you, so you must fill it with helium from a discarded container to send it into the sky forever.



Key Features

The game features one boss level with a top-down perspective. The player can move in any direction, with the offensive mechanic of throwing needles in any direction once they’ve collected needles from the level, and the defensive mechanic of pushing away the balloon boss with a cooldown. The boss features three main phases; a first chase phase which is invulnerable until the player collects the needles, a second attack phase that throws knife projectiles when its health reaches 65%, and a third deflated phase once its health reaches zero, needing to be guided into the level’s helium tank to be defeated.



Game Mechanics


Core Gameplay

The primary and secondary verbs of the game shift with the phase of the boss. In phase 1, when the balloon chases the boss, the primary verb is “avoid” by both running away from the chasing boss and navigating through the busy lower section of the level with solid obstacles like rocks, gravestones and lines of trees, with skilled players seeking diagonal paths as horizontal and vertical speed is additive on diagonals. This avoidance is aided by the secondary verb “push”, which asks the player to press the spacebar to radiate a circular force-field around them to push the boss away. Skilled players can time the balloon getting closer for a stronger push, as well as angle themselves around the balloon for an optimal direction for the balloon to be flung.


Once the player obtains needles, the balloon still chases them at the same speed so avoiding and pushing are still important. However, when the player feels they are in an open enough area, they can incorporate aiming and throwing their needles at the boss to begin deteriorating its health. Once the boss enters phase 2 proper at 65% of its health, it slows down and begins throwing knives as projectiles. Pushing is now much less effective as it only defends against the balloon’s contact damage, and cannot push away projectiles, so “aim” and “throw” rise on the priority list to be on par with “avoid”.


In phase 3, once the boss’ health bar is fully depleted, the balloon remains slow but no longer throws projectiles, so “aim” and “throw” become useless and “avoid” is reduced to minimum priority as it’s now far easier. The primary verb here is “push” to help guide the balloon to the helium tank for its unconventional defeat. If the player is trying to push the balloon into the tank instead of hiding behind it, their aim with the mechanic from their experience in the first phase is paramount, to angle the balloon’s path into the small gimmick’s trigger volume.



Player Mechanics

1) Movement: The W, A, S and D keys can be used to move in any of the four directions. These are on axes, so free movement is possible like on a thumbstick. Since the axes are dealt with individually, diagonal movement is the fastest option.


2) Spirit Push: The spacebar can be pressed to create a large radial circle around the player, pushing away the boss. The boss is pushed further based on its proximity to the player; the closer to the player, the more effective the push. The push has a five second cooldown, indicated by a refilling meter in the HUD, so pushes need to be critically timed to avoid being wasted while the boss is far from the player.


3) Needle Throw: Once the player has obtained needles from the level, they have an infinite supply of needles that can be thrown at a set rapid rate by holding down the arrow keys. These use the same two-axis system as the movement to determine the needle’s direction in 360 degrees, but the needles self-propel at a constant speed so needle speeds are consistent. Needles disappear if they contact the level’s colliders, or on contact with the balloon which damages the balloon. Consider the arrow keys as the right thumbstick in a twin-stick shooter, if movement is considered the left thumbstick. The disappearance of needles on contact with the level was in response to feedback.


4) Damage: If the player comes in contact with the balloon, or any knife projectile the balloon throws, the player instantly dies and goes to the game over screen.




Level Mechanics

1) Physical obstacles: There are rocks, trees, stumps, gravestones, bushes and fences across the level that impede physical movement with colliders. Rocks and graves typically create small avoidable roadblocks, while trees, bushes and fences form large sweeping walls to find paths through or around, fences in particular denoting impassable borders. The top halves of gravestones and trees can be walked behind, with the latter turning transparent when the player is behind that tree for visibility. In response to feedback, the density of obstacles was slightly reduced.


2) Box of needles: There is a box of needles at the bottom of the garden with solid collision. When the player touches the box from any side, they collect the needles within and unlock the Needle Throw, visually emptying the box and turning it into a generic physical obstacle.


3) Helium tank: There is a helium tank at the top of the garden, which at first seems to be another physical obstacle. At the end of the boss fight, once the balloon enters phase 3, it’s revealed that the player must guide the undead deflated husk of the balloon to collide with the helium tank in order to send it into the sky.



Boss Mechanics

1) Chasing: Once the player first enters a certain radius of the initially-still balloon, it continuously chases the player for the rest of the boss fight, moving directly towards the location of the player through any terrain. The balloon first moves at a fast speed, until it enters phase 2 at 65% health, where it moves at a reduced speed for the rest of the boss fight from then on.


2) Health: The balloon begins at 100% health. At first the balloon cannot be damaged, as the only damage source is via the player throwing needles at it. A health bar appears on the HUD once this is the case, indicating the boss’ health as a full bar. Once the health reaches 65% the boss enters phase 2, and at 0% health it enters phase 3.


3) Knife throw (phase 2): On entering phase 2 the balloon’s sprite changes to appear slightly damaged, and it begins throwing knife projectiles at a rapid rate in a random 360-degree direction each time, forcing the player to keep their distance and react quickly. Knives pass through any terrain.


4) Deflated (phase 3): On entering phase 3 the balloon no longer throws knife projectiles. In this state, if the balloon makes contact with the helium tank, it instantly “dies” and the game enters the win screen.



Level


Overview

The level is in the theme of a garden, with the back of the garden ending in bushes at the top, and the front of the garden at the bottom with a building-like barrier. Broadly the level is separated into two halves; a more open top/back of the garden, and an obstacle-laden bottom/front of the garden.


More specifically, the player begins in a small fenced box at around the centre of the garden, with an open path only available upwards to a clearing of stumps, where the balloon resides. On exiting this fenced area the player is forced to trigger the balloon’s chase sequence, beginning the boss fight. On either side of the fenced area and slightly below it, grids and rows of relatively uniform obstacles (with additional rocks to add chaos).


Beneath, the bottom of the level is comprised of a zigzag path through sweeping barriers of trees supplemented by rocks and gravestones, with more chaotic rocks along the path to avoid on the way. After zigzagging down, the player can access the needles in a small clearing dead-end, where the player must use their manoeuvring and push to get around the balloon and then be chased back up the zigzag and through the uniform obstacles to reach the clearing. They can still fully attack the boss in the obstacle-laden area, but due to the narrow pathways and needles dissipating on contact with terrain, this is made far more difficult to encourage the player to get chased back up before fully engaging. The difference in the average timings of when the push finishes its cooldown and the approach angles of the balloon, as well as the discovery process of the new ability, makes the backtracking exciting.


In the top left corner of the top stump clearing area, the helium tank is conveniently located to make the process of guiding the boss to it in phase 3 as straightforward as possible.

Left: the various areas of the level. Right: the collision of the level (<>: tree transparency scripts).

Level Elements

See Game Mechanics > Level Mechanics for more details.


1) Physical obstacles: Block the player’s path.


2) Visual foreground: Player can pass behind these. Trees turn transparent.


3) Box of needles: Allows the player to collect needles.


4) Helium tank: Allows the balloon to be filled with helium to defeat phase 3.


5) Decoration: Non-functional decoration.

Pacing & Flow

The golden path begins with the player leaving the enclosed fence area through the only exit upwards. Then, the player is intended to rapidly turn around to escape the balloon, heading downwards on either side through the uniform obstacles. The fastest path is to always be on the right side here. The flow of trees and a few grassy arrows on the ground lead the player down the linear zigzag portion, encourage orbiting around the box in the dead-end clearing to maximise space, and then backtracking up to the clearing at the top of the level, as the safest area to fight the boss in. Finally, to defeat phase 3, the player heads to the top left.


The flow is quite linear, but offers the illusion of choice in both the left and right ways around the fenced starting area, and with the amount of control the player technically has over the level pacing as the boss moves from phase 1 to 3, despite being funnelled to go higher as the fight goes on. Pacing-wise the beginning has no pace, the middle is a faster pace and the end is a slower pace, but the specific pace depends entirely on flow and the proximity to the last action or phase change.

Golden path through the level in gold. Other path options in dark blue. Circles denote an area to fight in.

Interface


HUD

The HUD is comprised of an objective at the top of the screen, showing a non-exact text prompt of what the player needs to do next, and controls along the bottom of the screen. For prototype purposes, the controls are permanently at the bottom of the screen. Also, a dark vignette focuses the view onto the player at the centre.


There are two bars in the HUD: one is a boss health bar below the objective that becomes visible once the player obtains needles, the means by which to damage the boss. Once emptied, this health bar remains on screen in its empty state to emphasise that phase 3 is no longer about damaging the boss. The other bar is the cooldown of the player’s spirit push, just above the controls for the push, starting full and turning empty when pushing, slowly filling back up again as the cooldown finishes.


The HUD solidifies the idea of the player being at the bottom and needing to overcome the balloon boss at the top. In the level, the player starts beneath the balloon and must start by moving up, must gain the tools to defeat the boss at the bottom of the garden, and then deliver the finishing blow at the helium tank at the top of the garden. Mirroring this are the controls at the bottom as your tools against the balloon, with the objectives and goals as well as the health of the boss at the top. From left to right, the increasing push bar and the depleting boss health bar also mirror the left-to-right motions of the zigzag entrance, dead-end turnaround, and final helium tank, with the top left of the screen being the ultimate “uphill” for the player.

Annotated gameplay screenshot of the HUD.

Other Screens

The opening screen is comprised entirely of text on a dark background. It begins with just the prompt to press space at the bottom (which is in the same place in all screens, including gameplay, for consistency). As space is pressed, three pieces of story exposition text appear on screen, of which the last is tinted red. Large text is written in Hungarian, the original language of the narrative, and small text below translates into English, which is consistent for all non-gameplay screens. When space is pressed again, gameplay is entered.


The game over screen features red text explaining the player’s death, with a dark red vignette to signify danger. Meanwhile, the win screen is the most colourful part of the game, with blue and orange sunrise tones as the patched-up white balloon is depicted floating away, leaving the player safe but with looming horror still intact, reflected in the additional story text which is all immediately presented this time. For both the game over and win screens, a single press of the spacebar transitions back to the opening, with a brief half-second buffer period to prevent skipping the scene if pressing space in gameplay to push just before the scene transition.

Top left: opening scene, just before entering gameplay. Top right: start of gameplay. Bottom left: game over screen. Bottom right: win screen.

Art & Audio


Artwork

The core of the game’s visuals uses GumpyFunction’s “Game Boy Top-down RPG Fantasy Tileset”, available at gumpyfunction.itch.io with suitable licensing to be used and edited in this project without credit. The outdoors portion of this tileset is used for the entirety of the game’s tileset and environment. Using its colours, style and scale, I created additional assets for the collectible needles in the container, the helium tank, and the needle and knife projectiles. At the same scale but with unique colours, I also created the core of the pink player sprite and the various stages of the deteriorating white balloon sprite. All of the greenish Game Boy sprites were recoloured with a dark blue tint in Unity to create a dark unlit feel (with the exception of the needle and knife projectiles, which in response to feedback were tinted a stronger blue and red to give them visibility and to differentiate them with a good/evil colour scheme). Key aspects like the needle pile and the helium tank were made slightly brighter to subtly draw the player’s eyes to them.

The full outdoors portion of the tileset by GumpyFunction, partially used in the game.

The UI and HUD of the game was instead created using the free-for-personal-use font “N8ghtmare” as a distorted, horror-y heading font, and “Megufont” as a more legible subtitle font in a more hand-drawn style (which I obtained permission to use from its creator Megu). Various characters from N8ghtmare such as underscores and the lowercase L were also combined together to create the graphics for the health bars, and the outlines of the keys in the controls.


For the player character, pinkish particles were used intensively to add a glowing flare to the ghostly spirit. Local particles create a flame effect flaring upwards off of the player, while global particles create an aura around the player but also a twinkling trail behind the player to emphasise movement direction (which helps to convey that the player can move in 360 degrees). When using the spirit push move, particles are emitted from the player in a rapid and large radial blast outwards, explaining the push effect without having any direct effect on its function.

Various examples of the player’s particles. Top left: standing still. Top right: moving to the right. Bottom: moving up and right and briefly stopping. Note how the character sprite itself is just a tiny pixel circle.
Screenshot of the spirit push particles. In motion, they look blurrier and more full due to their sheer speed and the colour gradation as they travel further from the player.

Animations

Aside from the automated particle animations, there is very little animation present in the game. As a stylistic choice, a more static unanimated screen makes for a more tense, spooky atmosphere with the implication of death and haunting stillness.


The various phases of the balloon boss feature sprite changes which technically constitute an extremely slow gradual animation. The balloon is smooth at first, but then begins to show some holes in phase 2. On fully deflating and entering phase 3, the balloon’s shape is more melted and destroyed with sections floating near it. In the win screen these holes are seen to be patched up to contain the helium that sends it skyward.

Deterioration process of the balloon, and its patched-up appearance in the win screen.

Otherwise the main animated element is a script on most UI and HUD elements that quite violently but still legibly shake the text and health/cooldown bars, giving the impression of the UI quivering in fear or shaking with twisted evil. The ending screen is more still to create a sense of finality, but features shaking phantoms of the spacebar text to ease it back to where it’s previously always been, telling the player that the spacebar resets the game from the brighter future of the ending into its darker main loop without explicitly saying so, with the vibration creating anticipation and fear.



Sound

The game’s audio is atmospheric, dynamic and dissonant to create a horror feel through its soundscape, using only a variety of CC0 sounds.


The intro screen features chaotic, reversed and distorted pianos to bring the player to the start of the experience. Every space press in the menu creates a static noise as if changing channels on a TV.


At the start of the gameplay, an ambient hum is heard that continues for all of gameplay, with an additional dissonant piano playing erratic yet rhythmic notes. Tense quivering strings and a pulsing, breathing and heartbeat-like ambient noise are added as soon as the balloon is made aware of the player and gives chase. On collecting the needles, percussion blasts into the soundscape most likely off-beat, but still without much of a solid pattern, focusing on echoing jingling bell noises instead that further ramp up the tension to its peak. The player’s actions of pushing and throwing needles are accompanied with soft whooshes, while the balloon has a harsh plastic stretching crackle as it accumulates damage. It pops quietly yet still harshly as it changes to its second phase, with more harsh blade noises as it throws knives in random directions, in contrast to the consistent rhythm of the throwing noise. As the balloon’s health is depleted to zero, it pops again much louder, and the music cuts to just the ambience and a new slower bell noise in haunting tones, signifying the end of the battle but not the end of the war as the balloon can still harm the player. The pulsing ambience also remains, to signify danger.


The win screen features more mellow synths playing a similar melody to that of the piano in the gameplay, with crackling vinyl static to maintain the atmosphere. This is a win but ultimately still maintains the horror aesthetic with the contemplation that the balloon is still always watching you from above. The game over screen instead plays three haunting echoing squeals before fading into an endless silence, creating a dark sense of finality in the death of the player’s spirit.



In-game tileset: Game Boy Top-down RPG Fantasy Tileset (GumpyFunction)

In-game fonts: N8ghtmare, Megufont

Site font: Atkinson Hyperlegible


Apart from the above, all content was created by me, CactusMagelord, unless otherwise stated.



"There's a hole in your soul."