Introducción a 2d Game Dev (C ++): ¿DirectX u OpenGL? [cerrado]

12

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?

Dfowj
fuente

Respuestas:

16

Recomendaría SDL ( http://www.libsdl.org/ ) para 2D, fue donde comencé por primera vez con gráficos y fue bastante fácil de usar, aunque apenas conocía C ++ en ese momento.

Este (espejo) es el conjunto de tutoriales con los que comencé y los encontré muy útiles (estaban un poco anticuados incluso hace ~ 4 años cuando los revisé, pero no creo que SDL haya cambiado mucho y aún deberían ser relevantes )

SDL también maneja las entradas y SDL_Mixer puede hacer audio básico.

Nunca he trabajado con DirectDraw u OpenGL para cosas en 2D, por lo que no puedo comentar allí, pero definitivamente puedo recomendar SDL.

Riley Adams
fuente
1
Encontré SDL bueno, pero fue muy difícil obtener las rutas e incluye la configuración adecuada.
Skeith
1
Consulte también lazyfoo.net/SDL_tutorials para obtener algunos tutoriales decentes (incluye tutoriales de configuración para varios IDE).
BeanBag
De acuerdo con @Skeith. No puedo imaginar los dolores de cabeza de obtener la configuración de SDL por primera vez para principiantes. Ya es bastante difícil lidiar con algunos de los problemas de configuración comunes con aficionados o incluso profesionales. Después de configurar SDL por primera vez, pude configurar CUALQUIER COSA por el resto de mi vida, con facilidad. Esa es la cantidad de dolores de cabeza que me dio; cuánta experiencia obtuve aprendiendo sobre más de lo que es típico para configurar una biblioteca. Fue hace mucho tiempo para recordar qué exactamente me causó más problemas o qué problemas tuve, pero todas las demás bibliotecas fueron fáciles de configurar.
Carter81
7

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.

Robert Vella
fuente
2
SFML también es C ++, mientras que SDL es C. Esto hace la diferencia si realmente quieres aprender C ++.
jsimmons
5

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.

jacmoe
fuente
Gran lectura =) Qué campo de minas es este tema ...
Nailer
66
404, página no encontrada
axel22
Obtengo un 404 en el enlace archive.gamedev.net / ...
Exilyth
4

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.

Ricket
fuente
1
Como contrapunto a la discusión de OGL vs DX, los chicos de Unity decidieron explícitamente cambiar a DirectX en Windows ya que los controladores predeterminados de OpenGL para la mayoría de las tarjetas de video son muy malos. No tengo la referencia frente a mí, pero en una de sus conferencias dijeron algo sobre la línea de los controladores OGL como su problema de bloqueo n. ° 1 en Windows. Afortunadamente, su capa de abstracción significa que realmente no te importa desde la perspectiva de los usuarios.
Tetrad
Creamos software de visualización orientado a los negocios para Unix y Windows, y puedo confirmar que la mayoría de los problemas que vemos en Windows están relacionados con el controlador OpenGL.
drxzcl
1

Si recién está comenzando, probablemente sea mejor usar un motor o marco 2D existente como SFML .

DrDeth
fuente
1

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.

Skeith
fuente
1

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/

Zaky German
fuente
0

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!

Salman
fuente
1
+1 por no merecer estar en -2. Demasiados trolls en este sitio web dando negativos sin razón alguna. Honestamente, ni siquiera entiendo por qué permiten que se muestre algo por debajo de 0. Es tan idiota como YouTube que permite el downvoting.
Carter81