Entonces, soy un estudiante que busca poner mi pie en la puerta del desarrollo del juego y estoy tratando de hacer algo en 2D, tal vez un clon de interacción de tetris / invasores del espacio / algo con un ratoncito.
Apunté mis búsquedas en la dirección de C ++ y 2d y finalmente me llevaron a DirectX / OpenGL
Ahora que lo entiendo, todo lo que estos paquetes harán por mí es dibujar cosas en una pantalla. Y eso es todo lo que realmente me importa en este momento. El sonido no es necesario. La entrada puede manejarse con stdlib probablemente.
Entonces, para un principiante que intenta crear un juego básico en C ++, ¿recomendaría DirectX u OpenGL? ¿Por qué? ¿Cuáles son algunas diferencias de características clave entre los dos? ¿Cuál es más usable?
Usé SDL y SFML para mis proyectos de juego. Usé SDL para un juego terminado, un juego de tetris, y usé principalmente SFML como una capa de ventanas para experimentos de sombreado. Desde mi experiencia, tendría que decir que SDL es lo que dice. Es una capa simple de medios directos, que abstrae los datos con los que trabaja su medio (sonido y video) a un nivel con el que puede interactuar a través de diferentes plataformas. Eso es "todo" lo que hace.
Debido a eso, generalmente tiene que mezclarlo con algunas otras bibliotecas, especialmente SDL_mixer, SDL_gfx y SDL_image, que proporcionan la funcionalidad que todos necesitan para crear juegos.
Todas estas bibliotecas también están destinadas al lenguaje de programación C, y siguen sus convenciones. No es que haya nada malo en eso, pero si quieres un enfoque orientado a objetos sobre cómo interactúas con io, entonces básicamente tienes que construir esa capa tú mismo.
SFML viene con todo de inmediato. Tiene sonido, tiene video, tiene mezcla, tiene límite de fotogramas y está orientado a objetos. Si eso es lo que quieres, te recomiendo que lo hagas. SFML también tiene una capa de abstracción para algunas de las funciones básicas en opengl (específicamente beginShape / EndShape y pixel shaders). No creo que SDL tenga algo así, solo un método para fusionarse con él.
PD No para alejar la conversación de C / C ++, pero si no estás usando ese lenguaje por alguna razón en particular y quieres una más fácil, siempre hay pygame. Que es básicamente SDL + para Python.
fuente
http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=263140&reply_id=3598844
Estoy de acuerdo con estos comentarios y creo que es una discusión estelar de por qué DirectX es mejor que OpenGL.
Ese diario es en respuesta a David en Wolfire.
Espero que sirva para equilibrarlo un poco. ;)
Pero en general, si está utilizando un marco multiplataforma y API cruzado:
Use DirectX en Windows y OpenGL en * nix.
fuente
http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX
Estoy de acuerdo con estos comentarios y creo que es una discusión estelar de por qué OpenGL es mejor que DirectX.
Sin embargo, esta pregunta es absolutamente una cuestión de opinión, y DirectX tiene absolutamente sus beneficios sobre OpenGL, especialmente 10 y 11 y especialmente en el contexto del desarrollo del juego.
Además, si eliges usar OpenGL, SDL es una biblioteca maravillosa y muy popular, y hay muchos recursos para aprender OpenGL (NeHe, etc.), pero tal vez ese sea el lugar para otra pregunta.
fuente
Si recién está comenzando, probablemente sea mejor usar un motor o marco 2D existente como SFML .
fuente
Me gusta Direct X y lo he estado usando durante varios años en muchos proyectos, pero si aprende, tenga cuidado con los problemas de versión.
Descubrí que la mayoría del código directo x no se compilará bajo una versión diferente y esto puede ser un infierno si estás tratando de seguir un tutorial.
Recomiendo Direct X, ya que hay funciones para todo que lo hacen más fácil cuando comienzas y luego formas más avanzadas de manipular las cosas a medida que avanzas.
fuente
Motor de juego de Haaf
No sé qué tan actualizado está (quiero decir que no lo es, pero no creo que haya ninguna razón para que no pueda usarse), pero lo usé hace un tiempo (C ++) y realmente Lo disfrute. HGE no se actualizó desde el 05.08, pero nuevamente, recuerdo que es bastante simple de aprender y rápido. También viene con todo tipo de herramientas y ayudantes como un sistema de partículas.
De todos modos, si lo que quieres es crear un juego realmente, en lugar de aprender las cosas que están sucediendo "bajo el capó" en los procesos de dibujo y demás, recomendaría usar algo de nivel más alto que OpenGL o DirectX, o pasarás tu tiempo dibujando cosas en la pantalla en lugar de crear un juego real. Y HGE definitivamente vale la pena echarle un vistazo.
http://hge.relishgames.com/
fuente
Estoy en la misma posición que tú, recién hace unos meses comencé a trabajar en el desarrollo de juegos (en la plataforma de iPhone). Viniendo de un fondo C, en realidad sugeriría que use un marco (Particularmente Cocos2d).
Las ventajas de un marco son más que discutibles en esta publicación, pero principalmente maneja la mayor parte del procesamiento de bajo nivel con OpenGL y le proporciona métodos para lidiar con lo que probablemente necesitará para el desarrollador del juego. Tienen una gran comunidad, son de código abierto y, por lo tanto, si necesita acceder al código central del marco / modificar cualquier parte para satisfacer sus necesidades / ir a OpenGL de bajo nivel si es necesario, todavía tiene esa opción.
Puedes seguir la ruta de OpenGL directo, pero para mí parece una exageración.
Lo más probable es que también desee buscar en varias bibliotecas de física diferentes que existen: Google Chipmunk y Box2D para obtener más información.
¡salud!
fuente