top of page

Minute

Minute is a 3D action platformer where you play as a wind-up toy in a Tinkerer's workshop set in the Victorian Age. As a small wind-up toy, you must rely on your wind-up key to embark on an arduous journey. Defeat enemies and uncover a dark secret within the rooms.

Roles

Enemy AI Programmer:

As the Enemy AI Programmer of the team, I was responsible for the implementation of the Enemy and Boss behaviour in the game, using a Finite State Machine to provide them with behaviour to challenge the player. I was also responsible for the pathfinding and movement of the Enemy and Boss, using the A* Pathfinding Algorithm on a Procedurally Generated navigation graph to find the shortest path and avoid obstacles on the way to their target location.

Animation Tools Programmer:

As the Animation Tools Programmer, I was responsible for providing the tools needed for animations to be ported onto the custom game engine, Ouroboros 2. The animation tools consisted of an Animator Controller, which provides the designers a way to determine the animation to be played for a particular state, as well as an Animation Timeline, a tool to help designers and gameplay programmers add events to be invoked at a particular frame in the animation.

Features

Pathfinding:

The pathfinding for the Enemy and Boss is created using A* Pathfinding Algorithm on the procedurally generated grid graph that acts as the navigation mesh of the map.

 

The A* Pathfinding Algorithm allows the enemies to find the shortest path to player as well as providing obstacle avoidance while chasing the player, giving players a hard time trying to escape from the enemies when in large groups.

The procedurally generated grid graph was generated by first surrounding the walkable area with nodes, and then using spherecast to determine if the area is unwalkable. The red nodes indicate that the node is not walkable and thus should be avoided by the enemies. Once the process of creating the grid graph is done, it would then be processed by the A* Pathfinding Algorithm to determine which nodes should the enemies move towards in order to get to the target location on the map.​​​​​​​​​​​​​​

Enemy AI:

The enemy AI is made using the classic Finite State Machine which gives the Enemies the ability to challenge the players throughout the game.

The finite state machine consists of a generic idle, alert, chase, attack, and die. However they are interchangeable based on the player actions as well as the ally enemies around them, providing support in numbers to try and bring the player down.

Boss Level:

The boss level is made in 4 phases. Each phase, the boss performs a different action and spawns different types of enemies to support it. Its a take on Dark Souls boss battles.

In the different boss phases, the boss follows a particular order of execution based on the finite state machine as well as the current phase that it is in. Different phases would have different form of attack from the boss, as well as spawning varying types of enemies in varying numbers to support the boss.

The multiple phases is what grants the boss its uniqueness as well as its difficulty in beating the game.

Animator Controller:

The animation controller works just like a state machine, except it is for animations. Designers use this tool to create state machine for the animations of player and enemy objects. By providing a visual representation of the animation state machine, designers can also determine the behaviour of the game objects in the game, making the game more lively as a result. It also saved the designers time as they did not have to determine the animation state machine out by code.

Animation Timeline:

The animation timeline is a tool that provides designers and gameplay programmers to add events to a particular frame of a specific animation. This improved the quality of life for the designers and gameplay programmers as they could call functions at specific moments in the game, making the game have scripted events and improving the overall quality of the game.

Copyright © 2024 Muhammad Amirul Bin Zaol-kefli

bottom of page