¿SharpDX es lo suficientemente maduro como para adoptarlo o debería comenzar a usar SlimDX ahora mismo?

10

Estoy a punto de detener mi proyecto de juego en XNA porque, por lo que puedo deducir, su desarrollo está llegando a su fin (y ya está detrás de la tecnología actual). Por lo tanto, necesito adoptar un nuevo marco o API.

Acabo de pasar 2 días mirando C ++ y decidí que realmente no es para mí, sin embargo, encuentro el acceso en bruto a DirectX atractivo. SharpDX parece un buen lugar para comenzar, pero no tiene documentación ni comentarios de código. Siento que no está listo para usar.

Me interesan las opiniones de las personas que han utilizado uno o ambos de estos marcos, para ayudarme a decidir con certeza cuál debo aprender. Gracias por cualquier consejo

Gavin Williams
fuente
1
Pregunta muy conversacional :). SharpDX es probablemente tan maduro como SlimDX porque se genera directamente desde los encabezados; como tal, obtuvo el 100% de DirectX inmediatamente. Ambas bibliotecas son esencialmente lo mismo; así que puede usar las muestras SlimDX para SharpDX.
Jonathan Dickinson el
1
Es posible que su reticencia a recoger C / C ++ sea el problema real en términos de emoción. Mientras permanezcas en el nivel administrado, nunca llegarás a la carne real, en mi opinión. Esto de alguien que durante mucho tiempo juró por lenguajes administrados, a pesar de estar formalmente entrenado en C ++. Solo una observación. No evites C ++ demasiado duro. Sin duda, limitará sus opciones en esta industria si lo hace, mientras que lo contrario definitivamente no es cierto, de hecho le brinda un punto de entrada sólido en otras industrias (médica, financiera, defensa). El salario promedio es mucho mejor allí, para su información.
Ingeniero
Realmente estoy interesado en DX, y aunque puedo terminar portando mi proyecto a Slim o Sharp, ciertamente escucho lo que estás diciendo. Y probablemente me sería útil seguir aprendiendo C ++ para poder superar esa incomodidad. Me gustaría pensar que dentro de 12 meses si estuviera en una posición en la que necesitaba usar C ++ / Direct X, podría elegir hacer eso, si es la herramienta adecuada para el trabajo.
Gavin Williams

Respuestas:

16

Soy el autor de SharpDX, por lo que mi consejo será parcial, pero al menos me gustaría responder sobre algunas de sus inquietudes.

Acerca de la documentación de SharpDX, el estado actual es muy limitado, ya que he estado trabajando hasta ahora para que toda la API de DirectX sea accesible desde .NET y el nuevo sistema operativo Win8. Como estoy cerrado para terminar de este lado, estoy trabajando para proporcionar un sitio web completo y algunos artículos para explicar los conceptos clave de SharpDX y cómo puede obtener lo mejor de él. Además, tenga en cuenta que este proyecto es principalmente para llevar DirectX a .NET, por lo que sigue siendo una API de bajo nivel. Por lo tanto, requiere profundizar un poco en el comportamiento de la API de C ++ para comprender cómo funciona. Afortunadamente, casi todos los métodos en SharpDX se asignan a un solo método en la API de DirectX, por lo que es fácil verificar cómo usar un método verificando la API de DirectX. El sistema de documentación que estará disponible con SharpDX 2.

¿SharpDX está listo para ser usado para desarrollar un juego? En resumen, sí.

En primer lugar, una empresa japonesa me contrató para participar en el desarrollo de un nuevo motor 3D en C #, y estamos utilizando SharpDX para el backend de renderizado en Windows.

En segundo lugar, he recibido muchos correos privados de desarrolladores de compañías que utilizan SharpDX para desarrollar aplicaciones multimedia (que van desde juegos, editor de niveles, publicación de fotos en línea ... etc.). Algunos de estos clientes son bastante grandes (desafortunadamente, no puedo citarlos).

Por último, algunos proyectos públicos de código abierto están utilizando (o van a utilizar) SharpDX para su representación principal de back-end. Por ejemplo, Delta Engine ya está utilizando SharpDX para su representación Direct3D11 (que también estará disponible para Win8). El próximo proyecto ANX (un sucesor XNA de código abierto) también está utilizando SharpDX para el renderizado, gamepads y gestión de audio.

Pero SharpDX es solo un paso en el camino para construir un motor de juego, y luego un juego. Debido a que la API es de bajo nivel, no puede esperar tener el mismo tipo de características de alto nivel a las que estaba acostumbrado con un marco como XNA. Pero con un marco mínimo, podrías hacer muchas cosas.

Además, podría considerar usar un producto bien establecido como Unity para desarrollar juegos portátiles en C #.

xoofx
fuente
1
+1 para ANX. Realmente emocionante ya que realmente amo la simplicidad de XNA (rápidamente me di por vencido con #DX debido a la cantidad de código de arranque requerido).
Jonathan Dickinson el
Wow, gracias por agregar a Alexandre, estaba leyendo algunas de tus publicaciones esta noche sobre tu partida del equipo de slimDX y lo que tienes en mente para SharpDX. Es genial ver un trabajo tan enfocado, y es genial tener otro marco administrado, los motores de gráficos administrados solo se están volviendo más grandes, y no creo que hayamos visto toda la posibilidad todavía. Solo espero que los problemas de rendimiento con el código administrado, ya sean de tiempos de llamada o de comportamiento del recolector de basura, puedan resolverse o minimizarse para que sean intrascendentes. Tu trabajo ciertamente está agregando a esa solución.
Gavin Williams
Realmente hay muchas opciones. He descargado Unity. Nunca antes había visto un motor de juego o algo así, por lo que debería ser interesante ver qué puede hacer y cómo lo hace. Ya tengo los fundamentos de mi proyecto escritos en xna y está en algún lugar cerca de 5000-10,000 líneas de código, así que me gustaría usar ese código si pudiera. Pero todavía está muy lejos de completarse, así que supongo que si paso una semana o dos mirando diferentes marcos y motores, no es una mala inversión.
Gavin Williams el
Nunca había oído hablar de ANX antes de esta publicación. Muy interesado a dónde va esto. Y, por cierto, es posible que desee actualizar el enlace de su publicación a: anxframework.codeplex.com
David Gouveia