top of page

Wisp'er

Wisp'er is a platformer game in 2,5D with a Halloween theme.


Pitch: Our game is a mix between the gameplay of Ori and the mechanics of Hyper Light Drifter in a world inspired by Little Nightmare.

Synopsis: The player embody the soul of a recently deceased orphan. His soul is in a cemetery and on the first night of Halloween, his little brother comes to visit him at his grave. Our hero, wanting to spend a moment with his brother, undertakes the project of following him home. But death refuses and warns him that if he disobeys, he will become a fugitive and without light he will disappear forever. Ignoring death's orders and threats, the young man rises from the grave and becomes a Will-o-wisp. Thus, a race against time begins between our hero and death and his henchmen. Will his desire to see his brother overcome all the dangers? Will he manage to see his brother for the last time? 

Project Context

Wisp'er is a project done during a Workshop  at the Game Sup school. Completed at October 2022, in 14 worked days.


We have to make a platformer 2,5D with a Halloween theme and a set of mechanics. We also have to implement a secondary feature. We choose : Fight.

My tasks in this project

  1. Checkpoint System | Blueprint

  2. Save System with Checkpoint | Blueprint

  3. AI Monsters | Behavior Tree, Blueprint, Nav Mesh Link

  4. Loot & Drop System | Blueprint

  5. Implement Animations for Monsters | Animation Blueprint

  6. All Menus (Main Menu, Pause Menu, Load/Save Menu, Splashscreens) | Widget Blueprint

  7. Documentation Tech | Draw.io (UML)


 

Task #1: Checkpoint System

When the Player Character crosses the checkpoint, it saves it as the last crossed and fullfill the Player Character's health.

When the Player Character has no health left, he is teleported to the last checkpoint crossed and his health is replenished.

 

TAsk #2: Save System with Checkpoint


At the same time as the checkpoint is passed a Save is made, which save:

  • the current level, 

  • the date,

  • the last checkpoint & its location

  • the health of the Player Character


So, when the save is loaded, the Player Character will spawn in the right level and at the last checkpoint.

There are only 3 save file locations. When the game is launched, the player chooses the save location where their progress will be saved.

 

TAsk #3: AI Monsters



There are 2 AIs:

- Little

- Big

If Little doesn't see the player character, he wanders around the zone. When the player character is detected, Little chases him. When Little reaches the player character, he attacks him. Little cannot jump.

Big is static until he detects the player character. Big chases the player character as soon as it is detected, and Big can jump between certain platforms. When Big reaches the player character, he attacks him.

For jumping I created a Nav Mesh Link child. The jump is simulated via a spline, the AI will follow the spline throughout the jump and before following the spline I update the AI animation for the jump.

 

TAsk #4: Loot & Drop System

When Little died, a point of light was dropped.

This point of light, when the Player Character passes over it, allows him to heal.

Big can't be kill.

 

TAsk #5: Implement Animations for Monsters


Little animations:

Idle, Walk, Run, Attack, Hit

Big animations:

Idle, Walk, Attack, Start Jump, Jump Loop, End Jump

All animation come from Mixamo.

 

TAsk #6: All Menus



All Menus respond to a controller &/or mouse, yso you can toggle the menu response between controller or mouse. There a Widget for Main Menu, Pause Menu and Splashscreens. In the Main Menu Widget or Pause Menu Widget, there are sub-menus for each, managed via a Widget Switcher. Splashscreens are managed by an animation.

 

Task #7: Documentation


Before start to program anything, I always start to create a Quick UML. In order to think and fix a structure for my code, and where functions or variables should be in the code, and and who detects what.

Here the quick UML done at the start of the prototype for my tasks:


bottom of page