Github
About
Since October 17th, I have been working on this passion project while attending the Advanced Gameplay Programming course. The game idea is a mix between Little Nightmares by Tarsier Studios, The Shining (book version) by Stephen King, and Spirited Away by Studio Ghibli.
During my development, I have implemented several features that I learned in the course.
Feel free to download the build to test out the game for yourself or look at my Github for my code.
Github , Download link
Key Features / Worked On
Procedural Animation
Interactable Objects
AI companion
Action Stacks
Procedural Animation
My humble attempt at procedural animation is used by both the AI companion and the player, and it serves as one of the core gameplay features. It makes use of an inverse kinematic solution and is currently divided into three parts, hips, arms, and legs.
Through Actions Stacks, I can safety construct different animation actions that the model should perform. I go more into detail about actions stacks later.
Main Animation Actions used in game:
To Holster Action, Wave Action, Pointing Action, Default Movement, Jumping Action, Hand-Holding Action, and Interact Action
Wave Action
Pointing Action
Hand-Holding Action
Interact Action
Interactable Objects
Interactable objects are another part of the core gameplay. They are used throughout the game by the both the player and AI Companion. They are designed with generic function calls, which also allow them to trigger chain reactions with other intertactable objects.
There is also the option to combine multiple interactions so they function as a single unit, which is used for pattern-based puzzle in game.
Interactable Items also exist and may be required for certain interactions to perform(e.g., a keycard for a keycard pad or a key for a door lock) ).
Example shown in GIF:
Character presses the button→ Light turns on → Gate opens
AI Companion
The AI Companion is one of the final core gameplay components. It serves as a tool that the player uses throughout the game to navigate the puzzles and rooms.
It has its own Companion Action Stack, which contains all the basic actions. The AI Companion also utilizes the procedural animation for its movement.
To improve clearer gameplay feedback, the companion features several world-space UI elements that indicate what the Companion is currently doing or about to do.
Companion Actions:
Move To Action, Continous Move To Action, Pick Up Item Action, and Try To Interact With World Action
Action Stack
The Action Stack was introduced to our class during the Advanced Gameplay Programming course by Carl Granberg. It was one the requirements for the hand-in assignment, and is something I truly fell in love with and decided to use it all over my scripts.
The Logic every tick:
If currentAction is nullptr, retrieve the top action in the action stack and call OnBegin() on it (this works as an initializer).
Call OnUpdate() on currentAction.
If currentAction returns true when checking IsDone(), remove currentAction from the top of stack.
When an action is removed, call OnEnd() (this works as an deinitializer), remove it from action stack and then allow it to be handled garage collection.