Piszemy RPGo-Platformówkę (8) – Diabeł tkwi w szczegółach

Wprowadzamy kilka szczegółów do gry…

Hej, witam Was w pierwszym z dwóch wpisów w których skupimy się na ulepszaniu dotychczas napisanych mechanik do gry platformowej.

Omawiane zmiany dotyczą wersji do commita [f88f9cd] (najlepiej zmiany widać [tutaj]). Jednocześnie pominę omawianie kodu, który jest na/po-prawą działania niektórych featerów (ich objaśnienie znajduje się w szczegółowym opisie konkretnych commitów).

Diabeł tkwi w szczegółach


Jak powszechnie wiadomo szczegóły nie pozostają bez znaczenia, także w kontekście informatyki / gier. Same systemy, które wymyślimy jakby nie były genialne, tak bez odpowiedniego dopracowania na pewno pozostaną niezauważone przez przeciętnego użytkownika.

Musimy też pamiętać, że gra powinna być wygodna dla grającego, tzn. całość powinna być dość intuicyjna (np. sterowanie) lub łatwe w „złapaniu” pewnych intuicji.

Menu pauzy (końca poziomu)

Gra powinna także posiadać wyraźnie przerywniki pomiędzy kolejnymi poziomami, misjami podczas których gracz może odetchnąć lub przerwać grę (fajnie opowiedzieli o tej mechanice ludzie z [Extra Credits]).

Z tego powodu stworzymy sobie wewnętrzne menu, z poziomu którego będziemy mogli:

  1. Zapauzować grę / przejść do następnego poziomu jeżeli ukończyliśmy poziom.
  2. Zobaczyć aktualny cel poziomu.
  3. Zrestartować poziom.
  4. Wyjść z gry
Menu na uruchomienie poziomu

W tym celu stworzyłem nakładkę która w momencie aktywacji pauzuje całą rozgrywkę oraz zależnie od stanu rozgrywki (pauza / koniec gry / brak kolejnych poziomów) jest w stanie odpowiednio zareagować.

Dodatkowo finalnej zmianie uległy metody z cyklu Notify które teraz potrafią w sposób nie-konsolowy zareagować na wygraną / przegraną gracza.

Menu końca gry

Nowe poziomy

Skoro doszedł nam feature jakim jest płynne przejście pomiędzy poziomami, to warto go wykorzystać tworząc nowe poziomy. Od teraz chcemy aby każdy poziom cechował się następującą sekwencją:

  1. Wyświetlenie menu poziomu (cel gry)
  2. Przejście do właściwej gry
  3. (opcjonalne) wyświetlanie menu pauzy
  4. Menu zakończenia gry

Dodane przeze mnie poziomy (dostępne do obejrzenia w [demie]) mają charakter samouczkowy i na pewno nie stanowią żadnego wyzwania. Ale jak być może wspominałem, przedstawiam tutaj głównie mechanizmy do tworzenia gier, a nie zajmuję się pisaniem pełnoprawnej gry ;)

Manu pauzy

Siłą rzeczy w tym paragrafie nie ma jak pokazać kodu bo całe poziomy powstały przy użyciu Unity Edytora, nowe mechanizmy które wraz z nimi doszły omówię w kolejnym podrozdziale.

Tutaj chciałbym jedynie pokrótce wspomnieć, że przy tworzeniu gier należy zwrócić uwagę na sposób projektowania poziomów: pierwsze powinny mieć charakter samouczkowy (mają uczyć nowych mechanik), a kolejne powinny te nowe mechaniki wykorzystywać i być coraz trudniejsze. Nie zaszkodzi też dodawać nowych mechanik wraz z przebiegem rozgrywki tak aby utrzymać poziom nowych elementów i zaciekawienie gracza.

Rayman Origins jako przykład różnorodnej gry

Nowe elementy rozgrywki

Jak wspomniałem wraz z nowymi poziomami doszły nam nowe elementy rozgrywki.

Najprostszą jest śmierć od upadku w przepaść, która jest zwykłym triggerem pod główną zawartością każdego poziomu gry:

Innym elementem jest możliwość wygrania (konkretnego) poziomu w przypadku gdy wszyscy przeciwnicy zostaną zniszczeni. W tym celu musimy zliczać stworzonych przeciwników:

Oraz stworzyć warunek końca gry:

Podsumowanie


To tyle jeżeli chodzi o ten wpis, zmian było sporo – głównie po stronie wizualnej/grywalnej, dlatego gorąco zachęcam do pobrania [dema] i wypróbowania zmian samodzielnie.

Update 1: właśnie zauważyłem, że demo albo jest na wersji z mini bugiem, albo z dodaną tylko jedną sceną (a więc dostępny jest do ogrania tylko 1 poziom z 3). Poprawioną wersję dema wrzucę na dniach ;)

Update 2: wrzuciłem dobrą wersję, link jest ten sam (paczka z numerkiem 1.6.1).

Tradycyjnie zapraszam do komentowania, śledzenia bloga przez social media i do zajrzenia także do innych prowadzonych przeze mnie serii ;)

W kolejnej części zajmiemy się finalnymi szlifami związanymi z częścią z pisania gry platformowej ;)

Update 2.5: Z racji, że jednak nie będę zmieniał grafik na tym etapie (bo w sumie nie ma zbytniej potrzeby), a część platformowa przedstawia to co chciałem pokazać, to nie będzie kolejnej części. Nawiążę do tej decyzji przy kolejnej części.

Code ON!