The Wisp
By: Sammy Chuang, 3 April, 2025
By: Sammy Chuang, 3 April, 2025
The Wisp is the most important asset in the entire game. As an (on screen) character, the player is looking at them all the time! The Wisp went through several iterations and a lot of technical experimentation. It is a combination of texture and normal maps, baked animations and procedural animation.
The ribbon and Wisp's cloth body's natural movement is done with procedural animation and physics.
The video below is a movement showcase of the Wisp.
The initial implementation of the Wisp was simple and rigid. The ribbon already moved but it was by using Unity's built in splines for generating the ribbon mesh shape and moving it at runtime.
The Wisp had arms that appeared out of its body, kind of like Eve from Wall-e, and used those to hold a bucket or pick up flowers. Early prototypes of the game had the Wisp walking around collecting water to water the flowers. During ideation, we explored a lot of different mechanics but the Wisp was a constant across all of the prototypes! Since the Wisp was so popular amongst early playtesters, we put a lot more effort into iterating and developing the character in preproduction.
Video by: Sammy Chuang
By: Sammy Chuang
As we moved further along, it was clear the Wisp would require a lot of time and resources. We spent a large amount of engineering and animation resources in the summer doing tech tests and iterating on core animations.
Lots of engineering went into making the Wisp look more alive. The ribbon is a procedural animation with a custom spring system. It will bounce around when the Wisp isn't playing a baked animation (eg. picking up a flower), and if the Wisp comes to a rest return to its resting position and bounce idly. The Wisp's body is also using a custom cloth physics simulation which reacts to the Wisp moving and has momentum.
Video by: Richard Ortega-Amezcua
Video by: Richard Ortega-Amezcua
We knew the Wisp needed to have arms, but didn't like the arms coming out from the Wisp's body when they needed to use them. One of our concept artists did an expression concept for the Wisp with a lot of movement in the ribbon, and then thought we could try making the ribbons the arms.
By: Eggsy Zhang
By: Eggsy Zhang
By: Eggsy Zhang
By: Eggsy Zhang
By: Eggsy Zhang
Animation by: Eggsy Zhang
Animation by: Eggsy Zhang
This iteration of the Wisp was starting to show a lot more of the character's simple but charming design in its animations and movement of the ribbon, but we got feedback that the character could still be more lovable. The Wisp's simplicity was a strength in its implementation--the rig didn't need to be too complicated and overall it was easy to animate. But the simplicity also meant we had to be creative with finding ways to breathe more life into it.
We started experimenting with trying to give the Wisp more of a textural feel by making it fuzzy, like Joy from Inside Out and giving it a knit-sweater texture. We liked the overall direction but it was creating a lot of confusion amongst players. It wasn't clear what the material actually was (some even mentioned the fuzz looked like mold!), and one of the project advisors said we were creating a narrative in which deceased spirits are fuzzy, knitted entities. We ultimately decided to scrap the change.
We got a paintover from an advisor that recommended removing the fuzzy emission from the Wisp, and most notably changed the shape of the ribbon.
Changing the shape of the ribbon created some challenges. We had already rigged the Wisp and the ribbon, and the ribbon has a complex in-engine setup to make sure the procedural animation and cloth simulations work. Our biggest fear was having to redo animations. Fortunately, since the ribbon wasn't adding any joints and we scaled up/down the ribbon to ensure joints are still inside of the geometry. It took a little bit of trial and error, and some back and forth between art and engineering, but we finally got it to work and all animations were preserved! Updating the Wisp model wouldn't create in-engine issues. We were then able to properly UV unwrap it and give it a nice new texture and normal map to give the cloth more ruffles!
(Special thanks to [Art Director] for the paintover)
All of the ribbon and texture updates were very well received by players!
Render by: Eggsy Zhang
Model by: Sammy Chuang, Eggsy Zhang
Paintover by: Shelby Zhang
There was feedback that the Wisp's movement wasn't very floaty. The Wisp was able to rotate too quickly and stopped too suddenly. We updated the controller to give the Wisp a little bit of momentum, a slight acceleration and deceleration time, and wider rotation angles.
Original Wisp movement.
Final Wisp movement.
After a lot of work and experimentation, we the Wisp is finished!