Technical Design - abhinavk0714/csce552-3d-game GitHub Wiki
Game Engine, Platform, Other Software
- Engine: Godot
- Platform: PC (Windows 10+)
- Other Tools: Blender (for modeling and rigging), Audacity (for audio editing), UltraBox (for music making), Krita or Photoshop (for textures and UI assets).
Scene State Diagram
Game Object / Component Diagrams
Game Object List
Player
(Prefab)
Description
Contains a ball to roll upon and a frog character to "move" it. The ball rolls according to platform orientation, and the frog responds to the ball’s movement with animations to remain balanced.
Tags
Player
Required Components
- Transform
- RigidBody
- Collider
- Mesh Renderer
- PlayerController
- Animation Controller
Related Game Objects
- Parent: n/a
- Children: Frog Rig
- Associations: Platforms, Goal Button, Walls
Comments
This is the main controllable object. The ball’s rotation dictates Aro’s animation and motion.
Platform (Biaxial)
(Prefab)
Description
A controllable platform that can tilt along both pitch and roll axes. The player uses keyboard input to change its orientation, influencing the ball’s gravity direction.
Tags
Platform
Required Components
- Transform
- PlatformController (Biaxial)
- Mesh Renderer
- Collider
Related Game Objects
- Parent: Level
- Children: Walls, Buttons
- Associations: Player
Comments
Used in levels with full control mechanics.
Platform (Uniaxial)
(Prefab)
Description
A platform that rotates along one axis (either pitch or roll).
Tags
Platform
Required Components
- Transform
- PlatformController (Uniaxial)
- Mesh Renderer
- Collider
Related Game Objects
- Parent: Level
- Children: Walls, Buttons
- Associations: Player
Comments
Used in stages that limit control for added challenge.
Platform (Static)
(Prefab)
Description
A static platform with no player control. It maintains a fixed angle or relies on player momentum from previous platforms.
Tags
Platform
Required Components
- Transform
- Mesh Renderer
- Collider
Related Game Objects
- Parent: Level
- Associations: Player
Comments
Used for transitions, obstacles, or resting areas.
Walls
(Prefab)
Description
Attached structures that restrict player movement across specific areas of a platform.
Tags
Obstacle
Required Components
- Transform
- Collider
- Mesh Renderer
Related Game Objects
- Parent: Platform
- Associations: Player
Comments
Prevent Aro’s ball from falling off the platform or entering restricted areas.
Button
(Prefab)
Description
An interactive button that broadcasts a signal when pressed. Can trigger events such as removing barriers or revealing hidden coins.
Tags
Trigger
Required Components
- Transform
- Collider (Trigger)
- ButtonInteraction
Related Game Objects
- Parent: Platform
- Associations: Barrier, Game Manager
Comments
Pressed using the rolling ball.
Barrier
(Prefab)
Description
A large wall or gate placed between platforms. Can be toggled on/off via interaction with buttons.
Tags
Obstacle
Required Components
- Transform
- Collider
- Mesh Renderer
- BarrierToggle
Related Game Objects
- Parent: Level
- Associations: Button
Comments
Controls access to different sections of a stage.
Goal Button
(Prefab)
Description
Final button that ends the level when pressed.
Tags
Goal
Required Components
- Transform
- Collider (Trigger)
- GoalTrigger
Related Game Objects
- Parent: Platform
- Associations: Game Manager
Comments
Transitions to the next level or win screen.
Spring
(Prefab)
Description
A mechanical platform object that propels the player’s ball in the direction it is facing when activated. Used to help Aro reach higher or distant platforms and add momentum-based puzzle elements.
Tags
Propulsion
Required Components
- Transform
- Collider (Trigger)
- Mesh Renderer
- SpringBehavior
Related Game Objects
- Parent: Level
- Children: n/a
- Associations: Player, Platform
Comments
Can be angled to control launch direction and force. Plays an animation or sound effect when triggered.
Component List and Flowcharts
PlayerController
Description
Handles input from the player to tilt the platform along pitch and roll axes. Communicates directly with the platform’s transform to simulate gravity movement.
Requirements
- Platform Game Object
Provided by Engine
No (custom script).
Comments
Core mechanic linking user input to Aro’s motion.
GoalTrigger
Description
Handles completion conditions and transitions to the next level or win menu.
Requirements
- Game Manager reference
Provided by Engine
No (custom script).
Comments
Used at the end of each stage to manage progression.
SpringBehavior
Description
Applies a directional impulse to the player’s ball when contact is detected. The spring propels the player in the direction it is facing, allowing for vertical or angled launches between platforms. The launch strength and angle can be adjusted per spring instance for level design variety.
Requirements
- Spring Game Object
- Collider (Trigger)
- Player RigidBody reference
Provided by Engine
No (custom script).
Comments
Used to introduce momentum-based puzzle challenges and vertical navigation. Can trigger a sound or animation when activated.
PauseGame
Description
Interacts with the Time Manager to control the game’s pause state. When the player pauses the game, the component sets the time scale to 0, effectively stopping the game loop. Unpausing resets the time scale to 1. It also enables or disables a GUI Pause Menu, allowing the player to either resume or return to the Main Menu.
Requirements
- GUI Label
- Canvas (for Pause Menu display)
Provided by Engine
No (custom script).
Comments
Coordinates with the Canvas and GUI Labels to display and manage the pause menu interface.
Transform
(Provided)
Description
Contains position, rotation, and scale data for a Game Object. Used by virtually every object in the scene.
Requirements
n/a
Provided by Engine
Yes
Comments
Fundamental engine component used for spatial data and hierarchical transforms.
RigidBody3D
(Provided)
Description
Provides physics-driven movement: mass, velocity, forces and impulses for 3D objects. Used for the rolling ball and physics-driven props.
Requirements
- Transform
- CollisionShape / Collider
Provided by Engine
Yes
Comments
Useful for objects that react to physics (ball, movable debris).
CollisionShape / Collider
(Provided)
Description
Geometry used for collision detection (boxes, spheres, capsules, meshes). Works with physics bodies and triggers.
Requirements
- Transform
Provided by Engine
Yes
Comments
Essential for detecting interactions like coin pickup, button press, barrier hits.
MeshRenderer / MeshInstance
(Provided)
Description
Renders 3D geometry (meshes) in the scene and holds material assignments.
Requirements
- Mesh asset
- Transform
Provided by Engine
Yes
Comments
Used for all visible 3D models (platforms, walls, springs, coins).
AnimationPlayer / Animator
(Provided)
Description
Plays and blends animations for characters and objects (Aro’s rig, animated buttons, springs).
Requirements
- Animation clips
- Transform
Provided by Engine
Yes
Comments
Used for Aro’s animations and small object animations (button press, spring bounce).
Camera
(Provided)
Description
Renders a view of the world; can be set to isometric perspective and follow player/platform.
Requirements
- Transform
Provided by Engine
Yes
Comments
Will implement camera panning/follow and zoom behaviors.
AudioSource / AudioStreamPlayer3D
(Provided)
Description
Plays spatialized sound effects and music tied to scene objects.
Requirements
- Audio Clip / Stream
Provided by Engine
Yes
Comments
Used for roll SFX, plonk SFX, button presses, ambient audio.
AudioListener
(Provided)
Description
Represents the audio receiving point (the “ear”) in the scene; combines audio sources into final output.
Requirements
n/a
Provided by Engine
Yes
Comments
Typically attached to the main Camera or player object. Only one active per scene.
Canvas / UIRoot
(Provided)
Description
Root for 2D UI elements (HUD and menus). Hosts UI controls and layouts.
Requirements
- Camera or render target (depending on implementation)
Provided by Engine
Yes
Comments
Contains the HUD (timer, coins, level), pause menu, and main menu elements.
Control (GUI Label / Text)
(Provided)
Description
Displays text in UI (timer, score, notifications).
Requirements
- Canvas
Provided by Engine
Yes
Comments
Used for all textual displays in HUD and menus.
Control (GUI Button / Clickable)
(Provided)
Description
UI button that responds to pointer/click events and triggers actions.
Requirements
- OnClick callback
Provided by Engine
Yes
Comments
Used in Menu, Pause, Settings, and in-game UI.
Light
(Provided)
Description
Scene lighting (Directional, Point, Spot) to illuminate 3D models and set mood.
Requirements
- Transform
Provided by Engine
Yes
Comments
Used to enhance the “fragments of the sky” atmosphere and readability.
ParticleSystem / VFXEmitter
(Provided)
Description
Emits particle effects such as sparkles, dust, or coin glows for visual feedback.
Requirements
- Particle asset / emitter settings
Provided by Engine
Yes
Comments
Useful for coin collect FX, goal activation glow, spring burst.
PhysicsMaterial
(Provided)
Description
Defines surface friction and bounciness for colliders.
Requirements
- Collider / PhysicsBody
Provided by Engine
Yes
Comments
Tune ball roll friction and bounce for different platforms.
CameraFollow
Description
Script to smoothly pan/zoom the camera to follow the ball and keep the playfield readable.
Requirements
- Camera
- Player (ball) Transform reference
Provided by Engine
No (custom script).
Comments
Handles clamping, smoothing, and isometric offset to maintain visibility.
PlayerBallController
Description
Monitors ball state and translates physics feedback into Aro’s animations (syncs rig to rolling movement). Also handles special interactions with springs and goal.
Requirements
- RigidBody3D (ball)
- AnimationPlayer (Aro)
- Collider
Provided by Engine
No (custom script).
Comments
Bridges physics and character visuals; may also expose API for temporary invulnerability after launch.
PlatformController
Description
Receives player input and applies rotation/constraints to platform transforms based on platform type (biaxial/uniaxial/static).
Requirements
- Transform
- Input system
Provided by Engine
No (custom script).
Comments
Includes max-angle limits, speed, and locked-axis logic per platform instance.
ButtonInteraction
Description
Detects ball overlap with buttons, sends signals to linked components (BarrierToggle, CoinReveal, Goal activation).
Requirements
- Collider (Trigger)
- Event system or callback references
Provided by Engine
No (custom script).
Comments
Simple, reusable trigger for level interactions.
BarrierToggle
Description
Listens for button signals and toggles barrier collision/visibility states.
Requirements
- Barrier Game Object reference
- ButtonInteraction events
Provided by Engine
No (custom script).
Comments
Used to gate level progression and create dynamic puzzles.
CoinCollectible
Description
Handles spinning coin behavior, collision detection, and HUD increment.
Requirements
- Collider (Trigger)
- HUD reference
Provided by Engine
No (custom script).
Comments
Destroys or deactivates after collection and triggers SFX/particles.
GameManager
Description
Central authority tracking level state, coin counts, timer, lives, and transitions (win/lose/next level).
Requirements
- References to HUD, Player, Level objects, AudioManager
Provided by Engine
No (custom script).
Comments
Single instance per run; persists data and coordinates scene transitions.
AudioManager
Description
Centralizes audio playback, volume control, and audio pooling for SFX and music.
Requirements
- AudioSource nodes or pooling system
- AudioClip assets
Provided by Engine
No (custom script).
Comments
Makes it easier to play sounds without scattering AudioSource nodes.
UIManager
Description
Manages HUD updates, menu toggles (pause/resume), and screen messages. Bridges GameManager <-> Canvas UI elements.
Requirements
- Canvas / UI controls references
- GameManager reference
Provided by Engine
No (custom script).
Comments
Handles localization hooks and UI transitions if needed.
SaveLoadSystem
Description
Saves player progress, high scores, and settings (audio levels, control bindings).
Requirements
- File I/O or engine persistence API
Provided by Engine
No (custom script).
Comments
Optional but useful for retaining progress and scores.