Project Overview
Mictlan is an action-adventure game set during the Spanish conquest of Mexico. Explore a vast open-world, learn how to survive the journey across Mictlan, the Valley of the Death, while ancient Mesoamerican gods meddle with your fate and Spanish soldiers want your head on a stake.
Problems Faced and Fixes
Since It's a very Large Scale Project We ran into some Optimization Issues and Development Challenges like AI . We wanted AI to be Modular and Very Easy to Expand Upon. So I came up with a solution that works very well for Our Project which is Utility AI. It is a Old yet powerful solution for making NPCs in Games. It allowed us to make NPCs with Routines and their own Tasks.
My Contributions
I've Worked on Mictlan as Lead Gameplay and AI Programmer. I'm responsible for making all the Gameplay Mechanics and AI in the Game. Things I have worked on :
-Locomotion System
For Player I used Advanced Locomotion V4 as Base for Locomotion. Then Built upon it according to the Project needs. Like Adding Climbing System and Different Overlay States.
For NPCs I wanted the Locomotion System to be as Performant as Possible since ALS v4 is not really good for Crowds. For this Purpose I created my own Locomotion System with Techniques like Distance Matching, Slope Warping, FootIK and Procedural Reaction to Environment like if someone Bumps into an NPC they react accordingly.
-Combat System ( Close Combat and Ranged Combat with Bow and Arrow )
I Built the New Combat System from the Ground Up in C++ according to the Project Needs. Old Combat System was using Dynamic Combat System but we didn't have much freedom with it. So I decided to Create our Own Combat System from Scratch in C++ with maximum Optimization and Freedom. Our Inspiration for Combat is Ghost of Tsushima.
-Interaction System with Items and NPCs
I Built Interaction System from Scratch in Blueprints and C++ Both. Interaction with NPCs like Talking and Scaring them if you with fight them. Quests are also assigned by NPCs.
Interaction with Items like Picking Up Items and their affect on Player Stats. Like Healing Herb ( which refills health ) and Macahuitl ( A Mexican weapon which allows you to Fight without it you cant fight ) and Pickup Rocks to distract Enemies. For Accurate Hand Placement I used Control Rig to Drive the Hand location to the Target Item and Using Animation Curves to Smoothly interpolate instead of snapping to a location.
-AI Programming
I Started with Regular AI with Behavior Trees but we ran into some issues because the Project is Open World and Large Scale, it was Difficult to expand upon the previously built system. After some research I came up with Utility AI solution for our Game. Which allowed us to Easily build Routines for NPCs in the World Depending on Time of Day and Their Characteristics. It is very easy to expand upon if you understand the Concept of Utility AI.
-Quest System
I Created a Quest System for Our Game which is totally Modular and Easy to Work for Designers. The Quest System is still in WIP so I don't have a Video Yet. Quest are assigned by NPCs and Quests have their own types like Side Quest and Main Quest.
-Procedural IK for Foot Placement and Picking up Items.
I Used Control Rig to Make Foot and Hand Placement on Un-even Surfaces and Ladder System which allowed for Accurate Placement on Ladder Steps.
I also used the same system to make Interaction with Items like picking up. To Smoothly interpolate hand to the item's location I used Animation Curves.
-Stealth System and Finisher System
I created Stealth System and Finisher System using animation from marketplace for Prototype. For Animation Adjustment and Positioning I used Latest Unreal Engine 5 feature Motion Warping which allowed me to Perfectly sync Animations of both Player and Enemy.
I used both Blueprint and C++ for this Project. I'm still working on the project but also looking for extra work!