Spis treści
W grach, gdzie do dyspozycji gracza oddano dużo postaci często pojawia się problem z ich rozwojem. Niektóre fragmenty produkcji wymagają, byśmy mieli w drużynie kogoś, kim długo nie graliśmy, kto odstaje poziomem doświadczenia od głównego składu. Istnieje kilka rozwiązań tego problemu – dziś przedstawię chyba najprostsze.
Przygotowania
Skrypt wykonamy na czystym RPG Makerze 2003. Jeśli korzystać z Maniaca, będzie go można bardzo skrócić stosując wskaźniki. Zakładamy, że gracz będzie miał do dyspozycji 10 bohaterów. Od strony bebechów będziemy potrzebowali sześciu zmiennych:
- Wielkość drużyny;
- Losowa liczba;
- Średni poziom drużyny;
- Liczba postaci poza drużyną;
- Średni poziom postaci poza drużyną;
- Średni poziom drużyny -1.
Żeby testować nasze rozwiązania ustawimy kilku NPC na mapie. Pierwszy zajmie się losowaniem trzyosobowej drużyny z dostępnej puli 10 postaci. Najpierw usuwamy całą drużynę, a następnie w pętli losujemy spośród 10 postaci tak długo, a nasza drużyna będzie wynosiła 3 osoby.
Kolejny NPC pokazuje średni poziom postaci w drużynie i poza nią. Do common eventa przejdziemy w następnym kroku.
Trzeci NPC zwiększa poziom naszej aktualnej drużyny o 1.
Ostatni NPC natomiast wywołuje zdarzenie, które będzie wyrównywać poziomy postaci poza drużyną w taki sposób, by nie odstawali specjalnie od aktualnego składu naszej grupy.
Oczywiście wszystkie powyższe służy przede wszystkim testowaniu. Zaimplementowanie tego skryptu w grze może odbyć się w taki sposób, że gracz nawet nie będzie wiedział o jego istnieniu.
Założenia
Istnieje wiele sposobów na rozwiązanie problemu opisywanego w tym poradniku. Zabawy z punktami doświadczenia są jednak nieco zbyt skomplikowane i podatne na błędy, dlatego proponuje prostsze rozwiązanie.
Zgodnie z moim skryptem gra będzie wyliczała średni poziom doświadczenia aktualnej drużyny. Następnie obliczy średni poziom doświadczenia postaci poza drużyną. Jeśli ta druga wartość będzie znacznie odbiegała od pierwszej, podniesiemy poziomy postaciom spoza drużyny. W moim przypadku ta różnica wynosi 2 poziomy doświadczenia.
Mówiąc prościej – jeśli postacie poza drużyną będą średnio o dwa lub więcej poziomów niżej od postaci w drużynie, ich poziomy zostaną zwiększone.
Obliczanie średnich
To, co w Maniacu zrobilibyśmy wskaźnikami, tutaj musi wykonać ręcznie. Dlatego tworzymy Common eventa, który będzie nam liczył obie średnie. Tak wygląda całe zdarzenie, przy czym jest skomplikowane tylko na pierwszy rzut oka:
Najpierw zerujemy cztery wartości zmiennych – liczbę postaci w drużynie i poza nią oraz ich średnie poziomy doświadczenia. Następnie po kolei sprawdzamy, czy dana postać jest w drużynie. Jeśli tak, dodajemy jej poziom doświadczenia do zmiennej i zwiększamy zmienną wskazującą na wielkość drużyny o 1. Jeśli, analogicznie zwiększamy drugi komplet zmiennych. Na końcu dzielimy sumę poziomów w obu przypadkach przez liczbę postaci w drużynie lub poza nią.
Zwiększamy poziom doświadczenia
Drugi common event to pętla także wywoływana przez komendę Call event (choć można to także dostosować do działania na Parallel Process):
W pętli wywołujemy najpierw poprzedniego common eventa, by mieć już wyliczone średnie. Następnie średni poziom drużyny obniżamy o 1, bo to będzie nasz górny limit. Wszystkie kolejne komendy będziemy ustawiać w warunku sprawdzającym, czy średni poziom doświadczenia postaci poza drużyną jest mniejszy od naszego limitu. Jeśli warunek jest spełniony, każdej postaci niebędącej w drużynie zwiększamy poziom o 1. Po osiągnięciu limitu łamiemy pętlę.
Podsumowanie
Ten prosty, choć nieco łopatologiczny sposób pozwala nam na uchronienie graczy przed grindem postaci, którymi na co dzień nie grają, a które w jakimś momencie fabuły będą musieli wykorzystać. Zachęcam do komentarzy i eksperymentowania z kodem!
Michał „Michu” Wysocki
Pomysł to z pewnością opcjonalny jest. Ja uważam, że w grze postaci, które tak naprawdę nie są używane wystarczająco to nie efekt tego, że jest ich za dużo tylko tego, że gra została tak zaprojektowana, że nie łączy dostatecznie dobrze opowiadanej fabuły z rozgrywką i połączeniem z postaciami tej fabuły i rozgrywki co czyni zaniedbanie na polu sensu istnienia danych postaci jako w ogóle ogniowo rozrywki. Mogłyby teoretycznie istnieć tylko w teorii nie jako skład drużyny. Ostatecznie są gry, w których dołączanie ogroma postaci do drużyny nawet dziesiątek i więcej może wykazywać większą integralność z światem i NPC choćby po to, żeby pokazać przepaść siły między jednostkami. Jak zwykle ja widzę więcej. wasz x-teszek.