In this project, I worked on an ex-Transfuzer game called FOQUES for TVM Studios. To note this game is still in development as of writing this and my work shown here is still in the live project. This assignment was to create a scent mechanic that directed the player around the map in a unique way. in this project, I used a combination of modular programming, tool creation, spline programming, particle systems, and post-process effect to create the outcome.
In totality, my contributions to this assignment added to a unique aspect that is in the game which makes it more individual compared to other titles. This task was a rewarding experience that allowed me to work on a larger project set by someone else. The project’s context meant there was a goal to achieve within a time limit, it was good practice for the industry.
Spline System
The spline system works in a less common way. As we don’t want it to point in a straight line but to follow the ground and also have some variation I thought I is best to use the Nav Mesh data in order to inform the spline direction. Using this I am able to get the points along a navigation path from the player character to the target.
Using this system I am then able to move my particles across the spline using a simple mathematical equation that gets the length of the spline and the distance that a point is on it, then transforming an objects position to make it move to a different position. This is then easily applicable to using a timeline which can then be used to simply send an object along.
Post-Process
The post-process in this project was quite a simple concept. A simple desaturation and then being saturated again in a purple hue. However, There were two things that were complex about this simple Post-Process. One is that the Post-Process required a mask so that the colours of specific particle systems were visible without the effect of them becoming purple. and the other was a way to fade in and fade out the effect through programmatic control.
The solution to the first was not as simple as you would first think, as using the intended tool a stencil layer would prove ineffective as UE5 didn’t want to render an additive particle system that had a stencil modifier applied to it for whatever reason. To fix this I analysed the different render layers inside of UE5 and figured out there was a specific render layer that handled the emissions that I needed. I used this render layer and applied some simple math to it to make it into a mask that then allowed for my effect to work.
The second element that needed to work was the controlling of the opacity through programming in other sections of the game. In this case, we wanted to control the fading when the button was pressed so it was linked to the player. To do this I had to separate the data from the code and use a material parameter collection. A material parameter collection is stored outside of the code and is accessible to many areas of the engine. This allowed me to change the alpha of the post-process inside of the player character while changing the particle system opacity.
Particle System
The particle system in this project needed to look good, but also it held the functionality of being directional so in balancing these two concepts I went forward to create the best system I could for the job.
One of the first things I did was make sure it was modular so I used user-exposed data to influence the effect of a system. Using the colour given from the Scale RGB value and the opacity from the Alpha value. The RBG being changeable means designers don’t have to edit or modify my particle system after I am finished they are able to through the tools implemented change it on the fly. And the opacity is able to change so that there is a smooth transition when switching view into sense mode in the game, this is changed in the player code.
As for the particle system itself, I went for an optimised approach when it comes to smoke. Using a sub-UV sprite renderer to keep the number of particles down while having a complexity that still looks convincing. and using a combination of scaling, curl noise, drag and wind force I made my sense particle effect.
The main achievement with this particle system is getting the system to point the particles in the direction of the x-axis of a mesh which allowed the particles to follow the intended scent trail and allowed it to effectively act as a way of navigating the ingame world. The post-process material I created displayed the importance of the particle system and took emphasis away from other elements in the scene temporarily. I optimised the blueprinting inside of the project specifically the scent mechanic, making sure it worked well with verticality in the navigation mesh, and also moved the code from the player blueprint into its blueprint object to make it modular and more efficient.
Leave a Reply