A maneira mais fácil e divertida de programar jogos 2D? Instantâneo? XNA? Algum outro mecanismo? [fechadas]

20

este é um post que detalha minha pesquisa da maneira mais agradável para um programador de jogos amadores adocicar seu tempo livre ao fazer um jogo.

Meus requisitos: olhei primeiro para o Flash, fiz alguns jogos pequenos, mas duvido do desempenho. Eu gostaria de fazer um jogo de estratégia bastante grande, com várias centenas de unidades lutando simultaneamente, incluindo explosões e animações. Também mapas com zoom. Vi que a Adobe possui uma nova API 3D para Flash, mas não sei se isso também melhora o desempenho em 2D. Não encontrei nada relacionado a essa pergunta nas sessões do MAX10. Você diria que o Flash é uma boa tecnologia para criar jogos 2D grandes facilmente? Gosto muito do Actionscript e adoro a facilidade com que tudo é no Flash. Existem vários mecanismos disponíveis que facilitam ainda mais.

Eu apenas faço isso por diversão, e seria ainda melhor se houvesse editores adequados de animação / partículas disponíveis e se o mecanismo que eu fosse usar estivesse disponível para várias plataformas. (para que mais pessoas possam jogar meu jogo assim que terminar). Gostaria de tê-lo disponível em muitas plataformas móveis também. (porque eu amo a entrada por toque por algum motivo)

Conheço muito bem a estrutura do XNA, mas não há bons mecanismos disponíveis para ela, e ela só será executada no Windows, o que é um grande desligamento. Ainda maior é que você precisa instalar o XNA redistribuível toda vez que quiser dar o jogo a alguém. Se eu usar o XNA, teria que fazer todas as ferramentas pessoalmente e provavelmente teria que fazê-las com o WPF. (Adoraria criar ferramentas com o Adobe AIR, mas, infelizmente, as APIs para manipulação de imagens etc. são muito piores no Flash do que no XNA / WPF.) Agora, estou ciente de que poderia criar meu próprio mecanismo que suporta cada uma dessas plataformas, mas, francamente, isso seria muito trabalho através das APIs. Afinal, eu quero fazer um jogo, não um motor.

Portanto, a pergunta se torna: Existe um mecanismo de plataforma cruzada (livre ou livre para desenvolver?) Disponível que eu poderia usar no desenvolvimento 2D? Eu prefiro: C #, Actionscript. Não me importo de usar c ++ se o conjunto de ferramentas estiver acima da média, mas duvido muito que exista algo assim por aí. Por favor, prove que estou errado :) Então, resumo: eu gostaria de usar o Flash, mas não sei se ele é bem dimensionado. Não sou scripter, quero algumas APIs reais com as quais possa trabalhar dentro de um IDE adequado.

Só para obter informações, procurei várias alternativas, já estou procurando há muito tempo. Você me ajudaria muito a tomar uma decisão finalmente.

  • Em termos de recursos, o mecanismo Flatredball seria o ideal. Mas eu tentei suas ferramentas e, francamente, elas são horríveis. Absolutamente inutilizável, eu precisaria fazer o meu próprio com certeza. Eu não olhei para a API deles, mas se suas ferramentas são tão ruins, não estou inclinado a procurar mais.

  • Unity3D. Este é muito bom, mas eu realmente não preciso de 3D , e é bastante ... muito trabalho para aprender. Também não gosto que seja tão caro usá-lo em plataformas diferentes e que só posso codificá-lo através de scripts. Você precisa comprar cada plataforma separadamente. A usabilidade do editor é média, o produto em geral é bom o suficiente para a maioria dos propósitos, mas aprender por mim mesmo seria um exagero.

  • Shiva 3D. Parece bom o suficiente, mas novamente: eu realmente não preciso de 3D. A usabilidade do editor é um pouco pior que o Unity3D na minha opinião e não estava claro para mim como começar a programar. Eu acho que requer C ++ para codificação, então isso também é negativo. Eu quero me divertir, e c # é divertido;)

  • SDL. Francamente, eu ainda precisaria portar para todas essas implementações diferentes de SDL. E eu não gosto de programação no estilo OpenGL, é simplesmente feio. E ele precisa de c ++, eu sei que pode haver alguns wrappers disponíveis, mas eu não gosto de usar wrappers, porque ...

  • Irrlicht. Muitos recursos, mas o suporte parece ser baixo e é voltado para entusiastas. As ligações C # são descartadas repetidamente. Não sou entusiasta de motores, só quero fazer um jogo. Não vejo isso acontecendo com Irrlicht.

  • Ogre3D. Muito trabalho, é apenas um mecanismo gráfico. Também não há suporte a múltiplas plataformas e c ++.

  • Torque2D. Custa algo para usar, e eu não ouvi muitas coisas boas sobre suporte e documentação. Também custa extra para cada plataforma.

