Herní návrhový vzor Skriptovací jazyk

Z CHWiki

Přejít na: navigace, hledání

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