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:

  1. Mam chodzącą postać
  2. Zaimportowaną z Blendka 2.8 (Godot Game Tools)
  3. Mam działające menu czasowników
  4. Mam podświetlanie aktywnych przedmiotów
  5. Mam wywoływanie funkcji na wybranym przedmiocie wg wybranego czasownika
  6. 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.