Skip to content

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

  • Typescript
  • WebAPI

Core Components

  1. Game Logic Layer:
    Manages game rules, physics, collisions, and player interactions.

  2. Rendering Layer:
    Handles sprite drawing, canvas rendering, and user interface updates.

  3. 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 game

Service overview

ServiceDescriptionKey ResponsibilitiesDependencies
DisplayDriverManages canvas rendering, sprite drawing, and UI updates.Render game elements, clear screenCanvas API, SpriteLoader
SpriteLoaderHandles loading, caching, and retrieval of sprite resources.Load sprite images, manage sprite metadataWeb API
PhysicsDriverManages the game’s physics engine, including motion and collisions.Calculate movement, handle collisionsNone
**TrackService **Manages dynamic track generation and boundary handling.Load and manage track layoutsDisplayDriver
PlayerControllerManages player input and car control logic.Handle input, update car movementPhysicsDriver
PhysicsBasedControllerActs as a base controller for physics-related operations in game elements.Apply physics logic to game elementsPhysicsDriver
UIServiceHandles UI components like score displays and interactive elements.Manage UI rendering, event handlingDisplayDriver
Effect serviceHandles all the logic related to obstacles & effects.Manage obstacles & effectsDisplayDriver