Matteo Fardin Portfolio
Freelance programmer from Vicenza, Italy specializing in C++, Qt libraries and Unreal Engine 5
Unreal Engine and Game Development
Unreal Engine needs no introduction; it's loved by many for its incredible features.
When I first became actively interested in game development, Unreal Engine 4 had just been released. I started blindly experimenting with the editor, not really knowing what I was doing at first. Over the years, I've studied how to use it, from exploring the documentation and examples to taking paid courses on Udemy.
I started with C++, a language I was already familiar with, and then moved on to systems that were new to me, like the editor itself, 3D modeling, animating, texturing, and everything else a game might need.
I've practiced with numerous small projects and implemented my own systems to use across them. While most of these never progressed beyond the initial stages, they laid the foundation for my first big project, GOTU.
GOTU
GOTU (working title) is a first-person spell-casting shooter where everything in the environment is voxel-based and fully destructible. The focus of the game is to engage in intense combat, using powerful spells that unleash widespread destruction.
As a solo developer, I've relied heavily on plugins to support my project. I carefully selected tools that best fit my vision and adapted them to suit my needs.
Below, I will list the fundamental systems of the game.
GOTU trailer from my YouTube channel
Destruction System
The destruction system in GOTU is built around the Voxel Plugin for Unreal Engine 5, specifically version 1.2. While the plugin is originally designed for shaping landscapes and automatically generating terrains, I leveraged its runtime editability to focus on real-time destruction. I manipulate the terrain and then spawn Niagara FX systems to simulate powerful impacts, avoiding the performance hit of a fully Chaos-enabled world.
Using the plugin in this way presented some challenges. The first was navigation with NavMesh. Although the plugin supports runtime NavMesh generation, it wasn’t practical due to the continuous and uneven destruction during gameplay. As a result, I couldn't rely on Unreal's built-in movement system. I had to program a custom AI that could dynamically react to unpredictable environments, allowing enemies to navigate the world without issues—whether by jumping over obstacles, crouching, climbing, or even digging toward the player if no other path was available.
Another challenge was making the entire environment destructible, not just the terrain. I wanted players to be able to destroy everything in sight, including buildings. To achieve this, I developed a custom dynamic painting tool that allows me to shape the map with different types of buildings, using parameter-based random generation to speed up the workflow.
Custom AiMovementComponent
Custom Voxel Painter Tool
Gore System
In a game where you can destroy the very ground you stand on, it would feel incomplete if you couldn't do the same with NPC enemies. This was a challenging feature to implement, but after trying various iterations, I finally landed on a solution that feels satisfying.
Leveraging Killian Gore's plugin and the Skinned Decal Component, this system allows enemies to display different degrees of wounds on their bodies. The materials on the skeletal mesh can deform to reveal underlying flesh, and the skeleton can experience limb separation while still maintaining functionality with the animation blueprint.
Each hit applies physical animation to the body for a short period, which helps to visually convey the impact's force while saving performance compared to a fully simulated ragdoll. Additionally, some spells can force enemies into a temporary ragdoll state, causing them to collapse for a few seconds before getting back up.
Every physical hit is accompanied by Niagara effects and decals on the environment to enhance the visual feedback of the combat.
Gore system editor debug
Gore system overview
Spell System
The Spell System is the key that ties the other two systems together. Although all the spells are derived from the same class, they each function differently ranging from projectiles and rays to point-and-click effects. These spells interact with both the environment and enemies, destroying and repainting the surroundings in real-time.
Each spell is accompanied by its own Niagara effects. While a few are purchased assets, the vast majority were created by me.
Rather than diving into the details of each individual spell, I'll let the spell showcase video demonstrate what I mean.
Spell system overview
Summary
Working on this game has been a long but wonderful experience. I know it's far from perfect, but I'm still incredibly thrilled with the results. I'm proud to say that I’ve accomplished every programming goal I set for myself, but I fell short when it came to 3D modeling. It's not that I dislike it, but I'm certainly not a skilled animator. I do feel a bit disheartened that this artistic limitation impacts the otherwise satisfying technical quality of the mechanics. However, I hope to collaborate with professional 3D artists in the future, if the opportunity arises.
Once it's ready, I’ll be releasing a free demo on Steam.
Mesh made in Blender and painted in QuixelMixer
Services
Professional freelance programmer specializing in C++ language.
Unreal Engine 4-5 C++ and blueprint programming
Contact
matteo.fardin@gmail.com
+39 349-248-5860
© 2024. All rights reserved.