Zoo Quest

Jogo singleplayer 3D de exploração e puzzle solving desenvolvido para avaliação em: -Desenvolvimento de Jogos Digitais II -Game Design II -Linguagens de Programação II -Modelação e Animação 3D

Pure Nim score 15/100 · last commit 2019-02-05 · 1 stars · tests present · no docs generated

Summary

Latest Version Unknown
License Unknown
CI Status Failing
Stars 1
Forks 0
Open Issues 0
Last Commit 2019-02-05
Downloads 0
Last Indexed 2026-08-13 05:12

Installation

nimble install Zoo Quest
choosenim install Zoo Quest
git clone https://gitlab.com/Robot_Game/zoo-quest

OS Compatibility

Platform Linux macOS Windows FreeBSD OpenBSD NetBSD Android iOS WASM Embedded
Zoo Quest - - - - - - -

Source

Repository https://gitlab.com/Robot_Game/zoo-quest
Homepage https://gitlab.com/Robot_Game/zoo-quest
Registry Source gitlab

README

# Projeto 3 de LP2 2018 - Zoo Quest

Diogo Martins - a21701345

My Solution

Division of Tasks

The entire programming component of the project was done by me alone.

Architecture

The first think I began to brainstorm was how I would implement NPC's and items in my game. Since those two were the only things the player would be able to interact with and they had some things in common, I used an interface IInteractible from which the class NPC and Item both implement. The Player class manages most of the player's behaviours, such has detecting IInteractibles with a Raycast and calling their respective Interact() methods. This was my way of trying to depend as much as possible on abstractions rather than concretions. All the NPC's have an DialogueAnimation script and a QuestManager script. The DialogueAnimation class manages the animations of the NPC's faces (eyes and mouth to be exact), which are sprites. The QuestManager class is used to manage when each NPC's quest will be unlocked (because some quests are only unlocked after .Items can be pickable or non-pickable (interaction only).

I used a Singleton pattern on the Inventory and CanvasManager classes. The Inventory manages a List of Items that the player picks and the CanvasManager class manages all of the UI elements and animations.

We have a simple MainMenu script to manage the main menu interactions (Play, Credits and Quit).

Some of our puzzles required specific scripts such as BucketsPuzzle and TankPanelPuzzle.

I didn't implement any specific Design Pattern other than the Singleton, but I did follow the SOLID principles as strictly as I could see fit.

UML Diagram

Diagram(UML)

Conclusions

I always love to work on Unity so this was another project that I felt pretty satisfied working on. Although, this time there was a huge difference in my programming mindset thanks to what I've learned the past few months about good programming practices, design patterns and the main principles we should take into account. This was definitely a good challenge that gave me quite more experience and I now hope to continue to improve.

References

  • [1] Whitaker, R. B. (2016). The C# Player's Guide (3rd Edition). Starbound Software