Akito - Pawsome Quest
A downloadable game for Windows
Introducing Akito - Pawsome Quest, a game that takes you on a journey alongside Akito, a curious and courageous cat. Prepare to be transported to a dream world, nestled deep within a magnificent cave.
Embark on a quest filled with intricate puzzles that await your problem-solving skills. As Akito encounters enemies in this dream realm, you'll have the choice to engage in thrilling battles or utilize stealthy maneuvers to sneak past them undetected.
About the project:
This is a project that I've developed during my Mastered bootcamp. Here is a scheme of the main components and behavior of this game.
With the utilization of the Enhanced Input system, I have implemented the fundamental mechanics for movement and interactions in the game. Additionally, I have developed a dedicated class that encapsulates the core combat functionalities shared by both Akito, the protagonist, and the enemies. By employing inheritance, I have ensured that the fight functions are efficiently shared and utilized across these entities, promoting code reusability and maintaining a cohesive design structure.
The main character in the game possesses a versatile range of interactions with various types of items. These items encompass a diverse array of functionalities, including pickable objects, breakables, weapons, and even key items necessary to unlock portals or solve puzzles. This wide assortment of interactive elements adds depth and complexity to the gameplay, allowing for engaging and immersive experiences.
Moreover, the game features NPC with who the player can engage in dialogues. To facilitate dynamic and intelligent conversations, I have implemented a behavior tree system. This system enables the NPCs to navigate through dialogues and make decisions based on predetermined conditions and player input. By utilizing behavior trees, the game achieves a more lifelike and interactive environment, enhancing the overall storytelling and player engagement.
The enemies within the game possess distinct states that govern their behavior. These states include patrolling, where they follow predetermined paths, chasing, where they pursue the player upon detection, and engaging, where they actively engage in combat. These dynamic states create immersive and challenging encounters, requiring strategic thinking and skillful execution from the player.
Code Highlights:
Observer Pattern: The AEnemy class utilizes the observer pattern when registering the PawnSeen function as the callback for pawn sensing events using the OnSeePawn event of the PawnSensing component. This allows the enemy to observe and react to changes in the environment, such as detecting a nearby pawn.
State Pattern: The AEnemy class implements a state pattern to manage the different states of the enemy character. The EEnemyState enum is used to represent different states such as patrolling, chasing, attacking, and dead. The behavior of the enemy is determined based on its current state, and state transitions occur based on specific conditions.
Template Method Pattern: The GetHit_Implementation function demonstrates the Template Method Pattern. It defines the skeleton of an algorithm for handling the character getting hit. The specific steps of the algorithm (e.g., reacting to the hit, playing hit sound, spawning hit particles) are implemented in separate methods (DirectionalHitReact, PlayHitSound, SpawnHitParticles) that can be overridden by subclasses to provide different behavior.
Command Pattern: The IUserInterface interface declares a set of methods that act as commands or actions that can be invoked by objects implementing the interface. For example, SetOverlappingItem, SetHoldingItem, SetCharacterWorld, etc., represent commands that can be called on a user interface object to perform specific actions. This follows the Command design pattern, where objects encapsulate actions as commands that can be invoked by clients.
Status | In development |
Platforms | Windows |
Author | Camila Takemoto |
Genre | Adventure |
Leave a comment
Log in with itch.io to leave a comment.