11.07.2026 08:52

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

⏱️ 3 min read
Share:

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.

📚 Related posts

27.08.2026 20:55

Data, której nie cofniemy nawet my

Każdy certyfikat autorstwa dostaje datę zapisaną w blockchainie Bitcoina — takiej nie podważy nikt, my też nie. Sprawdzisz ją bez konta i bez Moonligh...
Continue reading →
27.08.2026 19:35

Twój kolor, wszędzie

Trzy tryby i siedem akcentów, wspólnych dla strony i Moonlight Animate. Motyw jedzie z kontem, profil pokazuje gościom Twoje kolory, a harmonogram sam...
Continue reading →
27.08.2026 18:31

Kto moderuje i na jakiej podstawie

Moderator to teraz osobna rola z własnym zakresem, a nie administrator w przebraniu. Odrzucenie treści wymaga powodu, który trafia do autora razem z d...
Continue reading →

📧 Stay up to date!

Join the waitlist to get notified about new Dev Blog posts and Moonlight platform launch.