Melhor mecanismo de jogo / estrutura e idioma para jogo intensivo de ator / sprite em 2D [fechado]

7

Eu sou novo no mundo dos desenvolvedores de jogos.

Eu tenho um projeto bastante grande em mente (aprendo definindo-me desafios: P) e estou me perguntando qual é o melhor mecanismo / estrutura / linguagem para um jogo 2D com milhares de sprites / atores na tela ao mesmo tempo. Coisas do tipo de metal nu. Ainda preciso aumentar e diminuir o zoom com tantos atores ao mesmo tempo.

Este jogo não terá elementos 3D.

Alguma ideia?

Sugestões?

Grungetastic
fonte
11
Que plataforma (s).
Tétrada
3
Por bare metal, você quer dizer C / C ++? O XNA SpriteBatch lida com milhares de sprites com muita facilidade; mas não é bare metal. Também +1 para ler as perguntas frequentes e fazer provavelmente a melhor 'melhor' pergunta que já vi.
Jonathan Dickinson
@ JonathanDickinson Eu digo bare metal porque vejo isso como sendo bastante intensivo em processador. Todos esses milhares de sprites fazem alguma coisa e interagem. E quero o mínimo de inchaço possível. Espero que isso faça sentido. A plataforma é PC
Grungetastic
Eu acho que o XNA é ótimo para lidar com cargas de sprites 2D, se você conhece C #, e todos eles podem interagir e outras coisas também. Se você quer 'bare-metal', C ++ no opengl ou no directX provavelmente é o caminho a percorrer. O XNA é executado no DirectX.
anonimamente

Respostas:

9

C # com XNA

Como você é novo nisso, o XNA teria a vantagem de também ser um ótimo lugar para começar. Desde a criação de um novo projeto até a exibição de um sprite 2D na tela, são necessárias 5 linhas de código:

private Texture2D texture;

texture = Content.Load<Texture2D>("sprite");

spriteBatch.Begin();
spriteBatch.Draw(texture, Vector2.Zero, Color.White);
spriteBatch.End();

Não fica muito mais fácil do que isso. Também tem a vantagem de ter um monte de amostras educacionais disponíveis para ele.

O problema é seu requisito de desempenho. Mas eu consegui desenhar milhares de sprites antes no XNA sem nenhum problema. No entanto, não havia código de jogabilidade por trás disso, e meu computador é de última geração, portanto os resultados seriam tendenciosos. Mas, com uma otimização cuidadosa, provavelmente funcionaria. Então esta é a minha recomendação.

C # com SharpDX ou SlimDX

Ainda permanecendo no domínio C # gerenciado, você também pode voltar um passo e considerar o uso do SharpDX, que é um novo wrapper gerenciado do DirectX, e eles afirmam que é cerca de 6 vezes mais rápido que o XNA. Isso deve ter energia suficiente para suas necessidades. E é multiplataforma.

Há também o SlimDX a considerar.

C ++ com DirectX / OpenGL

E se você continuar avançando nessa direção, finalmente alcançará o domínio C ++ puro com o DirectX / OpenGL. Se você decidir seguir esse caminho (que, a propósito, será muito mais difícil de lidar nesse estágio), há algumas coisas que você pode fazer para facilitar sua vida.

Por exemplo, você pode usar o SDL para criar a janela para você e cuidar da entrada, e o FMOD para lidar com o áudio, o que eu achei muito mais fácil de trabalhar do que seus colegas nativos.

Também não sei como é hoje em dia, mas na última vez em que trabalhei com eles, achei bastante fácil fazer coisas em 2D no DirectX, graças à classe D3DXSprite, que o IIRC era bastante semelhante ao SpriteBatch da XNA, enquanto no OpenGL I teve que implementar tudo do zero (ou seja, brincar com quads texturizados, projeções ortográficas e implementar o lote).

David Gouveia
fonte
8

Eu recomendo o SFML , pois ele permite gerenciar facilmente sprites 2D e aumentar / diminuir o zoom (graças a uma classe "camera" existente). Com essas abstrações, achei mais simples de usar que o XNA. Não tenho estatísticas rígidas sobre o desempenho, mas como ele usa C ++ e é processado através do OpenGL, acho que pode ser mais rápido que o XNA.

Por coincidência, estou trabalhando em um jogo semelhante usando SFML. Ele pode gerenciar mais de 1000 sprites em movimento a 50 FPS no meu laptop, enquanto executa a lógica do jogo (colisão entre sprites, etc.).

Aqui está uma captura de tela deste programa SFML em execução no meu laptop de 3 anos com gráficos integrados, a 25 FPS (800x600):

muitos sprites em SFML

Eu acho que existem mais de 1000 sprites exibidos.

lezebulon
fonte
+1 Já ouvi coisas boas sobre SFML antes (geralmente em comparação com SDL).
David Gouveia
Para pessoas que desejam seguir o caminho do SFML, o Code Blocks parece um bom IDE que suporta SFML
Grungetastic
Sugiro que um link para o SMFL seja adicionado!
Zolomon