Maxi
fonte
As ferramentas FRB SDK são ruins (cola em particular, eu não a uso), mas economizam seu tempo para escrevê-las e os formatos de arquivo são simples se você precisar escrever suas próprias ferramentas. A API não é tão ruim e parece adequada para esse escopo, o maior problema agora é a falta de uma porta XNA 4.0 para PC e Xbox. Além disso, o XNA redist e outros pré-requisitos podem fazer parte da instalação - e, usando o clickonce, você pode ter a atualização automática e a implantação prontas.
Oskar Duveborn
Bem, meu argumento é que eu não os usaria e, portanto, as ferramentas são inúteis. Eles continuam batendo em mim, além da má interface do usuário / sensação geral. E se eles perderem um determinado recurso? Mesmo se eles fossem de código aberto, eu não gostaria de chegar perto dessas bases de código. Parece duro, mas eu realmente quero apenas uma programação relaxada, e o FRB parece um bolo de frutas de frustração. Imagine: tentei o editor de partículas e não consegui encontrar o botão para abrir um arquivo de imagem. Qual é sem dúvida o recurso mais importante em que tudo o mais se baseia.
Maxi
Não é uma resposta completa, mas o Flash é melhor do que você imagina. Se você optar por uma tela de dados de bitmap em vez de usar a pilha de exibição e fizer outras otimizações simples, poderá extrair muito mais do que parece com uma solução mais ingênua.
Gregory Avery-Weir
O item de listagem no Particle Editor é simplesmente chamado de "textura" no painel de propriedades do emissor ^^ Existem tutoriais em todas as ferramentas para que os criadores de conteúdo que não sejam codificadores possam ajudar. Mas sim, as UIs são realmente horríveis do ponto de vista do design de interação.
Oskar Duveborn
11
Em relação ao XNA ser apenas para Windows, existe uma implementação de código aberto da API do XNA, chamada MonoGame, que será executada em todos os tipos de plataformas que não sejam Windows: cocoa-mono.org/archives/400/… Eu não o usei, mas existe.
chaosTechnician

Respostas:

10

Pygame é de longe o meu favorito. Como programar em python significa que você programará rápido e como as coisas 2D são rápidas, pygame será divertido ...

jokoon
fonte
Como um bônus, se você decidir que você deseja mover para o mundo 3D, há pyglet que envolve GL em cobra-pele;)
Wayne Werner
9

Estou usando o LÖVE há algum tempo e gosto muito. Você precisaria aprender Lua, mas é uma pequena e divertida linguagem para aprender de qualquer maneira. As pessoas no fórum são extremamente úteis.

egarcia
fonte
Qual é o desempenho? qual IDE posso usar?
Maxi
11
Eu segundo isso. Usamos Lua e LOVE no nosso jogo Global Game Jam e funcionou de maneira fantástica. Eles reuniram muitas ótimas bibliotecas de código-fonte aberto em uma API comum e cada versão fica cada vez melhor. O desempenho é ótimo (Lua é incrível!), E muitos recursos avançados do OpenGL, como FBOs, são expostos, o que é raro para muitos mecanismos 2D. Além de toda essa bondade, é multiplataforma (Win / Mac / Linux). Eu definitivamente daria uma boa olhada.
Bob Somers
11
@Maxi: Com amor você só precisa de um editor, e um console onde você pode escreverlove .
egarcia
2
Os russos fizeram um jogo com isso? Seria da Rússia com amor: P
Bart van Heukelom 7/11/22
5

