Pergunta

Eu estou tentando construir um motor útil 3d jogo fora do motor de renderização Ogre3D por zombar-se algumas das ideias que eu vim acima com e ter chegado a um pouco de uma encruzilhada. Há uma série de linguagens de script que estão disponíveis e eu queria saber se havia um ou dois que foram controlados e teve uma sequência adequada.

LUA e esquilo parecem ser mais controlados, mas im abrir para toda e qualquer.

O ideal seria melhor se houvesse uma forma compilada para o idioma para distribuição e facilidade de carregamento.

Foi útil?

Solução

A sintaxe é uma questão de gosto, Lua é como Javascript, mas com chaves substituído por Pascal-like palavras-chave. Tem a característica sintática agradável que ponto e vírgula não são necessários, mas os espaços em branco ainda não é significativo, então você pode até mesmo remover todas as quebras de linha e tê-lo ainda trabalho. Como alguém que começou com C Eu diria que Python é o único com sintaxe esotérica em comparação com todas as outras línguas.

LuaJIT também é cerca de 10 vezes mais rápido que Python eo interpretador Lua é muito, muito menor (150 kb ou cerca de 15k linhas de C que você pode realmente ler e compreender). Você pode deixar o script de usuário o seu jogo sem ter que incorporar uma linguagem maciça. Por outro lado, se você rasgar a parte analisador fora da Lua torna-se ainda menor.

Outras dicas

Uma opção interessante é stackless-python . Isto foi usado no jogo Eve-Online.

O manual API Python / C é maior que o toda manual de Lua (incluindo a API Lua / C).

Outra razão para a Lua é o suporte embutido para co-rotinas (co-operative multitasking dentro do segmento de um OS). Ele permite que se tenha como 1000 de roteiros aparentemente individuais que funcionam muito rápido ao lado do outro. Como um roteiro por monstro / arma ou assim.

(Por que as pessoas escrevem Lua em maiúsculas tanto no SO? É de "Lua" (ver aqui ).)

Mais um voto para Lua. Pequeno, rápido, fácil de integrar, o que é importante para consoles modernos -. Você pode facilmente controlar suas operações de memória

Eu iria com Lua desde escrevendo ligações é extremamente fácil, a licença é muito amigável (MIT) e bibliotecas existentes também tendem a estar sob licença. Esquema também é bom e fácil de ligamento é por isso que foi escolhido para o editor de imagens Gimp, por exemplo. Mas Lua é simplesmente ótimo. World of Warcraft usa, como um exemplo muito alto perfil. LuaJIT lhe dá desempenho nativo-compilado. É menos de uma ordem de magnitude de C puro.

Eu não recomendaria LUA, tem uma sintaxe peculiar por isso leva algum tempo para se acostumar. Dependendo de quem vai fazer o script, isso pode não ser um problema, mas eu gostaria de tentar usar algo bastante acessível.

Eu provavelmente escolheria python. Ele normalmente compila para bytecode, assim que você precisa para incorporar o intérprete. No entanto, se você deve, você pode usar PyPy para, por exemplo, traduzir o código para C, e em seguida, compilá-lo.

Incorporação o intérprete é nenhum problema. Estou mais interessado em recursos e desempenho neste momento no tempo. LUA e esquilo são ambos interpretados, o que é bom porque um dos jogos que estou construindo para fora é incluir código modificável, que tem um editor no jogo.

Eu adoraria ouvir sobre python, como eu tenho visto o seu uso dentro da série campo de batalha eu acredito.

python também é bom porque tem ligações OGRE reais, apenas no caso de você precisar modificar algo de nível inferior na mosca. Eu não sei de quaisquer ligações equivalentes para Lua.

Uma vez que é uma biblioteca C ++, gostaria de sugerir JavaScript ou Esquilo, sendo este último o meu favorito dos dois para estar ainda mais perto de C ++, em particular à forma como ele lida com mesas / estruturas e classes. Seria o mais fácil de se acostumar com um C ++ codificador por causa de todas as semelhanças.

No entanto, se você vai com JavaScript e encontrar uma versão HTML5 do Ogre3D, você deve ser capaz de portar seu código do jogo diretamente para a versão web com o mínimo (se houver) mudanças necessárias.

Ambos são uma boa escolha, e ambos têm seus prós e contras, mas ambos com certeza gostaria de ser mais fácil de aprender desde que você está provavelmente já está trabalhando em C ++. Se você está trabalhando com Java, o mesmo pode ser verdade, e se for Game Maker, você não precisa de qualquer um a menos que você está tentando fazer um executável que as pessoas não precisariam Game Maker-se a correr, em que caso, boa sorte encontrar uma extensão para executar qualquer um destes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top