ventajas traduccion source software sistemas significado operativos open licencia ejemplos desventajas descargar open-source

open-source - traduccion - open source ventajas y desventajas



¿Alguno de los juegos clásicos de NES ha sido de código abierto? (7)

Es probable que no encuentres el origen de los juegos originales, pero hay muchos homebrew y una cadena de herramientas relativamente madura. Como es la respuesta favorita, google es tu amigo. Pero para comenzar, aquí hay un tutorial relativamente decente:

http://www.bestdamnpodcastever.com/millerblog/?p=72 a través de "The Wayback Machine"

Acabo de jugar un juego de RBI Baseball en una ventana del navegador.

Eso en sí mismo me parece simplemente increíble. Cuando era joven, la NES era una caja mágica, capaz de proporcionar horas de diversión a los niños pequeños en todo el mundo.

Ahora, décadas después, soy programador. Y puedo apreciar la programación que se desarrolló en los juegos que se desarrollaron con hardware más primitivo hace solo un par de décadas. De hecho, algún día, espero completamente que el código de algunos de estos juegos esté consagrado en el Smithsonian.

Mi pregunta de programación:

¿Alguno de los juegos clásicos de NES (como RBI Baseball) ha sido de código abierto, y si es así, dónde puedo encontrar el código para estudiar?

En su defecto, ¿hay juegos de NES para los que se pueda estudiar el código fuente?

Creo que valdría la pena aprender de su ejemplo.

Por ejemplo:

  • ¿Usaron programación orientada a objetos?
  • ¿Usaron patrones de diseño para mantener el código mantenible?

Los juegos de NES se desarrollaron solo (hasta donde sé) en ensamblador, y supongo que el código fuente se perderá mucho después de tantos años.
De todos modos, tener el código fuente del ensamblador no está tan lejos del código de la máquina, por lo que puede no ser demasiado revelador como lo sería el código C o Java.
Sobre la orientación a objetos y los patrones de diseño, una vez más, fue ensamblador y en los 80, no esperes nada de eso.


No. Al menos ninguno que yo sepa (y he estado buscando).

NES apareció justo después del colapso del videojuego de 1983, la principal razón por la que el mercado se desplomó fue la inundación de juegos malos, lo que provocó que los clientes no compraran un solo juego, porque no había manera de saber qué juego era bueno.

Entonces, cuando Nintendo presentó NES (y todas las demás consolas de la época, como Master System de SEGA), decidió que solo se lanzarían juegos aprobados, Y hacer que cualquier fuente abierta sea un incumplimiento de contrato con multas pesadas, la razón de ello es que al no lanzar una API pública, haría que los "homebrews" sean más difíciles de inundar el mercado.

Hoy en día, Nintendo es mucho más fácil al permitir los juegos, ver la avalancha de juegos de mierda en la Wii, pero aún así ninguna consola le permite usar su API "verdadera", para evitar la inundación, incluso hay un problema cuando alguien usó un motor GPL (ScummVM) en Wii, lo que causó problemas, porque liberar la fuente de un juego para un sistema Nintendo es un incumplimiento de contrato, y GPL exige que la fuente sea liberada, en ese caso particular, los juegos fueron retirados de los estantes .

Y no, XNA y PS3 Linux no son realmente API de consola, ambas imponen limitaciones severas en lo que puedes hacer con la consola.

Tal vez puedas encontrar juegos caseros o de ingeniería inversa. Pero supongo que esto no es lo que pediste.

También a veces se puede encontrar la fuente de remakes y puertos, pero estos no utilizan la API de la consola.


Nunca he trabajado en la industria de los videojuegos, pero he leído bastante al respecto y hablo de vez en cuando con amigos que lo hacen, así que intentaré explicar más o menos cuál es la diferencia entre un juego y Otras aplicaciones, en cuanto a metodologías de programación.

Lo primero que hay que entender es que un juego es un producto único. No es como una hoja de cálculo o un procesador de textos, donde puede lanzar nuevas versiones mejorando y ampliando el código base anterior.

Lo segundo, es que necesitas liberar el juego lo antes posible. Por lo general, cuanto más tiempo pases en un juego, peor será en comparación con los otros juegos de la época. Esto se aplica principalmente a los juegos de PC, donde el hardware evoluciona mucho más rápido que en el mundo de la consola, pero aún se aplica en gran medida (los juegos continúan mejorando incluso con el mismo hardware a medida que se desarrollan mejores herramientas y algoritmos).

Lo tercero es que, por lo general, los juegos deben llevar el hardware al límite. Así que atornille todos los patrones elegantes que harían que su código sea más hermoso y fácil de mantener si lo hacen para funcionar más lento.

Entonces, lo que esperaría después de diseccionar un código fuente antiguo de un juego de NES es solo un código de espagueti, la mayoría escrito en ensamblado con un montón de hacks de bajo nivel estrechamente ligados a la arquitectura de la máquina.

Espero que mi respuesta te sea de utilidad.


Recomendaría consultar nesdev.com si está interesado en el desarrollo de juegos NES. Tienen documentación detallada.


Si estás interesado en la programación de NES, deberías visitar el episodio 91 - Tengen Reunion Roundtable of Retronauts . (Tenga en cuenta que este es el episodio 91 de la ejecución original del podcast; se pueden encontrar episodios más recientes en http://www.retronauts.com/ )

Es básicamente un grupo de ex programadores de NES que recuerdan el desarrollo de juegos en el sistema (y otros sistemas retro). De vez en cuando se sumergen en el tema técnico, que es realmente fascinante.


Tal vez ya hayas encontrado esto, pero Metroid (el original, para NES / Famicom) ha sido desensamblado y el código (en hermoso ASM) publicado en Romhacking.net.

Enlace directo.