-
Notifications
You must be signed in to change notification settings - Fork 2
Unity Project Architecture
The game is built for Unity 5.6.0 as a 2D project. The code can be broken up into several different categories:
- Gameplay
- User Interface
- World generation
- Logging
Below is a diagram with an overview of the game loop.

Most of the logic which handles user input happens inside of the GameController's Update() method.
TODO
All scripts under GameObject/Components are meant to be reusable scripts for any Virtual Maniupulatives/Game entities which are added into the game.
-
LinkBehavioris for object which can connect toConnectableEntityBehaviorobjects. -
ConnectableEntityBehavioris for any object which aLinkBehaviorobject can connect to. -
ValueBehavioris for any object which can have a value attached to it -
LoggableBehavioris for any object that has a LogID to be printed in log messages -
ContainerEntityBehavioris for any object which might contain other components. it can be hidden or revealed.
Note that adding these components to new game objects may not make it behave exactly as you want it to. You might still need to create a new behavior script for any new element that you add in to facilitate the behavior of these different components. For an example of this, see the PlatformBehavior script, which is has a ConnectableEntityBehavior, ContainerEntityBehavior, LoggableBehavior, and contains a LinkBehavior object and a ValueBehavior object.
New pull requests can also add any components which may give reusable behavior for any Virtual Manipulatives for data structures.
All of the scripts used by the UI/HUD is found under the Scripts/UI folder. HUDBehavior is the main class for all game-related UI elements. The LoginPanelBehavior is used for the HUD which players first see for logging in.
TODO
All world generation happens inside of the WorldGenerationBehavior script. The script has an array of JSON level files as TextAsset assets. Each JSON file corresponds to one level, and the order of the array is the order of the levels in the game. The levelFileIndex variable gives the index of the current level that is generated when the game either starts of when the level is reset. When the player completes a level, it increments the levelFileIndex variable and resets the level.
The generator uses JsonUtility to deserialize the JSON level files. All classes found in the Scripts/WorldGeneration folder are plain C# classes that are used by the JsonUtility.
TODO