ZPMI #012 – rand_global, ale najgorsze to są weekendy.
Dzień dobry!
Tydzień zaczął się przyjemnie, podgoniłem trochę robotę z grą. Bohater może już dojść do tygrysa i może się przebrać w prawdziwe ubrania.
Dopisałem do Escorii komendę rand_global
, dzięki której mogę np. losować odzywki postaci.
Piszę tak:
:use rand_global use_text 3 say player player_use:"Używasz sobie na mnie cały czas." [eq use_text 1] say player player_use1:"Tak, poużywaj sobie" [eq use_text 2] say player player_use3:"Użyj mnie by wygrać grę" [eq use_text 3]
i efekt jest taki:

Fajniusie. Oczywiście to kolejny głupi pomysł i niezawodny sposób, żeby sobie dorobić tonę roboty – bo teraz siedzę i wymyślam 100 różnych odzywek dla każdej postaci 🙂 Gra na tym zyska, bo nie cierpię tych wszystkich 'Nie mogę tego zrobić’ w przygodówkach.
Taka nieśmiała myśl mnie naszła przy tym dopisywaniu kolejnej komendy do Escorii: fajne te skrypty, proste i do ogarnięcia dla projektanta. Ale z drugiej strony to każdy brakujący drobiazg trzeba dopisać. I jednocześnie w tym dopisywaniu się za bardzo nie zapędzić bo zamiast prostego języka skryptowego wyjdzie nieogarnialny mętlik.
Znowu z punktu widzenia programisty te skrypty są strasznie ubogie, trudno dodać skomplikowane warunki czy jakieś odjechane zależności.
W sumie to najlepszym (dla mnie) językiem skryptowym byłby pełnoprawny język o prostej składni – taki Python. Albo GDScript 🙂
Myśl odłożyłem na półeczkę, i zabrałem się za dalszą robotę.
I wszystko było pięknie, aż znowu przyszedł weekend…
Zaczęło się niewinnie – od dogrywania animacji chodu pod Blenderem i robienia animacji dźwigania.
Ale potem obudziły się demony.
Najpierw mnie wrzuciło w Unity znowu. I znowu mnie odrzuciło. Adventure Creator ma bardzo duże możliwości, ale też strasznie dużo walki jest z tym żeby to działało tak jak ja chcę.
No to odpaliłem Godota.
Po raz pierwszy w życiu wybrałem 3D scene zamiast 2D scene.
Poobracałem, dodałem plejna, poobracałem dodałem kjuba.
Dodałem materiał, dodałem efekty kamery.
Jakoś tak 'pod ręką’ wszystko – całkiem miło się robi. To lecimy dalej. Poczytałem o NavMeshach, dodałem prosty skrypt.
No i zanim się obejrzałem miałem takie coś:

Wygenerowany NavMesh i „postać” „idzie” tam gdzie kliknę 🙂
W tym momencie z półki spadła na podłogę myśl o Pythonowym języku skryptowym do przygodówki i narobiła hałasu.
Przecież skoro mam postać chodzącą tam gdzie kliknę to teraz jakbym dodał jakąś klasę Hotspot reagującą na wskazanie myszą i kliknięcie, a potem dodał kulkę, a do tej kulki skrypt Kulka.gd
który będzie dziedziczył z Hotspot to miałbym GDScript do opisywania zachowania kulki. I mógłbym swoją grę skryptować np. tak:
extends "res://Hotspot.gd" func look(): player.say(one_of("Jakaś kulka", "Coś czerwone i okrągłe", "Piłka?")) func talk(): if globale["gadal_z_kulka"] == 0: player.say("Hmm, nie odpowiada. Może głośniej trzeba?") globale["gadal_z_kulka"] += 1 elif globale["gadal_z_kulka"] == 1: player.say("HALO! PROSZĘ PANI!?!") globale["gadal_z_kulka"] += 1 else: player.say(one_of("Nie chce ze mną gadać", "Zaczynam się czuć trochę głupio", "To jest bezcelowe - tu nie ma easter egga")) func pickup(): player.say("A wezmę, pewnie się przyda") player.anim("mid_take") inventory.add(self)
To oczywiście tak z głowy czyli z niczego i na szybko – ale takie skryptowanie to ja bym lubił 🙂
Z rozpędu dodałem menu czasowników, zrobiłem działający Trigger do przechodzenia między scenami i wyświetlanie teksów nad głową gracza.
Cała impreza skończyła się tak:

- Mam chodzącą postać
- Zaimportowaną z Blendka 2.8 (Godot Game Tools)
- Mam działające menu czasowników
- Mam podświetlanie aktywnych przedmiotów
- Mam wywoływanie funkcji na wybranym przedmiocie wg wybranego czasownika
- Mam przechodzenie między scenami
Jak na dosłownie kilka godzin luźnej zabawy to całkiem przyjemnie.
Potrzebuję teraz działający ekwipunek, możliwość zapisu/wczytania gry i obsługę wielu języków. A potem jakiś cwaniacki sposób na dialogi. Do tego z Trigera, Hotspota czy NPCa można zrobić swoje własne Nody i ulepić pełnoprawny plugin do przygodówek. Fajna jazda 🙂
Na razie treść gierki ciągnę na Escorii, ale jeżeli kolejne moduły będzie się dodawało tak samo prosto i przyjemnie to skończy się na 'silniku autorskim’ 🙂
I będę sobie mógł zamówić T-shirta „(another) Proud P&C engine developer” na lato.