É uma boa ideia desenvolver um jogo 2D não trivial em python? [fechadas]

10

Estou planejando desenvolver um RPG espacial 2D e estou enfrentando a escolha: qual é a melhor linguagem para escrevê-lo? Meus candidatos são C ++, Java e Python. Obviamente, eu quero escrever jogos em Python por causa de sua expressividade, velocidade de desenvolvimento e simplicidade de adicionar suporte a scripts. Mas estou preocupado:

  • Python não será muito lento? O jogo não será trivial (como Tetris, por exemplo), pode ser necessário calcular tarefas para milhares de naves no universo (embora sua IA possa ser bastante simplificada se essas naves não forem vistas pelo jogador). É claro que posso escrever algumas partes críticas em C, mas isso complicará instantaneamente a construção e a implantação.
  • Vamos supor que o jogo se tornou popular e eu me tornei uma estrela. Os usuários do Windows raramente têm o Python (felizmente, temos o py2exe). O Python no Mac OS X pode estar desatualizado e o jogo pode falhar com uma exceção obscura. Não seria difícil implantar jogos em Python?
  • Devido à falta de bibliotecas para o Python 3, terei que escrever jogos no Python 2. A transição para o Python 3 em alguns anos não seria muito dolorosa e demorada?
Anton Barkovsky
fonte
Para sua segunda pergunta, tenho certeza de que também existe um py2app que você pode usar para facilitar a implantação.
Thedaian
1
Se você decidir fazer isso no Python, poderá querer ver se pode executar alguma das partes "lentas" usando o numpy (mas pode não ser necessário).
Brendan Long

Respostas:

8

Python não será muito lento? O jogo não será trivial (como Tetris, por exemplo), pode ser necessário calcular tarefas para milhares de naves no universo (embora sua IA possa ser bastante simplificada se essas naves não forem vistas pelo jogador). É claro que posso escrever algumas partes críticas em C, mas isso complicará instantaneamente a construção e a implantação.

É difícil dizer, mas na maioria das vezes o fator limitante para o desempenho é a capacidade / experiência de um desenvolvedor, não a linguagem. Observe que o EVE usa o Stackless Python (veja aqui e aqui os downloads de uma apresentação relacionada). Não me lembro dos detalhes exatos, mas aparentemente a maior parte do cluster de servidores está executando o Python . Assim, eu imaginaria que ele poderia lidar com seus requisitos de escalabilidade, embora a criação de protótipos com certeza fosse boa.

Os usuários do Windows raramente têm o Python (felizmente, temos o py2exe). O Python no Mac OS X pode estar desatualizado e o jogo pode falhar com uma exceção obscura. Não seria difícil implantar jogos em Python?

A maioria dos usuários raramente tem dependências binárias apropriadas para jogos, independentemente da tecnologia em que esses jogos foram escritos (mesmo C requer que um componente de tempo de execução seja distribuído). A implantação via py2exe ou equivalente, ou simplesmente a dependência apropriada, é uma realidade. Embora nunca seja a coisa mais fácil (a maioria das tecnologias de instalação é dolorosa), é factível e não deve ser um motivo para evitar o idioma - como eu disse, você provavelmente precisará lidar com algo semelhante, independentemente.

Devido à falta de bibliotecas para o Python 3, terei que escrever jogos no Python 2. A transição para o Python 3 em alguns anos não seria muito dolorosa e demorada?

No entanto, eu não sei muito sobre isso, nunca tendo realmente usado o Python 3. Não espero que o Python 2.X desapareça tão cedo, portanto, então nem suspeito que a vida útil do seu jogo seja tal que você 'd necessidade de transição mais se você não quer, o que torna esta preocupação algo de uma não-questão.

Como já foi dito, você está se preocupando demais com o aspecto de seleção de idioma do seu projeto. O Python é uma ferramenta poderosa e útil para o desenvolvimento de jogos e, se você o conhece e gosta, deve desenvolver com ele. Não importa a velocidade do jogo, se ele nunca terminar, porque você se preocupa demais com o idioma.


fonte
Tendo usado o python 2.7 bastante extensivamente, não há muito o que você possa fazer com o python 3.2+ que você não pode fazer com o 2.7. Isso mudará ao longo do tempo, mas também suportará a biblioteca. =)
Ken
14

Para o seu primeiro ponto, você só precisará criar um protótipo e ver. Mesmo se você nos contasse todos os detalhes que realmente não mudariam as coisas.

Quanto aos outros dois pontos, eu meio que sinto que você está colocando a carroça diante do cavalo. Da sua pergunta, parece que você é novo no desenvolvimento de jogos; nesse caso, você realmente só precisa escolher uma ferramenta e seguir em frente. Nitpicking sobre os prós e contras de ferramentas na maior parte igualmente úteis é uma distração do seu verdadeiro desafio: aprender o desenvolvimento de jogos.

jhocking
fonte
0

Na terceira posição, o Python 2.x verá o suporte do distribuidor por pelo menos mais 5 a 10 anos. Se você usar uma versão bastante recente (2.7 ou possivelmente 2.6), o caminho da migração será bastante fácil se você escrever código à prova de futuro (objeto de novo estilo, unicode em todos os lugares, etc etc). A dor é principalmente para coisas que dependiam de comportamentos antigos e quebrados.

coderanger
fonte
Para ajudar a identificar comportamentos antigos que irá mordê-lo, execute o jogo com python -3 filename.py, que irá imprimir avisos para as coisas que não são mais suportados no Python 3
spiffytech