¿Hay algo como XNA para c ++? [cerrado]


18

Me encantan las características de XNA pero quiero entrar en el desarrollador de juegos de c ++. El problema es que ahora tengo que preocuparme por todo, desde cargar un archivo png hasta abrir una ventana. Esto es un poco molesto.

Realmente me gustaría una versión c ++ de XNA para resolver estos problemas por mí.


Debería echar un vistazo a DirectX Tool Kit si aún no lo ha hecho ... Es una biblioteca C ++ para la programación Direct3D 11 que se basa explícitamente en el diseño de la clase XNA Game Studio.
Chuck Walbourn

Respuestas:


16

Te recomendaría que mires SFML y Polycode .

Creo que las respuestas aquí están perdiendo el punto. Es molesto tener que vincular a diez bibliotecas diferentes, como Freetype, libpng, tinyxml, Ogg, Vorbis, etc., para obtener algunas características básicas de XNA.


SFML

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

SFML es una API multimedia gratuita de C ++ que le proporciona acceso de bajo y alto nivel a gráficos, entradas, audio, etc. En cierto sentido, es algo similar a XNA pero no le sostiene la mano tanto. Por ejemplo, SFML no tiene una clase de modelo.


Si planeas usar Modelos en tus juegos, deberías considerar usar Assimp .

Assimp agrega soporte para importar los siguientes 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/

Polycode es un marco multiplataforma gratuito y de código abierto para el código creativo. Puede usarlo como una API C ++ o como un lenguaje de script independiente para obtener acceso fácil y simple a gráficos acelerados en 2D y 3D, sombreadores de hardware, programación de sonido y redes, motores de física y más.

La API principal de Polycode está escrita en C ++ y puede usarse para crear aplicaciones nativas portátiles.

Además del núcleo de la API de C ++, Polycode ofrece un sistema de secuencias de comandos basado en Lua con su propio conjunto de herramientas de compilación. La API de Lua refleja la API de C ++ y puede usarse para crear fácilmente prototipos e incluso publicar aplicaciones completas en múltiples plataformas sin compilar C ++.

Polycode es de código abierto, lo que significa que puede aprender de cómo se hacen las cosas detrás de escena. Además, utiliza Assimp para cargar modelos, por lo que no debe preocuparse por vincular manualmente a Assimp.


Aclaración menor: Polycode no usa assimp para cargar modelos, sino que tiene una herramienta basada en assimp para convertir modelos a un formato que pueda cargar.
cib

4

Hay literalmente cientos de bibliotecas que manejan todo tipo de aspectos del desarrollo de juegos. Desde cargar imágenes hasta abrir y administrar ventanas, renderizar, sonar, física, etc.

Lo que no hay son muchas soluciones de "ventanilla única", donde obtienes todo de una vez. Ese es uno de los beneficios de XNA. Por lo general, debe reunir muchas bibliotecas para construir un motor. Esto le brinda una gran flexibilidad, ya que si falta un componente, puede cambiarlo (relativamente) fácilmente por otro. Pero al mismo tiempo, requiere más trabajo.

En realidad, ¿por qué estás tan obsesionado con el lenguaje de programación que quieres usar? Me parece que realmente te gusta XNA y quieres usarlo para el desarrollo de juegos. Entonces ve a hacer eso.


3

Puede usar el D3DX y el DXUT al principio, que no están rellenos como XNA pero que ayudan mucho a configurar el entorno al menos, como crear una ventana, ejecutar el bucle principal y tener algunas funciones útiles como D3DX11CreateTextureFromFile () - que tendrá que gestionar el puntero del embargo, pero no es que dura. También hay muchas bibliotecas que puedes usar en C ++, que puedes reemplazar con las tuyas si quieres mejorar el rendimiento o lo que quieras cambiar.

Las bibliotecas D3DX y DXUT son las más adecuadas para D3D9 y 10, y DXUT viene con su código fuente. Para DX11, seleccionaron algunas funciones de esas bibliotecas, pero espero que todavía tengan las más útiles, y si recuerdo bien ahora, proporcionan el marco de efectos en forma de código fuente (por si tienes la paciencia para explorarlo).

Aprendí mucho más cuando trabajo en niveles más bajos que sobre las pirámides de los marcos, por lo que no puedo decir que use XNA, pero eso depende principalmente de sus objetivos.


Todas las versiones de D3DX están en desuso. Las bibliotecas de utilidades Direct3D 11.x 'modernas' son DirectXTex , DirectXTK y DirectXMesh más DirectXMath en el SDK de Windows 8.x. La última versión de Effects 11 y DXUT11 está en CodePlex para las personas que portan bases de código más antiguas y están contentas con las aplicaciones de escritorio Win32 solamente.
Chuck Walbourn

1

Si se está familiarizando con el lenguaje c ++, le recomendaría usar una biblioteca simple como SDL para obtener experiencia en el desarrollo de juegos y luego programar usando openGL.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.