Poradnik 95: Lekcja 4 – Warunki startu zdarzenia i przełączniki

No, dzień dobry. W poprzedniej lekcji nauczyliśmy się stawiać proste zdarzenia. Jednak co to za przyjemność móc tylko chodzić i rozmawiać, bez większych interakcji? Dlatego w dzisiejszej lekcji nauczymy się robić proste zadanie, a szerzej – sprawimy, by gra odpowiednio reagowała na poczynania gracza. Będzie więc o stawianiu warunków i ich spełnianiu.

Warunki startu zdarzenia

Otwórzmy więc okno edycji zdarzeń (możemy na razie kliknąć gdziekolwiek na mapie) i przełączmy się na 2 stronę. Jak zauważycie 4 nieaktywne dotąd opcje ustawień stają się nagle aktywne:

Są to tak zwane warunki startu strony zdarzenia. Jeśli nie zaznaczymy tu żadnej z tych opcji – strona pozostanie nieaktywna, co jest jedną z większych różnic względem nowszych wersji RM – w ich przypadku taki stan byłby uznany za „zawsze spełnione”. W RM95 zaś taki stan jest jednoznaczny z nieistnieniem danej strony zdarzenia – ustawione na takiej stronie grafika, zachowanie i komendy nigdy nie zostaną wykonane w grze.

Ale po co nam w ogóle kolejne strony w zdarzeniu? Odpowiedź jest bardzo prosta – do zmian zachowań danego zdarzenia. Dajmy na ten przykład, że tworzymy sobie skrzynkę z której gracz może wyciągnąć np. 100 monet. Wszystko fajnie, tworzymy zdarzenie, dajemy grafikę skrzyni i warunek na wciśnięcie przycisku. W samych komendach ustawiamy komendę „zmień pieniądze + 100”, ewentualnie jakąś animację otwierania skrzyni, dźwięki i komunikat, że oto właśnie przybyło nam wielkie nic, czyli 100zł. Gracz podchodzi to takiej skrzyni, wyciąga 100zł, po czym stwierdza „a zajrzę jeszcze raz”, a tam co – kolejne 100zł, i tak w nieskończoność. Dzieje się tak dlatego, że zdarzenie nadal pozostaje takie samo. Żeby móc ten stan zmienić, będziemy właśnie potrzebować kolejnych jego stron, a co za tym idzie, również warunków ich startu.

Do dyspozycji mamy 4 rodzaje warunków, które spełnione aktywują nam daną stronę:

  1. Item – gra sprawdza, czy gracz posiada ustawiony w tym warunku przedmiot (przy czym nie ma znaczenia czy jest to zwykły przedmiot w plecaku, czy część z wyposażenia któregoś bohatera w drużynie). Opcja przydatna, jeśli chcemy uzależnić jakieś zdarzenie od posiadanego przedmiotu – np. jeśli posiadamy pochodnie, to w jaskini będzie jasno, w przeciwnym wypadku byłoby ciemno,
  2. Member – warunek będzie spełniony, jeśli będziemy posiadać w drużynie zaznaczone w tym warunku postacie (numer odpowiada numerowi z Character Editor). Jak się łatwo domyślić, przydatne kiedy warunkujemy jakieś wydarzenie od postaci, które mamy w drużynie np. jeśli mamy w drużynie jakiegoś złodzieja, to strażnicy mogą nas nie wpuścić do miasta,
  3. Gold – gracz musi posiadać podaną lub większą niż podaną ilość pieniędzy. Tu wykorzystanie jest raczej jasne, tą opcją możemy np. stworzyć postać, która za dołączenie do naszej drużyny będzie chciała jakąś kwotę pieniędzy,
  4. Switch XXX is ON – wybrany przełącznik musi być włączony – jest to warunek, który będziemy najczęściej wykorzystywać i na nim głównie się skupię w dalszej części tego tekstu.

Jak zapewne zauważyliście, na jednej stronie możemy aktywować więcej niż jeden warunek jej startu. Jeśli tak zrobimy, to gra będzie wymagała spełnienia ich wszystkich – na przykład jeśli ustawimy warunek posiadania jakiegoś przedmiotu i pieniędzy powyżej jakieś kwoty, to strona zadziała tylko jeśli oba te warunki będą spełnione. Samo z siebie nasuwa to wniosek, że jeśli będziemy chcieli zrobić zdarzenie, które będzie wymagało od gracza spełnienia dowolnego z tych przykładowych warunków – to musimy to rozbić na 2 strony, gdzie na jednej ustawimy warunek od przedmiotu, a na kolejnej od złota.