Eu decidi ir com o Flash. A nova API Molehill 3D também pode ser usada para desenhar sprites 2D no espaço 3D muito mais rápido. Não vejo razão para que o Flash não seja rápido o suficiente para o jogo que descrevi anteriormente. Terei que construir as ferramentas pessoalmente, mas provavelmente precisaria fazer isso de qualquer maneira. Usar o AIR para criar ferramentas também é muito legal na minha opinião. O Flash também tem o maior alcance com plataformas, o que é legal.

Maxi
fonte
Experimente o Cocos2d-x . É o que estou usando no meu desenvolvimento de jogos independentes.
Stephen Furlani
11
O Flash é provavelmente uma boa escolha, já que existem ferramentas e bibliotecas muito boas (maduras) para o Flash. A API Molehill terá uma carga pesada da CPU (anteriormente tudo era tratado pela CPU). Você precisa pensar na distribuição do seu jogo. Flash normalmente significa um jogo baseado em navegador ...
bummzack
E cuide de jogos para dispositivos móveis, flash e celulares, é uma combinação tão ruim.
Gustavo Maciel
" E cuide dos jogos para celular, flash e celulares são uma combinação tão ruim. " @ Gtoknu, alguma razão para isso?
NemoStein 13/01/12
@NemoStein Tente pesquisar no youtube algum flash rodando em celulares. Além disso, a Adobe interrompeu o desenvolvimento do flash para o Android, e não há flash para o iOS.
Gustavo Maciel
4

Experimente o SFML

svenstaro
fonte
Embora útil, o SFML é apenas uma API de gráficos / rede / som, não é um mecanismo de jogo completo (embora esteja bastante próximo).
precisa saber é
2

Experimente o Cocos2d-x . É o que estou usando no meu desenvolvimento de jogos independentes.

É uma plataforma OpenGL (ES) testada e comprovada, com som, física e até um pouco de 3D que já está disponível para o iPhone há um tempo e está chegando a outras plataformas.

Stephen Furlani
fonte
2

Como você disse que gosta do Actionscript, mas está procurando uma plataforma cruzada, dê uma olhada no HaXe + NME . O HaXe é uma linguagem semelhante ao Actionscript, mas pode ser compilada para Flash, Javascript, PHP ou C ++. O NME é uma biblioteca semelhante à biblioteca de gráficos do Flash, mas também roda em outras plataformas. Essa combinação permite que você compile em várias plataformas diferentes.

Ainda não usei o NME, mas meu primeiro teste com o HaXe + Molehill (apenas alguns dias atrás) produziu 60fps ao renderizar 10.000 sprites rotativos 16x16 no meu laptop. Só uso o HaXe há alguns dias e não tenho experiência suficiente para garantir que seja a coisa certa para você, mas vale a pena dar uma olhada.

amitp
fonte
1

Pessoalmente, sou um grande fã do Allegro 5 , mas é uma API C. Ainda assim, é uma API simples que sai do seu caminho e fornece acesso a:

  • Gráficos 2D (suportados por OpenGL ou D3D, dependendo da platfom)
  • Som
  • Fontes (incluindo bitmap e TTF)
  • Entrada (mouse e teclado)
  • PhysicsFS (virtualização do sistema de arquivos)
  • Carregamento de imagem

O 5.1 também adicionará suporte ao sombreador.

O SDL 1.3 também está se desenvolvendo muito bem. Sam parece ter feito as principais alterações na API, e o que já está disponível já é bastante estável. Ainda assim ... ainda não é beta, e o Allegro 5.0 foi lançado.

É verdade que, para jogos mais complexos e avançados, você provavelmente deseja emparelhar o Allegro 5 com algum tipo de biblioteca de física ( Box2D , por exemplo). Ainda assim, você pode percorrer um longo caminho e se divertir muito, com nada mais do que o Allegro 5, a biblioteca padrão C ou C ++ e seu próprio código.

Greg Jandl
fonte