Mniejsze okienko dialogowe w domyślnym systemie walki RM 2003

Jedną z bardziej irytujących mnie rzeczy w domyślnym systemie walki w RPG Makerze 2003 jest okienko dialogowe wyświetlające się zawsze u góry ekranu. W takim ułożeniu zasłaniamy 2/3 ekranu okienkami, co wygląda po prostu brzydko. W RPG Makerze 2000 ten problem nie występował, ponieważ wszystkie okienka pojawiały się na dole, a pole walki nigdy niczym nie było zasłaniane. Szkoda, że w RM2003 uległo to zmianie, tym bardziej, że system 2003 w założeniu bardziej jest oparty na animacjach. Na prawdę nie rozumiem powodów tego rozwiązania.

Jednak istnieje pewna sztuczka, dzięki której problem ten może okazać się mniej dokuczliwy – a całość prezentować się w ten sposób

Niestety nie znam żadnego sposobu, aby w RM2003 dialogi były pokazywane na dole, podobnie jak w RM2000, z wyjątkiem zrobienia ich od zera na obrazkach, lub użycia funkcji String Picture z Maniacs Patcha.

Ten poradnik jest pisany na czystym angielskim RM2003 1.12, jednak zadziała też ze starszymi wersjami (jednak bez wyświetlania obrazków, wtedy należy zastępcze okno dodać np. na tle walki), jak i również z Maniacs Patchem (także najnowszym), i w easyrpg.

Przygotowania

Potrzebujemy odpowiednich grafik – przerobionej grafiki system i obrazków mniejszego okienka. W tym poradniku użyję domyślnego SystemC z RTP, który wygląda tak:

I utworzę od niego plik, w którym tło i ramki zamienię na kolor przeźroczysty, zapiszę to jako SystemC-walka.png, a efekt poniżej:

No i na końcu obrazek naszego mniejszego okienka. Ja użyję takiego – ponieważ jest to rozmiar komunikatów wyświetlanych podczas walk u góry ekranu i będzie spójne:

Jako iż w przykładzie używam systemu walki A, to okienko przygotowałem nieprzeźroczyste. Jeśli ktoś używa B, lub C i chciałby półprzeźroczyste, to musi przygotować osobno obrazek tła i ramki.

Wykonanie

Mamy grafiki, przechodzimy więc do samego wykonania. Tworzymy sobie dwa globalne wydarzenia – dialog walka start i dialog walka koniec. W pierwszym z nich ustawiamy wyświetlanie tekstu na przeźroczystym okienku, zmieniamy grafikę systemową na przygotowaną przez nas i wyświetlamy obrazek. W drugim robimy to samo, tyle, że na odwrót – okienka ustawiamy na nieprzeźroczyste, system zmieniamy na podstawowy, a obrazek usuwamy.

Wystarczy, że wywołamy pierwsze zdarzenie przed dialogiem, drugie po, w zdarzeniach walki i efekt gotowy.

Oczywiście nie muszę chyba wspominać, że w ustawieniach obrazka należy ustawić by wyświetlał się on podczas walki, nad efektami pogodowymi.

Na koniec też mała podpowiedź – jeśli chcemy dopasować nasze tło do tła okienek półprzeźroczystych to wyświetlamy obrazek z opcją Transparency ustawioną na 35%. Tak, półprzeźroczyste okienka w RM nie odpowiadają ustawieniu 50%, tylko właśnie 35%.

Podsumowanie

W taki oto prosty sposób możemy upiększyć naszą domyślną walkę w RM 2003. W końcu możemy odsłonić pole walki podczas dialogów, jeśli nie przekraczają one jednej, lub (po modyfikacjach wielkości obrazka) dwóch linii. Równie dobrze można też nie podstawiać żadnego obrazka i wyświetlić dialogi bez tła. Niestety to rozwiązanie ma kilka wad.

Pierwsza – trzeba zrezygnować z wyświetlania facesetów w dialogach podczas walki. Można też zmienić je na coś mniejszego, mieszczącego się w mniejszym okienku.

Druga polega na tym, że mniejsze okienka, tak wykonane, nie posiadają migającego znaczka oznaczającego, że gracz ma wcisnąć przycisk. Dodanie jego jest uciążliwe, chyba że zdecydujemy się na natychmiastowe pokazywanie tekstu. Jeśli tak, wystarczy odpowiedni obrazek z jego animacją. Przy tekstach, które pokazują się stopniowo musielibyśmy wyłapać moment w którym cały widoczny jest już na ekranie, a to nie jest takie proste. Póki co nie przychodzi mi żaden łatwy i bezbolesny, albo kompletnie niewidoczny dla gracza pomysł. Może ktoś na taki wpadnie i podzieli się tym w komentarzach.

