Role
Developer, Designer
Zecromancer is a VR RTS game in which you play a Necromancer trying to control a horde of Zombies. This game was developed in 6 weeks in a team of two programmers and seven artists. I was able to gain a lot of experience with coding AI, and building a tool to help improve performance for the animations.
Developer, Designer
2023
Unreal Engine 5
RTS
Blueprints
PC
College Project (Group), Prototype
In order to render a large crowd of zombies and enemy soldiers at once without sacrificing frame rate, we used Unreal's experimental AnimToTexture plugin to extract skeletal animation data into textures used by the zombie models.
Since this plugin is experimental, the workflow was not artist or designer friendly, so a tool was needed to automate the process. A designer friendly tool was first developed by Trash Praxis for Unreal 5.1, but due to changes with the plugin after this version, the tool no longer worked. By digging through the code for this tool, as well as the plugin files, I was able to remake the tool to work with version 5.3. A more in depth explanation and a look at the code can be found in the following documents: Documentation for Automation Tool + Code Snippets
Unreal's systems are build assuming the use of Skeletal Animation, so a new system was needed to change the animations of the zombies. When the animations are extracted and stored in the Zombie's textures, they play in a sequence. For example, if we extracted data for a running and idle animation, the running animation would play to completion, then the idle animation would play, before looping back to the running animation again. As part of the extraction process, a Data Asset is used to store references to all of the information used, including the original skeletal animation as well as the start and end frames for each animation. The material made from these textures has material parameters for the start and end frames, so by referencing the original animations in this data asset to set these parameters, we are able to limit the vertex animation being played. A more in depth explanation and a look at the code can be found in the following documents: Documentation for Changing Animations + Code Snippets
As the game revolved around controlling a horde of zombies, I developed an AI system that would respond to the player's commands. When the player performed a gesture to command the zombies, each zombie's state would be updated to reflect the new command, which would then inform their behaviour tree. Documentation for Zombie AI System + Code Snippets