Architektura Systemu i Dokumentacja Klas
Silnik został zaprojektowany z myślą o modularności. Centralnym punktem aplikacji jest pętla gry, która synchronizuje wejście, fizykę (stały krok czasowy), sieć i renderowanie grafiki.
Diagram Przepływu (Main Loop)
graph TD
A[Application::run] --> B[Zarządzanie czasem - Fixed Timestep 60Hz]
B --> C[processInput - Reakcja na klawiaturę/mysz]
C --> D[Network Sync - Odbiór pakietów]
D --> E[Physics & Logic - Aktualizacja świata]
E --> F[Interpolacja - Wygładzanie graczy sieciowych]
F --> G[Render Frame - Rysowanie sceny]
G --> A
Mechanizmy Obiektowe (OOP)
Silnik wykorzystuje polimorfizm i dziedziczenie. Klasą bazową dla wszystkich fizycznych bytów jest abstrakcyjna klasa GameObject. Pozwala to na trzymanie różnorodnych obiektów (graczy, przeszkód, NPC) i odpytywanie ich o uniwersalne cechy (np. metody kolizji AABB).
Pełna Dokumentacja Klas
Core Aplikacji
Application— Serce gry. Inicjalizuje okno GLFW, ładuje rozszerzenia OpenGL, zawiera główną pętlę gryrun(). Koordynuje działanie menedżerów:MenuManager,NetworkManagerorazRenderer. Zarządza też listą przeszkódworldObstacles.GameObject— Klasa bazowa (interfejs). Definiuje wymiary obiektu (width,height,depth), jego pozycję (x,y,z) oraz zawiera domyślną implementację detekcji kolizjicheckCollisionAABB.
Logika i Świat
Player— Dziedziczy poGameObject. Odpowiada za logikę poruszania się (horyzontalnie z uwzględnieniem kąta kamery) oraz wertykalnie (skakanie, grawitacja). Pilnuje kolizji ze światem. Przechowuje strukturęPlayerData.Obstacle— Dziedziczy poGameObject. Reprezentuje statyczną przeszkodę w świecie (ścianę, podłogę, blok).
Moduł Graficzny
Renderer— Spina w całość logikę rysowania grafiki za pomocą OpenGL. Renderuje czcionki (korzystając ze zintegrowanegostb_truetype), tekstury (skybox) i geometrię sceny. W każdej klatce rysuje świat, przeszkody, lokalnego gracza i pozostałych graczy sieciowych.Mesh— Abstrakcja dla geometrii. Przyjmuje tablicę wierzchołków (vertices), generuje bufor na karcie graficznej (VRAM) i pozwala na błyskawiczne rysowanie jednego kształtu milionami pikseli naraz.Shader— Obsługuje kompilację Vertex Shadera i Fragment Shadera oraz łączenie ich w finalny Program GPU. Wyciąga programowalny potok OpenGL na wierzch silnika.OpenGLExt— Moduł wymagany dla platformy Windows! Ładuje wskaźniki do nowoczesnych funkcji OpenGL (związanych z buforami i shaderami), które natywnie nie są obecne w systemie Microsoftu.
Moduł Sieciowy i UI
NetworkManager— Hermetyzuje złożoność protokołu UDP i Socketów. Otwiera porty non-blocking. Potrafi prosić o listę sesji, dołączać, weryfikować połączonych graczy i wysyłać koordynaty co klatkę.MenuManager— Obsługuje UI i Menu główne z wykorzystaniem maszyny stanów (MenuState). Zarządza wirtualnymi przyciskami (strukturaButton), sprawdza stan kursora (Hover) i deleguje zdarzenia doApplication.