Quais são os prós e os contras de Lua vs. Python como uma linguagem de script para a plataforma XNA / C #? [fechadas]


9

Estou pensando em tentar uma das minhas idéias antigas para um jogo. O ponto principal deste jogo seria o possível nível de personalização funcional do ambiente e dos objetos do jogo (como modificar o comportamento de um armamento de uma nave espacial). Para isso, o jogo precisaria ser scriptável. Também não pretendo comercializá-lo, é apenas um desafio de programação interessante para mim.

Como eu sou principalmente um cara do .NET, usarei o XNA / C # para o próprio jogo. Para os scripts, penso em usar Python ou Lua. Eu tenho experiência anterior com Python e não tenho nada contra isso como uma linguagem. Lua, por outro lado, é quase completamente novo para mim, além de algumas modificações menores nos addons de World of Warcraft que eu fiz aqui e ali, e parece promissor. Então aqui está a minha pergunta:

Quais são os prós e os contras de Lua vs. Python como uma linguagem de script para a plataforma XNA / C #?

Um deles é consideravelmente mais fácil de usar com o XNA / C #? Um deles tem algumas vantagens ou desvantagens específicas quando usado com XNA / C #? Por que você recomendaria um sobre o outro para XNA / C #?


4
Sei que você não está pedindo alternativas, mas, caso não saiba, o C # também é uma linguagem de script válida e, como você está usando o C #, a manutenção é muito baixa.
William Mariager

2
Por que você precisa de uma linguagem de script? Quais benefícios você espera?
precisa saber é o seguinte

2
Ambos são populares, usados ​​profissionalmente e definitivamente capazes de executar a parte de script. É apenas uma questão de gosto para 99% das aplicações. O Python tem uma biblioteca padrão melhor e, na minha opinião, é uma linguagem mais amigável.
Cloudanger

11
Na mesma linha de "você já considerou?" Você já considerou Boo ? Ele foi projetado para scripts, em vez de se tornar uma linguagem de script. Semelhante ao IronPython, ele tem ajudantes internos para hospedagem (e pode até interpretar para destinos como o XBox).
Jonathan Dickinson

11
Além disso, não negligencie o script visual (semelhante ao Staredit - o editor Starcraft 1).
Jonathan Dickinson

Respostas:


11

Não posso comparar os dois, pois só tive experiência em incorporar o IronPython em um jogo C # até agora. Aqui está o que eu gosto sobre isso:

1) é fácil! Faça o download das DLLs do IronPython, adicione referência no projeto,

 using IronPython.Hosting;

 var engine = Python.CreateEngine();
 var product = engine.Execute<System.Numerics.BigInteger>(@"
 print ' '.join(['hello', 'from', 'ironpython!'])
 a = 123456789
 b = 10
 a**b
 ");
 Console.WriteLine("a**b={0}", product);

2) Como você pode ver no exemplo acima, o IronPython realmente converte em classes BCL onde pode. o resultado do script é um System.Numerics.BigInteger em vez de um PyObject

3) A dynamicpalavra-chave em C # foi criada para situações de interoperabilidade em que você não tem o tipo estático disponível:

    dynamic example = engine.Execute(@"
class Example(object):
  def __init__(self):
    self.breakfast = ['ham','spam','eggs']
    self.lunch = 'BRAIINNNZ'
Example() # return an example");

    foreach(string item in example.breakfast)
        Console.WriteLine(item);
    Console.WriteLine(example.lunch);

+1 para o exemplo bom, que mostra como é fácil de obter python ferro runnning .... apesar de que foi não estava OP estava pedindo ;-)
tobsen

0

IronPython e C # combinam bem, IronPython pode ser adicionado ao C # para aumentar o desempenho. Portanto, se seus jogos de escrita, as chamadas de Python no C # são uma vantagem. O próprio Python não pode usar o XNA, mas pode usar o Directx, algo que o C # não pode fazer diretamente.


11
FWIW, o Python também não pode usar o DirectX "diretamente" - ele interage por meio de wrappers com base no fato de que o D3D é uma API C / COM. É exatamente assim que você pode acessar o DirectX a partir de C #.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.