EscapeNet is a multiplayer escape room built in Unreal Engine 5
One of my contributions includes the development of the AI system.
For this I created a utility selection behaviour system.
Each behaviour is ranked based on a priority given the AI current context.
The behaviour with the highest priority is selected and ran.
This approach allowed for the AI to function in a wide range of areas.
In addition, having each behaviour be separate allows for modularity and more maintainable code.
Furthermore, to help with debugging, I created a custom gameplay debugger category to display
information on the priority
associated with each of the behaviours in addition to some additional AI-specific information.
For this project I integrated motion matching into the hero characters. Doing so was a large undertaking as the system requires lots of specific fine-tuning. From this I learned how motion matching along with chooser tables can be integrated into the animation instance, resulting in smoother transitions and pivots. I also learned when it's best not to use motion matching and instead resort to state machines and blend spaces.
I created both gameplay logic and tooling to allow for using GPU animated mesh. To achieve this, I extended Unreal's AnimToTexture plugin to include a component that would automatically register as a static mesh instance and then draw to the screen using custom data to provide control over the vertex animation. Furthermore, I create a tool that automated the process of going from skeletal mesh to vertex-animated static mesh. This allowed us to replace costly skeletal meshes with more efficient GPU animated meshes.
Another contribution was the creation of the interaction system. This system was designed for server authoritative control over valid interactions. Once a given interaction has succeeded, the player then becomes the net owner of the interactable actor. The benefit of this is that server rpc calls can then be invoked from the interactable actor rather than cluttering the player controller or character.