Povídání o tvorbě herních enginů a představení RetroRPG Engine.

Jedná se o WFA aplikaci, textový editor s funkcemi na míru. Patrné je zvýrazňování barvy objektů, což příjemně zvyšuje uživatelský komfort a hlavně záhadné [1] u znaku reprezentující minci. Jedná se o identifikátor instance, což je poměrně zásadní návrhový vzor. Jeho smyslem je unifikace jednotlivých instancí. Krásně to vyjádřil Exupéry v Malém princi – “ „Jdi se podívat ještě jednou na růže. Pochopíš, že ta tvá je jediná na světě. Přijdešš mi dát sbohem a já ti dám dárek – tajemství.“ ID přiřadí každé instanci unikátní číslo, díky kterému k ní potom mohu přistupovat a říct např., že právě zdi o ID 262 chci změnit barvu na modrou. V editoru jsou také tlačítka pro zoomování, celkově se jedná o značně lepší pokus o řešení problému než předešlá varianta. U tohoto editoru byla uložené mapa zároveň exportovanou mapou, kterou je schopen přečíst parser. Jak ale vypadá taková mapa zevnitř?

Bezejmenný

Pro člověka nečitelně a nespravovatelně. Každý řádek obsahuje údaje právě o jedné instanci, parser jede stále doprava a na metatagu #NewLine zvýší y v naparsované mapě o jednotku (a vynuluje x). Mohlo by se skoro zdát, že je problém map vyřešen. Potíž nastává, když potřebuji instancím vymezit chování. Příkladem je situace, kdy chci, aby zeď po srážce s hráčem vypsala nějaký text do logu, ale pouze pokud se jedná o první srážku. Bylo potřeba vytvořit nový editor.

Bezejmenný

Tohle už vypadá docela komplexně, není liž pravda? Na tomto editoru je patrná spousta výhod. Vstup nefunguje na bázi textového editoru, úprava mapy je pohodlná a vyhovující tvorbě komplexních map. Táhla umožňují pohodlné procházení mapy, resource tree přidávání entit, které mají bitmapovou reprezentaci – další zvýšení přehlednosti. Bookmarks snadný přechod na oblíbená místa na mapě. Po kliknutí pravým tlačítkem na jakoukoli entitu se otevře editor kódu, kde můžeme specifikovat její chování. K tomu slouží vlastní jazyk editoru – RetroLanguage. Ačkoli se nejedná o plnohodnotný programovací jazyk, třeba třídící algoritmy, nebo fibonacciho posloupnost v něm uděláte.

Bezejmenný

Jazyk je dynamicky a slabě typovaný, připomíná trochu GML. Důležitý je událostí model (zelené zvýraznění). Jazyk zvládá všechny základní konstrukce včetně cyklů, kolekce včetně generických (zatím list, FIFO, LIFO, priorita, slovník), kompilaci v editoru. Na dalším obrázku je skript zdi, která se po první dotyku hráče postupně přesune o 8 jednotek doprava. Všimněte si, že je v editoru zvýrazněná modře.

Bezejmenný

U tohoto editoru se liší uložená mapa a exportovaná mapa. Při exportu dojde k optimalizaci kódu a transformaci na speciální formát pro parser. Tím bych pro tento článek uzavřel problematiku level editorů. Rozhodně se jedná o podstatnou část a správný návrh je velmi důležitý.

Dále následuje kapitola o vykreslování herního světa na scénu, něco málo o kamerách, parsování, optimalizaci a struktuře události step (krok hry).