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 levelsSaveLevelData: file format for saves (just index)JsonHelper: Can convert a JSON File to a Class and vice versaLevelData: Contains the prop plane, camera padding, and of course the physical JSON file that stores the level
Level Loading¶
LevelSelector: Unimplemented, selecting level index, invokinggeneratelevel, invokerunlevel.LevelFileLoader: Takes in the chapter/level index and loads the files into SharedObjectsLevelParser: Helper class to read theGridDataJsonclassLevelGenerator: 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 nameConfigurable: Old camera shake stuff TODO REMOVE
- SharedObjects
ButtonLayers: RuntimeSet of all the button events.ComponentMoving: Boolean value active when a component is movingMovementEvents: Contains Action Events of Moving, MovementBegun and MovementFinished- /Level
AllChapters: Contains all theChapterDatafiles to be used in the game.CurrentChapter: This is the currentChapterData(chapter) being playedCurrentChapterIndex: The current chapter as an number (0 being first chapter)CurrentLevel: Contains the currentLevelDatabeing 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 -
LetterStepandButtonLinkare 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