Digamos que eu tenho um jogo escrito em C ++. Mas quero adicionar algumas funcionalidades de modificação ou script a ele. Como você adicionaria uma funcionalidade de script ao seu jogo?
Digamos que eu tenho um jogo escrito em C ++. Mas quero adicionar algumas funcionalidades de modificação ou script a ele. Como você adicionaria uma funcionalidade de script ao seu jogo?
Respostas:
Primeiro de tudo, você deve decidir qual parte do seu jogo é roteirizada. Uma opção é ter um jogo totalmente com script, no sentido de que, enquanto as operações de back-end com tempo crítico são codificadas em C ++, toda a lógica do jogo está na linguagem de script. Os designers usam o back-end como uma API chamada da linguagem de script de alto nível. Por outro lado, você pode ter poucos locais específicos em que os scripts são usados, como a interface do usuário ou as seqüências de script, com a maioria do código do jogo ainda em C ++. Há vantagens em cada abordagem (velocidade, flexibilidade, tempo de compilação, escopo do jogo etc.), mas você precisa decidir isso com antecedência.
Depois de saber como você deseja usar scripts, agora você precisa decidir se vai usar uma linguagem de script existente ou sua própria linguagem específica de domínio . Hoje existem muitas linguagens de script para escolher, com diferentes objetivos de design e públicos-alvo, por isso não tenho certeza se vale a pena criar mais os seus. Se você decidir implementar o seu próprio, aqui estão alguns recursos:
Lua é uma linguagem de script popular, leve e fácil de incorporar. Ele usa uma pilha para comunicação entre o host e o idioma incorporado e foi usado com sucesso em muitos jogos profissionais . Sol2 simplifica o processo de ligação de Lua e C ++. Se você não gosta da sintaxe de Lua, o Moonscript é uma linguagem que compila Lua e adiciona um bom conjunto de recursos.
Outras opções incluem o AngelCode , que permite chamar diretamente as funções C e C ++. Python e Ruby são um pouco mais complexos de incorporar, mas são muito agradáveis de programar. Se você deseja incorporar o Python, dê uma olhada no Boost.Python . Outra idéia é incorporar o JavaScript para aproveitar os mecanismos de script rápidos desenvolvidos para navegadores (consulte V8 e SpiderMonkey ).
Escrevi um post sobre a incorporação do script GameMonkey a um jogo usando o DragonFire SDK aqui .
Basicamente, a idéia é expor suas funções C \ C ++ à linguagem de script escolhida e usá-las no seu script. No meu tutorial, expus 2 funções do DragonFire SDK. No início do jogo, chamo a função onStart a partir do script e, na atualização, chamo a função onTimer a partir do script.
Espero que ajude!