Skip to content

Project Inventory

This file serves as a map of the project. Just what exists so we don't forget.

Project Structure

Assets/  
├── Animations/        - Animations for emitter, ui, etc.
├── Audio/             - BGM and SFX
├── Creator/           - PuzzleCreator code + scene
├── Editor/            - Extends Unity's Inspector
├── Events/            - GameEvents that can be hooked into
├── Fonts/             - Font information
├── Graphics/          - PostProcess data
├── Materials/         - All materials used 
├── Meshes/            - Meshes for every component, prop plane, etc.
├── Plugins/           - Plugins used
├── Prefabs/           - all prefabs
├── Scenes/            - all scenes
├── Scripts/           - all game code
├── Shaders/           - all the shaders like the portal shaders
├── Streaming Assets/  - FMOD streaming assets
├── Textures/          - UI textures, etc.
└── Resources/         - All game resources
    ├── SharedObjects/ - shared variables (currentchapter, movespeed)
    ├── Levels/        - All the levels are stored here
    ├── Components/    - Contains components types (linking name to comp prefab)
    └── Values/        - Old game configuration, should be moved to sharedobjects

Scenes

  • TestLevelGeneration - Used to test the level generation pipeline
  • Puzzle - This scene used to actually run the game, no longer in use.
  • ChapterSelect - Non-functional chapter select scene.

Systems

Serialization

  • GridDataJson: file format of JSON levels
  • SaveLevelData: file format for saves (just index)
  • JsonHelper: Can convert a JSON File to a Class and vice versa
  • LevelData: Contains the prop plane, camera padding, and of course the physical JSON file that stores the level

Level Loading

  • LevelSelector: Unimplemented, selecting level index, invoking generatelevel, invoke runlevel.
  • LevelFileLoader: Takes in the chapter/level index and loads the files into SharedObjects
  • LevelParser: Helper class to read the GridDataJson class
  • LevelGenerator: Instantiates all the components and grid.
  • LevelRunner: In charge of keeping track if the level is won, actually run's the level, etc.

Data & Assets

  • ScriptableObjects:
    • ChapterData: Contains all levels, colour settings and anything related to a chapter.
    • ComponentType: Matches a prefab to a component name
    • Configurable: Old camera shake stuff TODO REMOVE
  • SharedObjects
    • ButtonLayers: RuntimeSet of all the button events.
    • ComponentMoving: Boolean value active when a component is moving
    • MovementEvents: Contains Action Events of Moving, MovementBegun and MovementFinished
    • /Level
      • AllChapters: Contains all the ChapterData files to be used in the game.
      • CurrentChapter: This is the current ChapterData (chapter) being played
      • CurrentChapterIndex: The current chapter as an number (0 being first chapter)
      • CurrentLevel: Contains the current LevelData being played.
      • CurrentLevelIndex: The current level as an number (0 being first chapter)
      • PuzzleComponents: A runtime set of all the current puzzle components in the scene.
      • Tiles: An array of all the tiles in the scene.
    • /Settings
      • DefaultMovement: Movement speed details for normal movement.
      • IcyMovement: Movement speed details for icy movement.
      • GridSettings: Contains Width, Height and Gap offset of the Grid

Notes

Broken things or things yet to be implemented - LetterStep and ButtonLink are the same thing. It overcomplicates it a bit. Not every component is linked to another component so we can probably refactor this. - There is a bug with movement when you try to move something while another thing is already moving - You can move non movable objects