¿Qué es un buen juego de código abierto para aprender? [cerrado]


15

Quiero descargar el código fuente de un juego de código abierto, para familiarizarme con la arquitectura del juego. ¿Alguien sabe de un juego con código fuente que sea legible y fácilmente comprensible?

Editar: después de pensarlo un poco, me gustaría hacer un juego que se pueda jugar en el escritorio o en un teléfono Andriod con gráficos 2D.


77
La mayoría de los juegos de código abierto son proyectos grandes y antiguos que no siempre son fáciles de entender, proyectos comerciales que fueron abiertos por diversas razones, o juegos inacabados que no están realmente en un estado jugable. Además, la arquitectura depende un poco del tipo de juego y lenguaje utilizado. ¿De qué tipo de juego quieres aprender y qué idiomas sabes? (tutoriales honestamente podría ser una mejor opción aquí)
thedaian

@thedaian Sé java, C ++, C, javascript y python
jumpnett


Estoy de acuerdo con thedaian, al menos eso funcionó mejor para mí. Hay muchos artículos, libros y tutoriales muy buenos. Tendrá que tomarse el tiempo para elegir las correctas, pero le ahorrará tiempo más adelante porque ya sabrá por qué codifican como lo hacen y podrá reconocer la calidad de las fuentes (que a menudo huelen). Si desea portabilidad, optaría por C / C ++, pero para esas plataformas puede hacerlo bien con Java.
Pablo Ariel

1
Wiki de la comunidad?
Jari Komppa

Respuestas:


2

No estoy seguro de qué tipo de juego está solicitando, pero hay un juego de código abierto llamado OpenTTD escrito en c ++. Creo que podrías usarlo como una buena muestra.

Algunas características que hacen que este juego sea único:

  • Es un juego de estrategia.
  • Tiene soporte multijugador a través de internet y red local.
  • Admite la traducción a otros idiomas a través del archivo de configuración (que se genera a partir de archivos de texto sin formato)
  • Está compilado en casi todas las plataformas que conozco.
  • ¡Su proyecto aún está vivo!
  • Tiene soporte de inteligencia artificial incorporado.
  • Los datos gráficos y musicales son completamente personalizables a través de parches.
  • Admite lenguajes de script para desarrollar IA personalizada. para que también puedas leer otra IA escrita para este juego.
  • Es un proyecto relativamente grande, mientras que es fácil de leer y entender su código.
  • Está basado en SDL, y desde ese punto desarrollaron todo desde cero.

--Editar--

Justo hoy comencé a leer su código desde el principio. Para entender lo que han escrito, debes ser un programador decente de C y C ++ (¡aunque su código está bien comentado!) ¡Quiero decir que tienes que ser un maestro de ambos idiomas ya que están usando estructuras de ambos! así que si no estás lo suficientemente seguro sobre tus habilidades de programación, ¡ni siquiera te acerques a ese código! ¡Ese es el código más sucio que he visto! (¡y yo mismo soy un codificador sucio pero son otra cosa!)

Creo que ahora puedo sugerirle que verifique el código de supertux . es un juego de plataformas (al igual que Super Mario) y hasta ahora su código parece realmente limpio (he comprobado el hito 1.3). tienen algunos comentarios en ese código, pero solo para lugares en los que puede confundirse.


Si bien OpenTTD es un juego increíble, no creo que sea un buen proyecto de aprendizaje. La mayor parte fue de ingeniería inversa desde el ensamblaje, y todavía hay secciones de código que reflejan eso. Además, es simplemente un gran proyecto, y probablemente sea demasiado para un proyecto inicial de "aprender arquitectura de juegos".
Thedaian

@thedaian puedes decirlo, pero de vez en cuando necesito hacer algo nuevo, solo leo lo que está escrito en su código. ¡Hasta ahora creo que es el juego de código abierto más legible que hay que leer!
Ali1S232

Tampoco estoy seguro de cuándo fue la última vez que revisó su código, pero lo han limpiado desde la versión 1.0.0
Ali1S232


1

Hay pilares como Quake 3 o si quieres algo un poco más simple (y en 2D) mira el juego independiente Gish . Ambos usan OpenGL y también son multiplataforma.

