Em que casos as linguagens de script são melhores que outras?
Todas as respostas são bem-vindas, forneça uma descrição e descreva em que casos o idioma se destaca.
(Lembre-se, um idioma por resposta)
Em que casos as linguagens de script são melhores que outras?
Todas as respostas são bem-vindas, forneça uma descrição e descreva em que casos o idioma se destaca.
(Lembre-se, um idioma por resposta)
Respostas:
Lua é amplamente utilizada na indústria de jogos . De jogos independentes ( Aquaria ) a títulos AAA (Civilização).
O principal motivo? Eu diria porque é fácil aprender e incorporar em seus jogos. Mas o mesmo pode ser dito para Python, tenho certeza. Os scripts, em geral, não são difíceis. Eu acho que a verdadeira razão pela qual você deve usar Lua é porque está provado o que resulta em muito mais recursos para você aprender. Se você quiser experimentar algo fora da norma, eu começaria a mexer em outro idioma.
O esquilo tem uma história interessante. Foi construído depois que um arquiteto de jogos teve problemas com a coleta de lixo imprevisível de Lua, e louco tudo é nulo, mesmo que não exista .
Esquilo é a linguagem usada no Left 4 Dead 2 . A API é muito parecida com a lua (o autor do esquilo adora o design da Lua ).
Então, Squirrel é uma linguagem incrível, já que é uma lua de segunda geração. Ele pegou as boas idéias e removeu as excentricidades irritantes.
O mesmo de Lua:
Novo no esquilo:
A principal desvantagem do esquilo é que não é Lua. Lua é muito mais amplamente usada. Mas se isso não é um problema, o esquilo é uma vitória fácil. No entanto, muitas vezes a popularidade do idioma é um recurso útil por si só, portanto a decisão não é tão clara.
V8 Javascript do google.
PRO's:
Muito fácil de usar
Constantemente melhorando
Poderoso e flexível
Outros Como muitos mencionados, o javascript é uma ferramenta comum de programador. Adicioná-lo aos meus jogos abriu muito mais pessoas que se sentem capazes do que outros idiomas. Ele também suporta uma enorme quantidade de conversão e conversão para economizar trabalho para o programador, também facilita o uso e funciona bem com o STL.
Possíveis CONs:
A documentação pode ser confusa Não é realmente o melhor.
Exemplos Muitas vezes, uma teia de estranheza. Na falta de simplicidade sólida, ele se apresenta como um nível muito mais alto do que é.
Modelos Às vezes, esses são odiados ou evitados.
Tamanho da base de código do SDK O tamanho do código gerado pode ser considerado inchado.
Isso depende do jogo e sua plataforma de destino.
Um jogo que roda 100 personagens não-jogadores (jogos RTS) tem necessidades diferentes de um jogo que roda apenas 2 (Street Fighter). Um jogo que é executado em um PC tem necessidades diferentes de um jogo que é executado em um console.
Lua é popular
O GameMonkey é usado por várias equipes. É mais rápido que Lua e melhor em rosqueamento.
Python tem sido usado em vários jogos.
JavaScript é uma opção possível, pois você pode fazer o download de mecanismos JavaScript. Existem mais programadores JavaScript do que qualquer outro tipo de programador.
Existem também idiomas especializados.
O SCUMM foi usado em vários jogos de aventura e é particularmente adequado para esses jogos.
Por uma questão de integridade, outra opção é o mono-script , que permite usar a implementação da Novell da estrutura .NET para scripts. É o que o Unity usa. Aqui está outra página sobre a incorporação de mono no seu aplicativo.
A estrutura Mono é mais rápida do que a maioria (talvez todas?) Das linguagens de script disponíveis por não ser interpretada e por haver uma camada entre o compilador e o conjunto de instruções, permite programar em uma variedade de linguagens, incluindo C # e dialetos de Python, Lua e Javascript.
Não tenho certeza se é gratuito em todas as plataformas.
Pessoalmente, achei o AngelScript (veja o link abaixo) muito mais fácil de vincular ao C ++ do que o Lua quando eu estava escolhendo uma linguagem de script para o meu próprio projeto. (Na verdade, eu escrevi uma pequena biblioteca de invólucros para facilitar ainda mais o uso, ao custo de alguma flexibilidade.)
http://www.angelcode.com/angelscript/
Dito isto, suspeito que Lua tenha algumas vantagens que o tornam atraente para desenvolvedores de jogos comerciais:
(a) É mais maduro e difundido que o AngelScript
(b) Sua sintaxe é mais fácil para não programadores (AngelScript é muito parecido com C ++)
(c) Tem uma pegada menor que o AngelScript (pelo menos tanto quanto me lembro)
Se você está apenas escrevendo um projeto de hobby, eu diria que o AngelScript vale pelo menos uma olhada.
Você deve escolher uma linguagem de script que tenha ligações estáveis e bem suportadas à linguagem de desenvolvimento principal do seu jogo. Se você está escrevendo seu jogo em C ou C ++, existem ligações bastante sólidas disponíveis para Python e Lua. Se você está escrevendo seu jogo para a plataforma .NET (usando C # ou outro idioma), é altamente recomendável usar o IronPython ou o IronRuby. Ambas são implementações completas de linguagem que aproveitam o Dynamic Language Runtime (DLR) da Microsoft, que oferece excelente desempenho e integração muito estreita com o .NET Framework. Atualmente, a interoperabilidade entre C # e IronPython / IronRuby é bastante suave, especialmente com a introdução da ligação dinâmica de site de chamada no C # 4.0.
Bem, astúcia especificamente.
Com dolo, você pode ter seu próprio DSL (Domain Specific Language) apenas para o seu jogo. Depois de se acostumar com os parênteses e a notação de prefixo, o esquema é o paraíso para se trabalhar.
Se você usar o truque em um jogo sério, esperaria alguns meses até o lançamento do 2.0, que incluirá o IIRC, um intérprete Ecmascript e o esquema atual. Você também pode esperar ver grandes melhorias na velocidade.
Isso depende do que você realmente precisa. Como David aponta, Lua é muito popular, embora um desenvolvedor de jogos tenha me observado que não tinha muita certeza do porquê. Eu acho que a leveza é um motivo comum, mas, nesse ponto, eu esperaria que muitas pessoas usassem Lua porque esse se tornou o padrão de fato. Parece melhor para modificações muito leves.
Para uma abordagem mais completa, eu diria que Python é a escolha certa. Civ IV usou-o com efeito decente.
A escolha de uma linguagem de script em detrimento de outra depende de seus requisitos específicos.
Algumas das opções que você deve escolher podem ser:
Velocidade do intérprete - se o recurso de script for usado apenas, ou seja, pelos desenvolvedores para criar um script do comportamento estático, a velocidade e uma API extensível e completa podem ser o aspecto mais importante. Eu tive algumas boas experiências com LUA lá.
Fácil de aprender, acessibilidade - para um designer de conteúdo / nível, pode ser difícil aprender linguagens de script mais complexas (depende do plano de fundo) para gerar comportamento dinâmico. Nesse caso, o uso de idiomas fáceis de aprender (ou seja, comumente usados) e bem documentados pode ser mais apropriado aqui. JavaScript ou Python pode ser uma boa solução aqui.
Integração de fluxo de trabalho - se você tiver um pipeline de produção específico com ferramentas já existentes, pode ser uma má idéia usar uma linguagem que pareça funcionar melhor para um determinado caso, se as outras ferramentas estiverem trabalhando com uma completamente diferente. Isso é especialmente válido se você tiver vários programadores trabalhando nas diferentes ferramentas. Nesse caso, poderia ser mais eficiente usar a linguagem "não muito adequada".
Se você está trabalhando em um título para Windows e escrevendo código gerenciado executando sobre o Common Language Runtime (CLR) - digamos, por exemplo, em C # -, sugiro que você dê uma olhada na integração do (Iron) Python como linguagem de script.
Na minha experiência, o Python é muito fácil de ensinar para não programadores / designers. É ainda mais fácil escolher para os desenvolvedores, uma vez que se lê essencialmente como pseudocódigo. Ser digitado dinamicamente é apenas um dos aspectos que ajudam a colocar as pessoas com pouca ou nenhuma experiência anterior em codificação em funcionamento rapidamente com o idioma.
Além de o idioma ser fácil de aprender e poderoso, as equipes de CLR e de idiomas da Microsoft (Anders Hejlsberg, Eric Lippert, Mads Torgersen, Jim Hugunin et al.) Fizeram um excelente trabalho ao expor os recursos de compilador e tempo de execução por meio do novo Dynamic DLR (Language Runtime) no .NET 4, tornando a interoperabilidade entre código digitado estaticamente e código digitado dinamicamente muito mais simples. Pelo que vi e tentei até agora, o código padrão é reduzido ao mínimo. Isso manterá sua base de código limpa e sustentável.
Você pode utilizar isso para manter o atrito entre as partes com script do seu jogo e o mecanismo muito baixo. A execução de ambos na mesma VM também permitirá que o tempo de execução otimize mais seu código durante a execução.
Se você já possui uma equipe que usará a linguagem de script ou um designer líder (de nível) que usará o script, escolha o idioma de sua escolha. Eles vão gastar seu tempo com isso, então eles devem ser atendidos.
[grão de sal] Se você não tem ninguém ou planeja a longo prazo, faça o seu . Sim, escrever um compilador e / ou intérprete para uma linguagem de script pode levar uma semana ou duas, mas a longo prazo, a flexibilidade pagará muitas vezes. Só não se extravie e reinvente o cérebro. [/grão de sal]