¿Por dónde empiezo si quiero escribir un juego C ++ 2d? [cerrado]


17

Soy un desarrollador web de C # y quiero ampliar mi conjunto de habilidades y divertirme mientras lo hago. Conozco algunos de los conceptos básicos de C ++ y me encantaría escribir un motor de juego / juego 2D simple para mí usando C ++. ¿Qué otras bibliotecas o SDK necesito y dónde encontraría algunos tutoriales y recursos informativos para avanzar?

Ya he examinado XNA con C #. Hay muchos recursos para eso, pero prefiero usar productos que no sean de Microsoft. El objetivo de esto es divertirse un poco mientras se convierte en un programador más completo.

Tenga en cuenta que no estoy pidiendo el mejor lugar para comenzar. Solo estoy pidiendo un lugar para comenzar.

¡Gracias por cualquier ayuda!

Respuestas:


27

El punto de partida estándar (en mi experiencia) para el desarrollador de juegos de C ++ es SDL . Tienes que poner tus manos un poco más sucias con esto que con XNA.

Si quieres probar algo un poco más alto, te sugiero SFML . Maneja algunas de las tareas más domésticas para usted, pero aún debe vigilar el uso de su memoria, etc.


1
Lo investigaré. Mi mayor problema con XNA es que fue tan sencillo que no sentí que realmente estaba aprendiendo cosas de nivel inferior que estoy interesado en explorar.
quakkels

66
SFML tiene un diseño agradable, pero todavía está bastante defectuoso y está en proceso de un rediseño importante de API. No lo usaría para juegos más complejos hasta que la próxima versión esté bien pulida.
Bitgarden

Si quieres algo un poco más desafiante que SDL, prueba ClanLib . Al igual que XNA, es compatible con la aceleración de hardware, pero también funciona en Linux y también en 2D.
ChrisC

2
También puede ir directamente a la garganta: OpenGL es mi favorito personal (puede envolverlo con SDL o SFML)
ultifinitus

9

Sugeriría usar SDL . Ha existido desde hace mucho tiempo, por lo que la documentación y el soporte son bastante buenos, y es una de las formas más fáciles que conozco para obtener una superficie de dibujo en la pantalla. Le dará práctica para escribir clases en C ++ (ya que probablemente quiera envolver mucho las llamadas a la función SDL C) y también le dará algo de experiencia usando punteros y referencias y haciendo un poco de administración de memoria básica. Administrar su propia memoria es una de las principales diferencias entre C ++ y C #.


9

Personalmente, elegiría Allegro 5 , por las siguientes razones:

  1. Tiene un sistema de compilación basado en CMake. Esto hace que sea mucho más fácil que la mayoría de los sistemas de compilación para trabajar en múltiples plataformas. Esto parece algo menor, pero en general es bastante importante. Hace que la construcción de la biblioteca sea mucho más simple.

  2. SFML todavía está en un flujo significativo. 2.0 es un cambio bastante sustancial. Mientras que Allegro ya ha experimentado un cambio significativo con la versión 5, y ahora se trata de estabilidad.

  3. Cubre la modularidad de una manera diferente a SFML. Con SFML, solicita componentes específicos, pero los obtiene todos. Si solicita el componente de gráficos, obtendrá todos los componentes de gráficos. Con Allegro 5, siempre obtienes el componente gráfico. Pero si no desea utilizar los cargadores de mapas de bits de Allegro, no tiene que hacerlo; Puedes usar el tuyo.

  4. Tiene muy buena documentación. SFML utiliza documentación de estilo Doxygen, pero incluso eso es bastante espartano. Mientras que Allegro 5 es más completo, con funciones agrupadas en función de los sistemas específicos que cubren. No es perfecto, pero en general es mejor.

  5. Son lo suficientemente inteligentes como para no intentar enhebrar. Con C ++ 11 / Boost. Los subprocesos están ampliamente disponibles o están a la vuelta de la esquina, usar otro envoltorio de subprocesos puede ser más que problemático: puede ser peligroso hacer que su código funcione correctamente.


¿Por qué preferirías / sugerirías Allegro sobre SDL o SFML?
Quazi Irfan

@iamcreasy: Si insistes.
Nicol Bolas

Todavía no mencionas SDL ...
Ingeniero

@NickWiggill: SDL tiene subprocesos y sistemas de compilación específicos de la plataforma. No sentí la necesidad de llamarlo por nada específico.
Nicol Bolas

@ nicol-bolas no mencionaste los contras de Allegro. Como una cantidad muy baja de comparación de tutoriales.
Quazi Irfan

4

Creo que un lugar fantástico para comenzar es LazyFoo . Esto lo pondrá en funcionamiento con SDL más rápido que en cualquier otro lugar que haya visto. Recomiendo entrar rápidamente en OpenGL (tan pronto como pueda soportarlo) porque obtendrá mucho más por su dólar de programación, con aceleración de hardware. Si sigue esa ruta, le recomiendo esta guía .


2

Recomendaría SFML si está utilizando c ++. Obtendrá algo en la pantalla rápidamente y usarlo con su código de juego c ++ es sencillo.


2
  • SFML: el bebé en el grupo, pero potencialmente más fácil de usar por lo que he leído.
  • SDL: el camino del medio. Biblioteca muy madura, sensata, generalmente concisa, aunque un poco arcana de vez en cuando, y una opción muy común. Configurar formatos de visualización puede ser un poco bastardo, he usado los tutoriales de lazyfoo para ayudar en ese frente.
  • Allegro - Geriátrico, existe desde los días de Atari ST. Por esa razón, gran parte del código de renderizado 2D (que creo que solo está en Allegro 4) es bastante rápido ya que la lógica se creó para sistemas con especificaciones mucho más bajas. Personalmente no me parece muy intuitivo, incluso teniendo en cuenta la documentación.

Teniendo en cuenta que OpenGL acelera el lado 2D de las cosas en estos días, no es tan importante tener acceso a los procesadores de software rápidos que Allegro y SDL tienen (o tenían en versiones anteriores). Sin embargo, cuando elijo una biblioteca, me concentro en la madurez del proyecto, la base de usuarios y los documentos más que la velocidad (siempre que la velocidad sea razonable), y diría que SDL y Allegro ganan en esos frentes. SDL también ha lanzado títulos triples AAA como Civ: Call to Power.

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.