Point’n’click platformer

Parę tygodni temu odwiedziłem swojego starego znajomego. Podobnie jak u mnie – jednym z jego marzeń jest stworzenie własnej gry. Po krótkiej dyskusji stwierdziliśmy że zrobimy platformówkę. Mają prostą rozgrywkę, powinno być je łatwo rozszerzać, a poza tym to jeden z moich ulubionych rodzajów gier. Kolega stwierdził że powinniśmy iść w mobilki, bo jest to aktualnie rynek z największymi zarobkami. Nie uznaję grania na telefonie, ale że innego grafika nie znam to się zgodziłem.

Jak zrobić optymalne sterowanie w grze mobilnej? Patryk chciał joysticki na ekranie, ale tak się nie powinno podchodzić do tematu gier na smartfony. Nie możemy odwzorować sterowania z peceta na komórce, bo jest ono nienaturalne. W telefonie używa się gestów, ewentualnie akcelerometru. Ta ostatnia opcja jest kiepska, bo jeśli już w coś gram na telefonie, to przeważnie leżę i akcelerometr się nie sprawdzi.

Padło na zwykły gest tapnięcia. Tam gdzie gracz kliknie – tam bohater pójdzie. Powinno to też uprościć ewentualny port na PC, gdzie stuknięcie w ekran zastąpi się kliknięciem myszą. Koncept przedstawia się następująco:

W jaki sposób podejść do tematu gry point’n’click? Nie wiem. Wymyśliłem takie coś:

  • każdy element terenu będzie miał nad sobą obszar, w który można kliknąć. Rozwiąże to problem, jeśli na ekranie byłyby widoczne dwa obszary jeden nad drugim. Górny będzie miał np. 200px klikalnej warstwy nad nim i dolny to samo. Ewentualnie klikalny obszar powinien kończyć się w miejscu gdzie wykryje kolejny teren u góry, ale to już szczegóły implementacyjne.
  • w miejscach granicznych platform powinny być triggery, np.: Stop(), Jump(). W teorii silnik, który powstanie, będzie bardzo podobny do normalnej platformówki sterowanej strzałkami i spacją. Po kliknięciu w określone miejsce powinienem zasymulować całą sekwencję standardowych ruchów.

Przykład użycia: gracz klika na platformę, do której musi skoczyć. Postać zaczyna iść w jej kierunku. Jeśli jest za daleko – na końcu aktualnej platformy napotka trigger Stop() i zakończy ruch. Jeśli powinna doskoczyć napotka trigger Jump(), który zachowa się tak samo jakby w zwykłej platformówce gracz wcisnął spację. Postać oderwie się od ziemi i zostanie odegrana odpowiednia animacja. Czy jest to dobre rozwiązanie? Czas pokaże.

Kolejne wyzwanie na liście? Utworzenie klikalnych warstw (NPC, clickable item, clickable area). Mam nadzieję że nie rozjedzie to się za bardzo z przedstawionym tu konceptem, chociaż jestem pewny że trochę go zmodyfikuje. A jeśli ktoś chciałby posłuchać parę minut o projektowaniu na urządzenia dotykowe, to polecam ten filmik od Extra Credits: