A Unity project developed for Senac Santo Amaro University
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
This project follows a layered + feature-based architecture inside Assets/_Game.
- Core: global services and contracts (
EventBus,ServiceLocator,Input,Audio, enums). - Framework: reusable systems (Behaviour Trees, generic UI components).
- Gameplay: game-specific features (Player, Enemy, Dialogue, Menu, Inventory, Door, Delivery, etc.).
- Shared: cross-cutting interfaces/utilities (
IInteractable, helpers, physic materials). - UI: PSX shaders and VFX pipeline.
Assets/
└── _Game/
├── Core/
├── Framework/
├── Gameplay/
├── Shared/
└── UI/
- Core does not depend on Gameplay features.
- Framework depends on Core.
- Gameplay depends on Core + Framework.
- Features communicate through
EventBusand service interfaces. - Avoid direct feature-to-feature coupling when possible.
Gameplay/Bootstrap/GameBootstrapper.cs initializes global services before scene load using Unity runtime initialization attributes.
- Assets/_Game/Core/README.md
- Assets/_Game/Framework/README.md
- Assets/_Game/Gameplay/README.md
- Assets/_Game/Shared/README.md
- Assets/_Game/UI/README.md
- Assets/_Game/Gameplay/Bootstrap/README.md
- Assets/_Game/Gameplay/Game%20State/README.md
- Assets/_Game/Gameplay/Player/README.md
- Assets/_Game/Gameplay/Enemy/README.md
- Assets/_Game/Gameplay/Dialogue/README.md
- Assets/_Game/Gameplay/Menu/README.md
- Assets/_Game/Gameplay/Inventory/README.md
- Assets/_Game/Gameplay/Door/README.md
- Assets/_Game/Gameplay/Delivery/README.md
- Assets/_Game/Gameplay/Environment/README.md
- Assets/_Game/Gameplay/Props/README.md
The dialogue runtime now follows a split data model:
- TextAsset stores dialogue content (speaker name + line text).
- CharacterSO stores speaker presentation (colors and fonts).
This keeps dialogue authoring simple in .txt files while preserving reusable character styling in assets.
DialogueTriggerreferences aTextAssetfile.DialogueServicecallsDialogueParser.Parse(TextAsset).- Each parsed
speakerNameis matched against configuredCharacterSOassets (case-insensitive). - UI applies speaker name/text colors and fonts from
CharacterSO. - If no match exists,
DialogueServiceuses default colors/fonts.
DialogueSOis no longer required for runtime playback in this flow.- Keep
CharacterSOfor centralized speaker styling and consistency across dialogues.
CI/CD powered by GameCI and GitHub Actions.
Quick Outline powered by Chris Nolet
PSX footsteps provided by Hazard Play
Item Pickup SFX provided by Lamoot
Navigation menu SFX from Fupi
Open and Close menu SFX from Pedro Alegria