Trial: The night parade
Genre: Local Co-op ARPG
Platform & Control: PC, Handheld controller
Engine & Tools: Unity 2018, Perforce P4V, Visual Studio
Development Time: 7 weeks (Q2 2018)
Team Size: 4 Designers, 4 3D Artists, 2 2D Artist
Roles: AI Scripter, Scrum Master
Contribution: Game Design, UI Scripting, Sound Scripting, Documentation management
“Japan, during the Kamakura period, two students of martial arts stand before their final trial. Their task, to clear a city of its evil spirits, also known as Yokai, require complete focus, as one small mistake might cost them their life. For our students to attain the rank of a master, they must finish the Trial. Their goal is to travel into the city, fight the Yokai and ring the city bell, marking the success of their trial!
In Trial, you sit down, and together with your friend experience a top-down local multiplayer action RPG in a traditional Japanese setting. You’ll have to work together, fight alongside each other, and should one fall, the other may resurrect their friend from the dead to continue to fight through the city!”
I created a finite state machine that manages the flow between different behavior states for the AI. There are two types of AI in Trial, one melee and one ranged. The Lantern Yokai or the Snow Lady Yokai. All states inherits from the same “BaseStateMachine” acts as a holder for all constant variables (for example life) and runs in the background of the other states.
PlayerSearchState is an collision sphere extended with a certain range from the AI and handels the player priority rating. First player to enter is given priority unless the other player enters wielding one of two objects or equips one of these two items while within the search radius of the AI.
BaseStateMachine receives this data and if it has been a change in priority sends it outwards to the current state so the AI can attack the new target or change state and move towards it.
FollowPlayerState send the AI moving towards it target by using the engine’s navmesh until it reaches it’s attack range, determined by which type of enemy it is.
In the MeleeAttackState (and RangedAttackState) the AI stays within a set range to the player, if they leave that range the AI enters FollowPlayerState until they reach them or they get to far away. Which trigger IdleState or WanderState.
The WanderState makes the AI walk to a predetermined locations, when reaching the location they enter the IdelState until they proceed or an player enter their search area. If the player get out of its range once more the AI goes back to the last location in the WanderState.
UI / HUD