Existe algo como XNA para c ++? [fechadas]

18

Eu amo os recursos do XNA, mas quero entrar no jogo em c ++. O problema é que agora preciso me preocupar com tudo, desde carregar um arquivo png até abrir uma janela. Isso é um pouco chato.

Eu realmente gostaria que uma versão c ++ do XNA resolvesse esses problemas para mim.

sizicky
fonte
Você deve dar uma olhada no DirectX Tool Kit, se ainda não o fez ... É uma biblioteca C ++ para programação Direct3D 11 que empresta explicitamente o design da classe XNA Game Studio.
Chuck Walbourn

Respostas:

16

Eu recomendaria que você olhasse para SFML e Polycode .

Eu acho que as respostas aqui estão meio que perdendo o objetivo. É irritante ter que vincular a dez bibliotecas diferentes, como Freetype, libpng, tinyxml, Ogg, Vorbis, etc., para obter alguns recursos básicos do XNA.


SFML

http://www.sfml-dev.org/features.php

O SFML é uma API C ++ multimídia gratuita que fornece acesso de baixo e alto nível a gráficos, entradas, áudio etc. Em certo sentido, é semelhante ao XNA, mas não segura sua mão. Por exemplo, SFML não tem uma classe Model.


Se você planeja usar modelos em seus jogos, deve usar o Assimp .

Assimp adiciona suporte para importar os seguintes formatos:

Collada ( .dae )
Blender 3D ( .blend )
3ds Max 3DS ( .3ds )
3ds Max ASE ( .ase )
Wavefront Object ( .obj )
Stanford Polygon Library ( .ply )
AutoCAD DXF ( .dxf )
LightWave ( .lwo )
Modo ( .lxo )
Stereolithography ( .stl )
AC3D ( .ac )
Milkshape 3D ( .ms3d )
Quake I Mesh ( .mdl )
Quake II Mesh ( .md2 )
Quake III Mesh ( .md3 )
Quake III BSP ( .pk3 )
Biovision BVH ( .bvh )
DirectX X ( .x )
BlitzBasic 3D ( .b3d )
Quick3D ( .q3d,.q3s )
Ogre XML ( .mesh.xml )
Irrlicht Mesh ( .irrmesh )
Neutral File Format ( .nff )
Sense8 WorldToolKit ( .nff )
Object File Format ( .off )
PovRAY Raw ( .raw )
Terragen Terrain ( .ter )
3D GameStudio ( .mdl )
3D GameStudio Terrain ( .hmp )
Izware Nendo ( .ndo )

Polycode

http://polycode.org/features/

O Polycode é uma estrutura gratuita, de código aberto e de plataforma cruzada para código criativo. Você pode usá-lo como uma API C ++ ou como uma linguagem de script independente para obter acesso fácil e simples a gráficos 2D e 3D acelerados, sombreadores de hardware, programação de som e rede, mecanismos físicos e muito mais.

A API principal do Polycode é escrita em C ++ e pode ser usada para criar aplicativos nativos portáteis.

Além da API C ++ principal, o Polycode oferece um sistema de script baseado em Lua com seu próprio conjunto de ferramentas de compilação. A API Lua espelha a API C ++ e pode ser usada para criar protótipos com facilidade e até publicar aplicativos completos em várias plataformas sem compilar C ++.

O Polycode é de código aberto, o que significa que você pode aprender como as coisas são feitas nos bastidores. Além disso, ele usa o Assimp para carregar modelos, para que você não precise se preocupar em vincular manualmente ao Assimp.

zfedoran
fonte
Esclarecimentos menores: o Polycode não usa o assimp para carregar modelos, mas possui uma ferramenta baseada em assimp para converter modelos em um formato que pode ser carregado.
CIB
4

Existem literalmente centenas de bibliotecas por aí que lidam com todos os tipos de aspectos do desenvolvimento de jogos. Do carregamento de imagens, à abertura e gerenciamento de janelas, à renderização, ao som, à física etc.

O que não existem são muitas soluções de "balcão único", onde você obtém tudo de uma só vez. Esse é um dos benefícios do XNA. Você geralmente precisa reunir várias bibliotecas para criar um mecanismo. Isso oferece uma grande flexibilidade, como se um componente estivesse ausente, você pode (relativamente) facilmente trocá-lo por outro. Mas, ao mesmo tempo, requer mais trabalho.

Realmente, por que você está tão desligado da linguagem de programação que deseja usar? Parece-me que você realmente gosta do XNA e deseja usá-lo para o desenvolvimento de jogos. Então vá fazer isso.

Nicol Bolas
fonte
3

Você pode usar o D3DX e o DXUT no início, que não são muito parecidos com o XNA, mas ajudam bastante na configuração do ambiente, como criar uma janela, executar o loop principal e ter algumas funções úteis, como D3DX11CreateTextureFromFile () - você terá que gerenciar o ponteiro, mas não é isso difícil. Também existem muitas bibliotecas que você pode usar no C ++, que você pode substituir por sua própria se quiser melhorar o desempenho ou o que quiser alterar.

As bibliotecas D3DX e o DXUT são mais adequadas para D3D9 e 10, e o DXUT vem com seu código-fonte. Para o DX11, eles selecionaram algumas funções dessas bibliotecas, mas espero que elas ainda tenham as mais úteis, e se bem me lembro agora, elas fornecem a estrutura de efeitos no formato de código-fonte (se você tiver paciência para explorá-la).

Aprendi muito mais ao trabalhar em níveis mais baixos do que nas pirâmides de estruturas, então não posso dizer que você use o XNA, mas isso depende principalmente dos seus objetivos.

Pablo Ariel
fonte
Todas as versões do D3DX estão obsoletas. As bibliotecas de utilitários Direct3D 11.x 'modernas' são DirectXTex , DirectXTK e DirectXMesh e DirectXMath no Windows 8.x SDK. A versão mais recente do Effects 11 e do DXUT11 está no CodePlex para pessoas que portam bases de código mais antigas e estão satisfeitas apenas com os aplicativos de área de trabalho Win32.
Chuck Walbourn
1

Se você está apenas se familiarizando com a linguagem c ++, eu recomendaria o uso de uma biblioteca simples como SDL para obter experiência no desenvolvimento de jogos e depois programar usando o openGL.

Kiran
fonte