Adventure Game Studio je engine a editor pro snadnou tvorbu klasických point and click adventur. Skriptovací jazyk AGS script je podobný jazykům C# nebo Java. Oproti nim je výrazně zjednodušený, ale přesto si zachovává flexibilitu. I když je AGS vhodné na tvorbu adventur, není v něm problém napsat skákačku, strategii, nebo topdown RPG. Je ovšem nutné počítat s tím, že se jedná o postarší nástroj a proto si z minulosti přináší určitá omezení. Některá lze s trochou snahy obejít.

Nástroj: engine

Grafika: 2D

Programovací/skriptovací jazyk: AGS script

Licence: Artistic License 2.0

Na platformy: Windows

Exportovat lze na: Windows, Linux (částečná podpora PSP, iOS a Androidu)

Web: http://www.adventuregamestudio.co.uk/

Dokumentace: http://www.adventuregamestudio.co.uk/manual/

Fóra: http://www.adventuregamestudio.co.uk/forums/

Další odkazy: https://github.com/adventuregamestudio/ags

Přehlídka her: http://www.adventuregamestudio.co.uk/site/games/

Poznatky

AGS je velmi starý nástroj pro tvorbu adventur. První verze byla vydána už v roce 1997 na MS-DOS. Je tedy překvapující, že pořád přežívá a drží si nemalou a věrnou komunitu fanoušků, která ho od roku 2010 dál vyvíjí . Bohužel se stáří podepsalo na editoru a skriptovacím jazyku, který byl teprve nedávno aktualizován o smyčku for (doposud jste si museli vystačit s while).

Na podobné zaprášené mumie jsem narazil několikrát, ale začal bych pozitivněji. Velkou předností studia je jeho jednoduchost a znalost své cílové skupiny. Není třeba žádné složité nastavování a stahování dodatečných knihoven. Prostě si stáhnete zazipovaný balík, někam ho rozbalíte, spustíte editor a už můžete tvořit. Pokud už míříte na web, měli byste vědět, že na fórech je vždy nějaká novější alpha či beta verze. Pokud se smíříte s možnými bugy, zamiřte tam.

Po spuštění je možné založit projekt s nějakou šablonou, která vám dá dohromady funkční základ, od kterého se můžete odpíchnout. Obecně je ale lepší začít s prázdným projektem a učit se postupně možnosti enginu. Dokumentace je poměrně akurátní, i když v ní chybí popis některých okrajových funkcí (jako třeba maker). AGS script je podobný programovacím jazykům jako C#, i když je značně zjednodušen. Například nemůžete vytvářet vlastní třídy. Musíte se spokojit s těmi předpřipravenými. Navíc si nemůžete ve skriptech libovolně instanciovat třídy. Pokud chcete do místnosti vložit nějaký obecný objekt, musíte ho vytvořit skrze grafický editor místnosti a teprve potom s ním v kódu pracovat. Pokud se nepletu, i v nejnovější verzi 3.4 je pořád limit maximálního počtu objektů na místnost.

Brzy se naučíte podobné limity obcházet. Potřebujete průběžně v místnosti zvýšit počet objektů? Předem si je v editoru vytvoříte a skryjete. Pak je v kódu příkazem zviditelníte. Potřebujete více než 30 objektů? Místo objektu použijte postavu. Těch můžete mít neomezené množství, ale v kódu s nimi můžete pracovat takřka totožně. Některé limity bohužel neobejdete tak snadno, jako například maximálně 30000 spritů na projekt. To je další připomínka toho, kolik má AGS let.

Na jednotlivé sprity se totiž editor odkazuje pomocí 16 bitového čísla, jehož maximální velikost tedy může být 65536. Polovina z toho pak odkazuje na dynamické sprity (ze statického uděláte dynamický, který můžete v kódu upravovat – otáčet, zvětšovat, atd.). Pokud potřebujete víc jak 30000 spritů, můžete rozdělit hru do dvou projektů a pak mezi nimi ve vhodnou chvíli přepnout. Pak ale musíte každou změnu v globálních skriptech nezapomenout provést ve dvou projektech. Navíc je nutné herní assety nacpat do spustitelného souboru, protože externí zdroje budou obě hry sdílet (protože musí být ve stejné složce a externí soubory nelze přejmenovat).

Přesto je AGS velmi flexibilní. Samozřejmě je zaměřen na adventury, ale není problém v něm vytvořit skákačku, RTS nebo topdown RPG či akční arkádu na způsob Hotline Miami. Velmi tomu pomohou funkce pro vykreslování do textur. Nejprve si vytvoříte dynamický sprite a z něj pak drawing surface, skrze který budete vykreslovat (jednoduchou geometrii, nebo jiné sprity). Takto jsem například vytvořil level do plošinovky. Smyčkou vykreslit všechny bloky do dynamického spritu a ten pak přiřadit jednomu objektu. Kolize pak stačí kontrolovat vůči řadě bloků (stačí datový typ boolean, 1 – blok, 0 – nic). AGS nepodporuje dvourozměrné pole, takže musíte data vhodně číst z jednorozměrného.

S trochou invence můžete napsat i něco jako pixel shader. Udělal jsem modul, který simuluje efekt crt obrazovky. Vstupní obrázek stačí projít pixel po pixelu a barvu rozložit na tři subpixely. Z nich se pak poskládají nové 3×3 px velké, které se znovu vykreslí. Přitom jim ještě měním náhodně transparentnost (šum) a dle nastavené pravděpodobnosti náhodně posunuji řádky. Zde se projevují další dva problémy AGS, které považuji za nejvýraznější. Běžně barvu reprezentujeme 32 bity (8 na každý kanál), ale AGS barvu nepřehledně ukládá dekadicky a to navíc do 24 bitového čísla. Jakékoliv grafické operace s texturami tedy ničí barvy. Aby toho nebylo málo, vykreslování do textury není hardwarově podporované, takže „pixel shader“ můžete použít jen na malinkaté vstupní obrázky.

AGS je flexibilní nástroj a v určitých případech si s ním bohatě vystačíte. Wadjet Eye Games zatím vydávají 2D adventury pouze z AGSka a evidentně se dobře prodávají, protože studio prosperuje. Nejste ale omezeni žánrem a s trochou kreativity obejdete většinu limitů. Také se jedná o nástroj, který vás otcovsky navede na vývojářskou cestu. AGS script je jednodušší, než plnohodnotný programovací jazyk, ale vystačíte si s ním. Pokud pocítíte nutkání skočit do C#, C++ nebo Javy, budete to mít ulehčené, protože si většinu důležitých znalostí přenesete a můžete na nich dál stavět. Pokud ale máte vyšší ambice a potřebujete vyšší kontrolu nad kódem a větší možnosti, měli byste hledat jinde. AGS také neumí 3D.

Výhody

– editor se rychle naučíte používat

– AGS script je snadnější na naučení, než plnohodnotný programovací jazyk

– flexibilní – není jen na adventury

– komunita je pořád aktivní a pracuje na nových verzích

– dobré možnosti debugování kódu

Nevýhody

– editor už ukazuje svoje vousy

– limity – některé se dají obejít, některé komunita odstraňuje, ale přesto tu jsou

– vykreslování do textury není hardwarově akcelerované

– nemožnost vytvářet vlastní třídy

– ne moc dobrá podpora jiných systémů, než je Windows

– vytváření objektů je možné pouze z editoru

– každý globální skript má hlavičku (exportování atributů a funkcí je otrava)