Fate’s Echo (C#, Unity, Python)
A third person action RPG.
AI
For this game, Behaviour Trees were used for enemies and Utility AI for allies. Behaviour Trees for enemies were a standard affair – reusable tasks that allow numerous enemy types. On the other hand, the Utility AI for allies was complex in comparison – it took multiple parameters from the environment to decide an optimal action. Example parameters that it took were: distance to enemies/allies, the health of allies, number of nearby enemies, and the current amount of MP. However, the AI was programmed to occasionally pick bad decisions to make it more realistic.
As this was an RPG, the skills available to enemies + allies were in custom asset files and could easily be assigned. Enemy combat stats are automatically calculated in the editor based on base stats, and elemental affinities were exposed for editing.
UI
The UI menus and interactions were developed by me – whenever the character got close to an interactable object, a popup would show depending on the item. This parameter was adjustable. Settings to adjust the graphical quality of the game, as well as adjust the sound volume and much more were also programmed. In addition, the majority of the code was in keeping the info overhead in view, and making it disappear when not within the FoV of the camera.
Environments & Events
By integrating code with PlayMaker, events such as cutscenes were easily created by others on the team. Spawners also had a custom editor UI coded to spawn endlessly or a set amount and be automatic in intervals or be triggered via an event.
Gameplay
The core gameplay of Fate’s Echo was that of a Action RPG, controlling a main character with an entourage of unique party members. Zax, the main character, can swap between multiple weapons that each have a different moveset. Other than basic attacks, weapons can have skills built in such as repairing your health, converting fellow enemies into friendly allies, and shooting out fire. Attacks also generate up a meter, and that meter can be used to issue special commands to party members.
Role : Unity Developer
For Fate’s Echo, I developed primarily in C# inside of Unity. Git was used for source control.
The character controller for the main character is physics driven, using rigidbody.AddForce with Velocity.Change while taking in account previous velocities.
Behaviour Trees were used for enemy logic, while ally logic was decided through Utility AI. With this type of AI, the party members took a choice and perform it based on a number of parameters such as the distance to and the number of enemies, as well as health of party members.
The UI was done through Unity’s UI system, and was made to be compatible with controllers. I sliced and setup the 2D UI sprites that the artist gave me to properly fit in game. An example of this was with buttons, where I had to slice up the edges and body to have it resize correctly.
By integrating PlayMaker (a Unity asset that the rest of the team knew) with my code, certain functionalities such as dropping items were integrated into actions with custom editor fields.
I developed the gameplay system from a Game Design Document that the team came up with. It was a bit challenging at first to comprehensively create the systems of a RPG, but with some research and reference to other games, it was finished in time for a gaming convention.