Sin embargo, Gish está un poco desordenado.


1

Te recomiendo que primero centres tu atención en el tipo de arquitectura de juego que te interesa aprender: canalización 3D, física, IA, etc.

Con una solicitud genérica de un buen ejemplo de programación de juegos, creo que Space Invaders Gl es difícil de superar, ya que tiene un código limpio y una interfaz de juego abierta, mientras que las cosas son bastante simples.

salud


¿Los invasores espaciales son solo ventanas gl? Actualmente no tengo Windows instalado en mi PC. No es que no tenga acceso a él, solo que no es tan conveniente.
jumpnett

1

Aunque leer el código puede ser útil, si eres un principiante en el dominio, no aprenderás nada. Especialmente si nos fijamos en el código de grandes proyectos como Q3A u OpenTTD. Estos fueron realizados por un equipo completo, con cada persona teniendo diferentes prácticas de codificación, diferentes ideas sobre cómo hacer las cosas. Solo obtendrá una visión general, no los pequeños detalles que hacen que todo se mantenga unido.

Desarrolle, falle, intente nuevamente hasta que encuentre algo que parece ser bueno, vuelva a fallar, enjuague y repita hasta que tenga algo bueno. Desarrolladores diferentes significan ideas diferentes sobre cómo implementar cosas. El hecho de que haya sido codificado por Carmack / cualquier desarrollador famoso que haya hecho un buen juego no significa que sea lo mejor desde el pan rebanado, y una implementación diferente podría ser más clara y rápida.


1

Creo que una de las cosas más importantes que puedes hacer es elegir un juego que disfrutes jugar. Esto ayudará a mantenerlo interesado en él y lo familiarizará con la forma en que el código se traduce en la perspectiva de los jugadores.

Una vez que hayas elegido ese juego, independientemente de cuán grande sea, no tienes que tratar de descubrir cómo funciona cada línea de código. Elige un pedazo y mira eso. Por ejemplo, intente descubrir cómo se almacenan los datos del jugador o cómo se dibuja un elemento del menú, etc.

Lo siguiente que puede hacer, que va junto con mi parte anterior, es intentar cambiar algo. No es algo enorme (al principio), solo algo simple y notable en el juego. Incluso algo tan simple como el texto de un botón en un menú o agregar un elemento de menú o cambiar los cálculos de daños. Tal vez piense que deberían haber hecho algo diferente, intente cambiarlo usted mismo.

Cuando me interesé por primera vez en el desarrollo de juegos, estaba realmente interesado en los juegos de rol 2D en línea. Así que encontré la fuente de uno en línea y comencé a desarrollarlo. Agregar mis propias características y ajustar cosas, corregir errores, etc. Eso fue en VB6 hace unos años y ahora estoy usando C # y XNA y escribiendo mi propio juego desde cero. Debido a que disfruté los juegos, me motivó a querer trabajar en ello, para mejorarlo. Casualmente, esta es también la forma en que aprendí muchas de las técnicas de programación, depuración y resolución de problemas que uso hoy en mi trabajo diario no relacionado con gamedev.

También es muy útil si el juego tiene una comunidad de modders a la que puedes hacer preguntas y obtener ayuda y ejemplos. Pero, de nuevo, incluso si eso no existe, usted ya está aquí y estamos listos para ayudarlo.




0

El Scrolling Game Development Kit 2 te permite crear juegos 2D y jugarlos usando una GUI sin escribir código. Pero también te permite ver y editar el código que está incrustado en el proyecto que representa el marco / motor detrás del juego. La mayor parte del código se expone a través de la GUI, aunque una pequeña parte del código generado se basa en dónde coloca los sprites y qué mapas crea. Sin embargo, incluso este código es visible si genera el proyecto y luego abre los archivos resultantes en Visual C # Express. Todo el programa (IDE) en sí también es de código abierto. Está construido en la biblioteca OpenTK (que utiliza para interactuar con OpenGL desde C #), que también es de código abierto.


Lo echaré un vistazo, pero soy un programador, por lo que escribir código no es gran cosa.
jumpnett
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.