Herní návrhový vzor Skriptovací jazyk
Z CHWiki
Obsah |
Účel
Umožnit rychlejší a snadnější programování herního kódu nebo kvůli možnosti skriptovat levely, postavy apod. nebo umožnit snazší přenositelnost na jiné platformy
Jiné názvy
Nejsou známé
Motivace
Programovat herní kód v C/C++ je kvůli obtížnosti tohoto jazyka zdlouhavé a složité. Většina herního kódu není náročná na rychlost, protože složité výpočty by měl obstarávat engine. Použití skriptovacího jazyka usnadní a vývoj a přidá flexibilitu. Navíc díky tomu, že se skripty nemusí překládat (anebo to alespoň netrvá tak dlouho), je cyklus mezi úpravou kódu a testováním rychlejší. A v neposlední řadě, skripty jsou přenositelné mezi platformami beze změn, takže v případě hry pro více platforem stačí přenést jen engine.
Použití
- U větších herních projektů, kde je herní kód obsáhlý a programovat ho v C/C++ by bylo příliš obtížné.
- Když je potřeba dát level designérům nebo grafikům relativně jednoduchý nástroj pro skriptování lokací apod.
- Když vytváříme hru pro více platforem
Důsledky
Dosáhneme tak
- Snazšího vývoje herního kódu díky tomu, že skriptovací jazyky nezatěžují programátora s prací s pamětí a dalšími systémovými detaily.
- Možnosti mít skripty přímo v souborech s levely apod.
- Nulové práce s přenosem herního kódu mezi platformami
Skriptovací jazyk ale není zadarmo. Musíme vyřešit několik problémů:
- Implementace jazyka není příliš velký problém, pokud můžeme použít existující skriptovací jazyk jako je například Python nebo Lua.
- Pokud máme jazyk, musíme ještě vytvořit a udržovat rozhraní mezi hrou a engine, což je vcelku pracné. Existují některé nástroje, které automaticky vytvářejí kód tohoto rozhraní z popisu C++ tříd v jazyce IDL.
Implementace
Je nutné začlenit skriptovací jazyk do projektu a vytvořit rozhraní skript <-> engine. Více o začlenění se dozvíte z dokumentace skriptovacích jazyků.
Příklad
Známá použití
- Baldur's Gate používá jazyk Lua
- Quake 1 měl vlastní, vcelku omezený skriptovací jazyk
- Unreal Engine má vlastní skriptovací jazyk s některými vlastnostmi specifickými pro hry (bloky pro stavy apod.)
- Homeworld 2 pomocí jazyka Lua ukládá hru
Příbuzné vzory
Odkazy
- http://www.python.org
- http://www.lua.org
- Adding Languages to Game Engines (vyžaduje free registraci)
- GDC 2002: Game Scripting in Python (lepší článek, taky vyžaduje registraci)
- http://wiki.beyondunreal.com/wiki/UnrealScript