Należy też dopasować obrazki pod wybór wielkości okienek, w poradniku korzystałem z dużych okienek w walce, w małych wielkości mogą się różnić.

Dlaczego to działa?

Metoda ta wykorzystuje pewien błąd w wyświetlaniu się okienek. Okienka podczas walki powinny być zawsze wyświetlane, niezależnie od ustawień wyświetlania tekstu. Jednak z jakiegoś powodu w RM 2003 jest to zepsute. Pierwsze objawy tego zepsucia możemy łatwo zauważyć. Wystarczy ustawić okienka na półprzeźroczyste, system walki na B lub C, a wyświetlanie tekstu na brak tła. Efekt po wywołaniu walki będzie taki:

Przy braku ustawienia okienek półprzeźroczystych, efekt z powyższych zrzutów jednak nie występuje. Na szczęście tutaj wkracza nasz przerobiony obrazek System. Dzięki niemu, niezależnie od ustawień półprzeźroczystości okienka, możemy pozbyć się tak samo części okien z walki. Efekt w systemie A poniżej:

Wartym odnotowania jest fakt, że w obu przypadkach nie pozbyliśmy się tła spod listy bohaterów. Niestety z tego jednego miejsca nie możemy się go pozbyć i zawsze coś tu zostanie. Ale nie ma to znaczenia dla naszego skryptu.

Gdy już to mamy odkryte, to do metody którą pokazałem w poradniku całkiem blisko. Wystarczy sobie jeszcze uświadomić fakt, że RM nie odświeża non-stop okienek. Dzięki czemu możemy na ekranie wyświetlić różne grafiki System, a więc nasze dialogi możemy wyświetlić na innym tle, niż inne menusy w walce. Tak na prawdę RM odczytuje grafikę z pliku tylko podczas samego rysowania okienka, raz narysowane nie będzie reagować na zmiany pliku. Przynajmniej dopóki nie będzie trzeba go przerysować.

Wypisałem też na początku wersje silnika w którym ta sztuczka działa. Jako iż jest to swego rodzaju błąd, albo nieumyślna funkcjonalność, może być tak, że od pewnej wersji silnika przestanie działać. Ale na dzień dzisiejszy (luty 2022) wydaje się, że działa wszędzie. Jakby coś było nie tak, dajcie znać w komentarzach.

I to w sumie tyle. Samo rysowanie tekstu w RM ma jeszcze sporo dziwactw, które postaram się wyjaśnić przy innych okazjach.

Bonus – prawie niewidoczna, prosta metoda, usuwająca drugą wadę

Pisząc dialog, od razu zamykamy go komendą \^ na końcu.

Teraz wyświetlamy obrazek migającego znaczka, ja przygotowałem taki:

Należy użyć go jako animowany spriteset, z szybkością animacji 20 (co wydaje się być dokładną szybkością przy oknie wiadomości). Miejsce jego wyświetlenia też najlepiej dopasować, tak by było takie same jak w zwykłych okienkach.

I po tym znów dajemy wiadomość, jednak tym razem cały nasz tekst zamykamy między \>, a \<, co wyświetli go natychmiastowo.

Metoda jest prawie niewidoczna, tekst tylko lekko mignie podczas wyświetlania się obrazka. Po za tym jest to chyba metoda najprostsza, nie wymagająca wielu komplikacji. Ale jak zwykle – komentarze są wasze. Może ktoś zna lepszy sposób, chętnie zobaczę inne propozycje na rozwiązanie tego problemu.

Dragon Kamillo

Jeden komentarz do “Mniejsze okienko dialogowe w domyślnym systemie walki RM 2003

  1. Super, że w końcu pokazał się poradnik, bo dzięki Dragonowi umila mi to planowanie walk – też uważam, że oryginalne 4wierszowe okienka w walce są okropne.
    U mnie patent jest mieszanką między tekstem Dragona, a poradnikiem Micha o dodaniu domyślnego okienka – dzięki temu całość mieści się w jednym common evencie, włączanym lub wyłączanym w zależności od wartości przełącznika.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.