top of page

⚙️ Configurable UI & Data System

GitHub.png
  • Modern UI Architecture: Leveraged Unity UI Toolkit to enforce a strict separation between the visual layer (UXML/USS) and application logic (SettingsView), mirroring modern MVC web development standards.

  • Robust Data Persistence: Engineered a centralised SettingsManager Singleton to wrap PlayerPrefs and AudioMixer logic, ensuring type safety and data integrity across game sessions.

  • Responsive Visual Design: Utilised Flexbox architecture and USS styling to create a resolution-independent, professional dark-themed interface with custom control overrides for a consistent user experience.

  • System Integration: Seamlessly bridged UI events with Unity's core systems, mapping slider values to exposed Audio Mixer parameters and dropdowns to global Quality Settings in real-time.

🎮 Modular Player Controller

  • Interface-Based Decoupling: Utilised the IInputReceiver interface to create a strict contract between input handling and movement logic, ensuring the controller is agnostic to the input source (e.g., AI vs. Player).

  • Reliable Physics Implementation: Engineered movement logic within the FixedUpdate lifecycle using Rigidbody forces and velocity (using Unity 6 linearVelocity), ensuring smooth, frame-rate independent gameplay physics.

  • Modern Input Integration: Implemented the Unity New Input System with event-driven callbacks (performed, cancelled), forwarding data purely through the interface to maintain modularity.

  • Separation of Concerns: Strictly divided responsibilities: PlayerInputHandler solely manages input events, while PlayerController exclusively handles physics and state, adhering to SOLID principles.

GitHub.png
GitHub.png

💻Modular Game Flow System

  • Decoupled Architecture: Built a scalable, professional core using the FSM (Finite State Machine) and Observer Pattern to eliminate direct class dependencies (i.e., no more FindObjectOfType<>()).

  • Singleton Management: Implemented the Singleton Pattern (GameStateManager) to ensure safe, persistent, and globally accessible control over the application state.

  • Decoupled Input: Integrated the Unity New Input System and C# Interfaces to separate input reading logic from the state transition logic, making input controls flexible and easy to modify.

  • FSM Lifecycle Control: Successfully implemented the core FSM logic, ensuring every state transition reliably calls the required ExitState() (cleanup) and EnterState() (initialization) methods.

  • Event Broadcasting: Used C# Events/Delegates to broadcast key changes (OnGameStart, OnGameOver), enabling UI and Audio systems to react without knowing which script triggered the change.

bottom of page