top of page
  • Holly

Launch Title (Weeks 11 + 12) - Cutscene System & Wolf AI

As we were getting towards the last set of weeks, I realized I'd need to start prioritizing work on the game's narrative-related systems and details.


New Player Sprites


To start with, now that the animators on the team had finished the movement sprites for the character, I got those imported and set up properly in-game:


Yang Companion AI


The next most important thing, and one of the most common bits of feedback we received, was getting the player's wolf companion Yang represented in the game world.


This was a fairly straightforward process and only required setting up a basic animation blueprint and an AI that tries to stay within a certain radius of the player character. The one area of difficulty was something I hadn't anticipated at all; how the AI would navigate platforming sections.


I hadn't taken the companion AI into account at all when designing the forest section's layout




The solution involved making a custom Navlink Proxy that would bridge the gaps in the Navmesh, and once reached would launch the wolf actor so that it lands on the other end.


The tricky part of this was figuring out how to calculate the correct velocity for the wolf to make the jump, especially since it would have to deal with gaps of varying height. Luckily I found a video tutorial specifically going over how to achieve this in Unreal: https://www.youtube.com/watch?v=wW4t5QxOQaE


The result in game looks like this:


While it looks quite silly without a proper jump animation yet, Yang is now able to reliably navigate all of the platforming sections in the level so far.


New approach to Night World Visuals


While the previous post-process method of achieving the Night World's visuals worked mostly well, it was hard to control exactly how particular objects would look.

Only one colour of object could become highlighted red by the effect, and everything in the level would be affected.


There was also no way of having certain objects of effects be excluded by the effect, such as the player character or enemies. I wanted to make sure that different elements in combat were clear and easy to distinguish, and since all combat would take place in the Night World, it wasn't possible to achieve this with the current setup.



The new solution works as follows

  • Each material that needs to change in the Night World will make use of a 0-1 value from MPC_NightWorld, a material parameter collection.

  • Based on this value, the material will interpolate between its regular Base Color result and the one for its appearance in the Night World (usually just a desaturation node).

  • In the NightWorldManager blueprint, the value in MPC_NightWorld is updated to 1 when the Night World is active, and 0 when it is not.


This allows for different visuals on a per-object basis, giving much more control over the look of the Night World. The downside is potentially having to set this up for every object's material, but this can be mitigated by making good use of master materials and material instances.


You can see some of the differences in result below:




Cutscene System


Another thing I decided to work on was some sort of cutscene system that would integrate the existing dialogue boxes with animations and camera-movement. I specifically was interested in adding this in response to a lot of feedback we received on how certain narrative elements weren't being conveyed well enough.




  • System uses the same dialogue widget as usual

  • However, they are controlled by calling a cutscene controller actor's functions from a level sequence

  • After calling the function to display a dialogue box, the sequence can call another to pause the sequence until the player has progressed through the dialogue.

  • This way we can make sure certain events are properly synced to the dialogue.


To demonstrate how the system works, and also to put more emphasis on the player's first entrance into the Night World, I made this short cutscene:


Water Material


Initially we were using Unreal's built-in water plugin for the rivers throughout the level. While it worked fine in the editor, once we tried packaging the game for playtests we discovered a strange bug where all water would be stuck above the level at 0 on the Z axis.


After most of the fixes online failed to make a difference, I decided to take it as an opportunity to develop a water material myself. While the plugin's water would've worked fine, I thought it would fit the game's art style more to have something that looked more stylized.


Since I wasn't familiar with how water effects are usually achieved in materials, I mostly followed this tutorial video to figure out the basics before trying anything else:


After seeing how the ripple effect worked, I was able to use a similar technique to create a more stylized shoreline effect along the edge of the water.



Here's an example of how it looks in-game:


2 views0 comments

Recent Posts

See All
bottom of page