11.07.2026 08:52

Silnik gier: viewport 2D i sterowanie (Fazy 1–2)

⏱️ 3 min czytania
Udostępnij:

W poprzednim wpisie pokazaliśmy fundament silnika gier 2D. Teraz silnik dostał oczy i ręce: prawdziwy potok renderowania 2D z kamerą oraz kompletny system sterowania — klawiatura, mysz i gamepad pod jednym, przemapowywalnym systemem akcji.

Viewport 2D: kamera, warstwy, setki sprite'ów

  • Kamera 2D — pan, zoom i obrót; scena zawsze wyśrodkowana na kamerze. Bez kamery widok zostaje 1:1 w pikselach — wygodne przy debugowaniu.
  • Pełny sprite — wycinek tekstury (region), odbicia w poziomie i pionie, barwienie kolorem i krycie per obiekt.
  • Kolejność rysowania — każdy element ma numer warstwy (z-index); wyższy rysuje się na wierzchu, a przy równych wygrywa kolejność dodania do sceny.
  • Wydajność od pierwszego dnia — sprite'y są grupowane po teksturze i rysowane hurtowo (setki obiektów w pojedynczych wywołaniach GPU), a menedżer tekstur pilnuje, żeby ta sama grafika trafiała na kartę tylko raz i była zwalniana, gdy przestaje być potrzebna.
  • Płynny ruch mimo stałego kroku symulacji — fizyka i logika liczą się stałym krokiem (deterministycznie), a obraz interpoluje pozycje między krokami. Efekt: idealnie gładki ruch niezależnie od odświeżania ekranu.
  • Play/Stop w edytorze — jedno naciśnięcie buduje świeżą scenę, drugie czysto ją zamyka; wielokrotne cykle nie zostawiają po sobie niczego w pamięci.
  • Pivot sprite'a i węzeł Timer — sprite można zaczepić środkiem albo rogiem z dowolnym przesunięciem (postać „stoi stopami na ziemi"), a minutnik z sygnałem „timeout" (pojedynczy lub powtarzalny, bez dryfu) to pierwszy czysto logiczny klocek do budowania rozgrywki.

Sterowanie: akcje zamiast klawiszy

Logika gry nie pyta „czy wciśnięto E?", tylko „czy gracz wykonał akcję skok?". To drobna różnica, która zmienia wszystko:

  • Jedna akcja, wiele urządzeń — do akcji można przypiąć naraz klawisz, przycisk myszy, przycisk pada i wychylenie drążka (z martwą strefą i kierunkiem). W naszym demo sprite chodzi jednocześnie na WASD i lewym drążku pada — bez ani jednej dodatkowej linijki w skrypcie.
  • Gamepady na gorąco — podłączanie i odłączanie pada w trakcie gry po prostu działa.
  • Precyzyjne odczyty — skrypt rozróżnia „trzymane", „właśnie wciśnięte" i „właśnie puszczone" — podstawa responsywnego sterowania (skok tylko przy naciśnięciu, nie co klatkę).
  • Edytor mapy wejścia — okno edycji akcji i wiązań: przechwyć nowy klawisz, usuń stare wiązanie, a zmiana działa natychmiast, bez restartu gry. Mapa zapisuje się w prostym formacie tekstowym i trafi do pliku projektu gry.

Pod maską: wciąż jeden przenośny rdzeń

Wszystko powyżej żyje w przenośnym rdzeniu silnika — zero zależności od warstwy okienkowej edytora, ta sama automatyczna bramka czystości przy każdym buildzie i komplet testów jednostkowych (13 grup: od matematyki transformacji, przez interpolację ruchu, po wykrywanie zboczy sygnału wejścia). Podgląd Play w edytorze i przyszła wyeksportowana gra wykonują dokładnie ten sam kod.

Co dalej?

Kolejny krok to fizyka 2D: ciała statyczne, kinematyczne i dynamiczne, kolizje i strefy wyzwalaczy — a zaraz po niej pełny graf zdarzeń i skrypty z prawdziwą pętlą rozgrywki.

📚 Powiązane posty

14.07.2026 22:19

Silnik gier: od szablonu do grywalnej gry RPG top-down

Startowy szablon silnika gier to teraz kompletny, grywalny wycinek gry RPG top-down: chodzenie po siatce, rozmowy z postaciami, przeciwnik goniący gdy...
Czytaj dalej →
14.07.2026 19:16

Moonlight Animate — system dialogów w grach

Silnik gier 2D w Moonlight Animate ma teraz kompletny system dialogów: kwestie z efektem maszyny do pisania, wybory z warunkami, zmienne fabularne i g...
Czytaj dalej →
14.07.2026 18:40

Moonlight Animate: ruchoma panorama dźwięku także w wyeksportowanym wideo

Dźwięk przejeżdżający z lewego do prawego głośnika brzmiał dobrze w podglądzie, ale eksport przez serwer zamrażał go w miejscu. Ostatnia luka parytetu...
Czytaj dalej →

📧 Bądź na bieżąco!

Zapisz się na listę oczekujących, aby otrzymywać powiadomienia o nowych postach na Dev Blog oraz informacje o starcie platformy Moonlight.