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, AI Scripting, UI Scripting, Sound Scripting, Animation Implementation, Documentation management
This project was a part of a 7 weeks course at FutureGames. Design and art students teamed up to create a game which could fulfill the project’s criteria of Sandbox, Customization and Audience Awareness.
During this project I primarily focused on AI and UI scripting. I also contributed with setting up the main menu with writing scripts for scene management and implementing art to menu and it’s animations. Implementing sound manager which were to hold all sound effects and music for the game. As well worked in close collaboration with the team’s animator to implement and set up the animations for the AI.
Apart from these contributions I was also involved in all design decisions regarding gameplay, features and how we could achieve our objectives. Through communication with the team helped tweaking part of the levels and movement from valuable playtesting feedback. I was also the Scrum Master for this project and managed the game’s documentation, I worked together with the project manager to manage our backlog and what our deliverable goals would be for each week and presented these for the entire team. Which through cross-disciplinary discussions we would set which goals would be achievable each week.
“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.
The SoundManager is built to be a constant singleton. This manager is built to keep an sound library by using the Sound script. The user can set the size they need and then by calling the singleton instance of the SoundManager from any other script when they need to play and/or stop a sound. They can choose from various options within the SoundManager to play, fade in/out, stop sound clips as needed.
UI / HUD