Teraz pewnie w waszej głowie powstaje pytanie „ale jak sprawić by te warunki mogły być spełnione?”. Spokojnie, wszystko kryje się w komendach, które możemy wstawić do różnych zdarzeń:

Jak widać, zaznaczyłem część komend kolorami. Komendy z każdego koloru mogą wpłynąć na spełnienie (bądź nie) innych warunków:

  1. kolorem czerwonym zaznaczyłem tylko komendę zmiany przełącznika (Change Game Switch);
  2. komendy zaznaczone kolorem niebieskim mogą wpłynąć na stan posiadanych pieniędzy. W poleceniach Shop (sklep) i Inn (hotel) możemy nasze monety tracić, w Cmbt (Combat – walka) zyskać, zaś w Gold Held (zmień ilość pieniędzy) – ręcznie ustawić ilość posiadanego, dodawanego lub odejmowanego złota;
  3. komendy zaznaczone kolorem zielonym wpływają na posiadane przez nas przedmioty. W Shop (sklep) gracz może je nabyć, w ChangeNoOfItms (zmień przedmioty) można je ręcznie dodać lub usunąć, a także mogą być one nagrodą w walce (Cmbt);
  4. kolorem żółtym zaznaczyłem polecenie, które umożliwia zmianę drużyny (Change Party).

Jednak, jak wspomniałem, najczęściej wykorzystuje się warunek sprawdzający czy przełącznik jest włączony, dlatego w dalszej części tej lekcji skupimy się głównie na nich.

Przełącznik

Wybierzmy więc testowo komendę Change Game Switch (zmień przełącznik), a ukaże nam się takie oto okno:

Klikając na największy przycisk (na obrazku jest to 002), otworzymy kolejne okno:

Jest to lista dostępnych w grze przełączników. Mamy ich do wykorzystania 1000. Wybierając którąkolwiek pozycję z tej listy polecam nadać jej nazwę przez wybranie opcji Name Switch. Jest to nam potrzebne po to, aby nie pogubić się podczas tworzenia własnej gry, kiedy będziemy wykorzystywać już sporo przełączników. Sama nazwa najlepiej żeby nawiązywała do tego, co będzie robić strona w zdarzeniu, którą będziemy nim aktywować. Dodam też, że nazwy tu nadane nie pojawią się nigdzie w grze, są one tylko po to, aby ułatwić orientację w projekcie podczas jego tworzenia.

Kliknięcie dwa razy na przełącznik z listy lub wybór i kliknięcie OK spowoduje zamknięcie tego okna i powrót do poprzedniego, ze zmienioną nazwą największego przycisku, na nasz wybrany przełącznik. Teraz zostaje nam tylko wybrać, czy chcemy takowy włączyć (On), czy wyłączyć (Off). Domyślnie wszystkie przełączniki są wyłączone. Po wciśnięciu OK, komenda pojawi się  w naszym zdarzeniu:

Póki co tyle nam wystarczy, możemy więc przejść do stworzenia pierwszego zadania w naszej grze – dajmy więc jeść pieskowi.

Pierwsze zadanie – karmimy psa

Odpalmy nasz projekt i otwórzmy zdarzenie z psem. Przypominam, że wygląda ono na razie tak:

Teraz na samym dole, pod wiadomościami, dajmy polecenie zmiany przełącznika i włączmy pierwszy przełącznik. Polecam go nazwać 000 – glodny pies. Możecie zauważyć tu 2 rzeczy: 1. zostawiłem numer przełącznika, 2. nie używam polskich znaków. Rzecz pierwszą zrobiłem z przyzwyczajenia – po prostu lubię mieć zachowaną numerację przełączników – jeśli uznacie to za zbędne, możecie wywalać numery. Druga to wytwarzanie u siebie dobrych nawyków – w tym miejscu polskie znaki nie wpłynęłyby w żadnym stopniu na działanie gry, jednak są miejsca, gdzie kolidują, jeśli więc mogę – wolę ich unikać.

Samo zdarzenie po tej operacji będzie wyglądać tak:

Jedzenie umieścimy zaś w piwnicy naszego domku. W mojej wersji znajduje tam się kosz z czymś czerwonym w środku:

Proponuję, żebyście też to gdzieś u siebie umieścili (kosz ten znajdziecie w zakładce C tilesetu), oczywiście w miejscu, do którego może dojść bohater. Teraz otwórzmy zdarzenie z tym koszem i przełączmy się od razu na stronę drugą. W warunkach startu zaznaczmy Switch i wybierzmy ten nasz nazwany – w tym przypadku możliwe, że będzie on automatycznie ustawiony, ponieważ użyliśmy pierwszego z listy. Ważne jest również pamiętanie o zmianie Displayed z Below Hero na Same Level as Hero – ponieważ w tym pierwszym przypadku gracz nie mógłby wejść w interakcję z takim zdarzeniem. Kolejno zostaje nam tylko umieszczenie odpowiednich poleceń. Na początek dajmy więc wiadomość o treści: „Czy chcesz zabrać psią karmę?” (zasady tworzenia wiadomości omówiłem w poprzedniej lekcji). Pod nią zamieścimy komendę If. Then Branch, której jeszcze nie omawiałem, a więc zrobię to teraz.

Ogólnie pozwala ona postawić przed graczem wybór od 1 (co nie ma za bardzo sensu) do 4 opcji. Po jej wybraniu ukazuje nam się takie okno:

Jak widać, możemy tu wpisać 4 opcje (tu również działają znaki specjalne, jak w wiadomościach), które w grze pojawią się w formie listy, z której gracz może wybrać jedną. Ważna uwaga jest taka, że ilość opcji, którą wpiszemy za pierwszym razem, nie będzie mogła być potem zmieniona – jeśli nagle zdecydujemy, że jednak chcemy jedną opcję mniej, lub więcej – to całą tą komendę musimy usunąć i stworzyć od nowa – co również usuwa nam wszystkie komendy które będą zawarte w jej rozgałęzieniach. Na razie nie musimy się tym zbytnio martwić – wpiszmy po prostu na pierwszym miejscu „Tak”, a na drugim „Nie”. Po tym wszystkim nasze zdarzenie wygląda tak:

Jest to jedyna komenda w RM95, która zajmuje więcej niż jedną linijkę, i jedyna umożliwiająca rozgałęzienie zdarzenia w ramach samych komend na jednej stronie. Tak, w 95 nie istnieją żadne inne, znane z późniejszych wersji komend warunkowych jak np. Wstaw warunek. Jedyne warunki to te, które ustawiamy na starcie całej strony zdarzenia.

Jako iż jest to wyjątkowa komenda, to wstawianie nowych komend pod jej rozgałęzieniami również jest na pierwszy rzut oka nieintuicyjne, jednak ciągle zgodne z logiką wstawiania wszystkich poleceń. Nadal po prostu chcąc wstawić komendę robimy to na linijce, która znajduje się pod linią w której chcemy wstawić coś nowego. A więc żeby wstawić coś pod -<Tak>, klikamy dwa razy (lub wybieramy Insert z menu) na napisie -<Nie>. Analogicznie, aby wstawić coś pod -<Nie>, robimy to na napisie [End Ask].

Wstawmy więc pod -<Tak> komendę zmieniającą przełącznik (Change Game Switch) i włączmy drugi na liście przełącznik (oczywiście też go nazywając np: 001 – mamy karme). Opcja -<Nie> w tym przypadku może nic nie robić, zostawmy więc ją pustą. Nasze zdarzenie wygląda teraz tak:

Odpalając teraz grę, rozmawiając z psem i schodząc do piwnicy, możemy ciągle zabierać naszą karmę, co może i w tym przypadku nie jest aż takie dziwne, w końcu w koszu może być więcej porcji, ale proponuję jednak wizualnie zamienić kosz na pusty, uniemożliwiając wzięcie naszej karmy więcej niż jeden raz. Aby więc to zrobić, przełączmy się na 3 stronę w zdarzeniu. Tu wystarczy tylko ustawić start zdarzenia na nasz ostatnio nazwany przełącznik i grafikę na pusty kosz:

