Project architecture
Project Architecture
This document provides an overview of the project’s architecture, including key modules, services, and their interactions within the game system.
Technologies Used
TypescriptWebAPI
Core Components
-
Game Logic Layer:
Manages game rules, physics, collisions, and player interactions. -
Rendering Layer:
Handles sprite drawing, canvas rendering, and user interface updates. -
Services Layer:
Provides specialized functionalities such as state management, event handling, and track generation.
Directory Structure
src/├── controlers/│ ├── physics-based-controller.ts // Acts as a base for all controllers│ └── player-controller.ts // Manages car-specific logic and controls││├── scenes/ // Contains all scenes│├── services/│ ├── display-driver/| | ├── displayDriver.ts // Canvas rendering and sprite handling│ | └── spriteLoader.ts // Loads and manages sprite resources│ ├── physics-driver // Game physics calculations│ | └── physics-driver.ts│ └── track-service // Track loading and management│ └── track-service.ts│└── game.ts // Entry point for the gameService overview
| Service | Description | Key Responsibilities | Dependencies |
|---|---|---|---|
| DisplayDriver | Manages canvas rendering, sprite drawing, and UI updates. | Render game elements, clear screen | Canvas API, SpriteLoader |
| SpriteLoader | Handles loading, caching, and retrieval of sprite resources. | Load sprite images, manage sprite metadata | Web API |
| PhysicsDriver | Manages the game’s physics engine, including motion and collisions. | Calculate movement, handle collisions | None |
| **TrackService ** | Manages dynamic track generation and boundary handling. | Load and manage track layouts | DisplayDriver |
| PlayerController | Manages player input and car control logic. | Handle input, update car movement | PhysicsDriver |
| PhysicsBasedController | Acts as a base controller for physics-related operations in game elements. | Apply physics logic to game elements | PhysicsDriver |
| UIService | Handles UI components like score displays and interactive elements. | Manage UI rendering, event handling | DisplayDriver |
| Effect service | Handles all the logic related to obstacles & effects. | Manage obstacles & effects | DisplayDriver |