Teraz wróćmy do zdarzenia z naszym pieskiem. W tej chwili nawet mając karmę wciąż wyświetla nam się dialog, że musimy go nakarmić, utwórzmy więc kolejną stronę, która nam to umożliwi. W tym momencie mam nadzieję, że wiecie jak to już zrobić i jaki warunek ustawić. Jeśli nie, poniżej będzie zrzut. W komendach zdarzenia znów możemy dać wiadomość o treści „Czy chcesz dać jeść pieskowi?”, a pod nią wybór „Tak” lub „Nie”. Pod „Tak” dajmy włączenie kolejnego przełącznika, który nazwijmy 002 – piesek syty, a „Nie” znów zostawmy puste. Całość powinna wyglądać tak (uwaga: pamiętajcie o zmianie prędkości, ja zmniejszam ją na 5):

Zostało nam tylko utworzenie kolejnej strony u pieska (znów, nie chcemy go karmić w nieskończoność, żeby nam nie zdechł z przejedzenia) gdzie po prostu damy jakąś wiadomość informującą gracza, że pies nie jest już głodny. Warunki startu i wszystko ustawiamy analogicznie jak wcześniej, zmieniamy tylko przełącznik na ten odpowiedni. U mnie wyszło to tak:

Teraz można zapisać grę i sprawdzić, czy wszystko działa jak powinno.

Drobne poprawki

Nasze pierwsze zadanie jest skończone, jednak nie jest ono idealne. Musimy pamiętać, że tworzymy grę i tak naprawdę nie wiemy, co wykona gracz, więc musimy przewidzieć jak najwięcej scenariuszy. Pewnie jesteście zdziwieni co w tym prostym zadaniu może zepsuć gracz. Póki co w sumie nic, a przynajmniej jeśli będzie grał w grę pierwszy raz. Bowiem z kolejnym razem, może pamiętać, że pies jest głodny i trzeba go nakarmić. Zejdzie więc od razu do piwnicy po karmę, ale nie będzie mógł jej wziąć, bowiem w wersji, którą zrobiliśmy, wymagamy, aby gracz najpierw wszedł w interakcję z psem, a dopiero potem z karmą. Może wydawać to się drobną pierdołą, ale takie właśnie rzeczy również wpływają na nasze odczucia z gier – jeśli więc możemy, postarajmy się je wyeliminować. Koniec końców postać w grze może sobie przypomnieć o nakarmieniu swojego pupila nie tylko przez interakcję z nim, ale również na widok samej karmy. Doróbmy więc na pierwszej stronie zdarzenia z karmą możliwość jej wzięcia. U mnie jest to coś takiego:

W tym wariancie zupełnie pomijamy aktywację przełącznika 000 – glodny pies, nie ma to jednak wpływu na nasz skrypt, ponieważ w całości przeskakujemy krok, w którym na początku musieliśmy wejść w interakcję z psem.

W tym wypadku zadanie było bardzo proste i łatwo było je w ten sposób ulepszyć. Jednak gdy wasze gry zaczną się rozrastać, to również liczba kombinacji ścieżek, którymi może pójść gracz, znacznie się powiększy, warto więc nauczyć się jak najlepiej przewidywać różne scenariusze, co pozwoli rozwiązywać takie problemy na bieżąco – jednocześnie poprawiając jakość samej gry.

W tym momencie zadanie jest kompletne, choć nadal ubogie. W miarę uczenia się kolejnych funkcji RM95 sprawimy, by bohater zabierający karmę miał ją w plecaku (przynajmniej póki nie odda jej psu), jak również dodamy nagrodę za zadanie – którą będzie dołączenie naszego pupila do drużyny. Nie rozwinąłem też zbytnio innych rodzajów warunków (jak i również pułapek z nimi związanych), na pewno wrócimy do nich w przyszłości, jednak najpierw musimy poznać jak się edytuje przedmioty i bohaterów – ponieważ jest to niezbędne, aby móc je logicznie wykorzystywać. Mimo to warunek przełącznika i tak uważam za najważniejszy i taki, z którego będziecie najczęściej korzystać.

Podsumowanie

Dzisiaj nauczyliśmy się, jak tworzyć kolejne strony w zdarzeniu i ustawiać ich warunki startowe. Poznaliśmy również komendę zmiany przełączników oraz ich podstawowe wykorzystanie. Omówiłem ponadto polecenie wyboru opcji dialogowej i jak dodawać nowe komendy w rozgałęzieniach, które ona tworzy. W następnej części nauczymy się edytować bohaterów i dodawać ich do drużyny.

Dragon Kamillo

Ściągnij projekt z lekcji

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Ta strona używa Akismet do redukcji spamu. Dowiedz się, w jaki sposób przetwarzane są dane Twoich komentarzy.