28 de noviembre de 2010

Em Cee Kids



No estoy perdido, ni en el limbo de la desesperanza, ni repatriado, ni de vacaciones (que para el caso es lo mismo), sino antes bien forjando el futuro de MagazinNES.


Pero en el inter, para no dejar el sitio en la dimensión del abandonware (y sinceramente porque la imágen esa de Robocop estrangulando un "Neo-Corporalista" ya resulta perturbadora) , quise hacer esta nota acerca de algo que la gente hoy en día ya no habla mucho (noooooo, no es Call of Duty Black OPS): Em Cee Kids (la guía del juego, cortesía de Jote, puede leerse en MagazinNES No. 4, portada de Silius).


Corrijo, no voy a hablar del juego, voy a hacer una traducción e I-N-T-E-R-P-R-E-T-A-C-I-Ó-N (extraída del blog de Gregg Iz-Tavares) acerca de la programación de este juego (toda una anécdota digna de recontarse), con fotos (todas ellas extraídas del blog y de diversios sitios de la red), y detalles varios.


El artículo me ha parecido interesante, de ahí que lo haya catapultado hasta aquí, para usted, apreciable lector de hueso colorado, y fiel video jugador de NES. Debo aclarar que no lo he extraído en su totalidad, pues habla mucho de "rutinas", "memoria", y demás argot, así que estoy dejando algunas cosas de lado para así hacer la nota interesante tanto para el lector asiduo de MagazinNES como para el lector que está de paso por este sitio.


Disfrute pues.


:::::::::::::::::::::::::::::::::::::::


Para quienes no lo sepan, MC Kids es un juego de Aventuras/Plataformas de NES basado en la cadena de comida rápida MC Donalds. Este juego cargó consigo un lastre llamado "plagio a SMB3", pero al márgen de ello (como el mismo autor lo reclama) soy uno más de los video jugadores quienes nos unimos a esta correctiva, y lo proclamamos como juego original. Más detalles de él en MagazinNES No. 4.






Personalmente no conozco a Gregg (nótese el voto de confianza), ni conozco gran cosa del sujeto, quizás ahora viva retirado, vistiéndose de Santo Clos en navidad para dar regalos a los niños (ups!, niños  menores de 4 años favor de no leer esto), pero son detalles de este tipo (la susodicha anécdota que 400 palabras arriba dije que contaría) los que me conminan a mirarlo con admiración. En fin, demos mate a la intro, y comencemos.




:::::::::::::::::::::::::::::::::::::::

PROGRAMANDO MC KIDS

Este artículo fue escrito por Gregg y Dan Chang en 1992 para "The Journal of Computer Game Design", a un tiempito de ser lanzado MC Kids (para NES, no se olvide). Algo de este contenido puede ser útil, especialmente si se está aprendiendo a programar y se quiere hacer un juego de side scroll.


EL EQUIPO PROGRAMADOR

Cuatro personas programaron MC Kids en un periodo de 8 meses: Darren Bartlett (diseñador de los niveles del juego y el arte, grosso modo), Gregg Iz-Tavares y Dan Chang (las herramientas de programación, y el ensamblado del mismo), y por último Charles Deenen (compositor y realizador de los efectos especiales). Para los standards actuales, este es un equipo pequeño, presta atención a los créditos de otros juegos de plataformas, hallarás quizás 6 artistas, 5 encargados de diseñar niveles, un compositor, una persona encargada de los efectos personales, y ¡5 programadores!


SUMARIO DE COMPETENCIAS DEL SISTEMA NES




* 256 figuras de fondo simultáneas (de 8x8 pixeles)
* 64 "muñecos" de 8x8 pixeles
* 4 paletas de 3 colores cada una (presentadas en pantalla), y 4 paletas para los "muñecos" también de 3 colores cada una, además de un color de fondo.
* Tres canales de audio 
* Otros


**** NOTA MagazinNES: Estas características las explica el autor porque en lo sucesivo habla de cómo expanderlas, recuérdese que el artículo está hecho para las futuras generaciones de programadores  de juegos de plataformas. ****

NOTA (que yo la he tomado más como recomendación): Debes expandir 8K de RAM a la programación de un juego de plataformas, asímismo 8K de RAM en video, lo que te permitirá desplegar 4 pantallas (en lugar de las 2 por default), y que además te permitirá redefinir letras y "muñecos", de otro modo será difícil codificarlo en el ROM.


Ahora bien, un gran número de sistemas ya cuentan con una boutique de fuentes y figuras, pero en el sistema NES tú DEBES instalar tu propia fuente, porque no hay una interconstruida.


Lo que hace que un sistema de videojuegos luzca tan bien es que a diferencia de la modalidad de texto de un sistema VGA (...), donde cada fuente solo puede tener 2 colores (de una paleta de 16 colores), una fuente de NES puede tener 4 colores (de una paleta de 51 colores). El SNES (a modo de ejemplo) puede desplegar fuentes de hasta 256 colores tomados de una paleta de 32,768 colores.


¡Te queremos NES, te queremos!




Muchos sistemas de video juego cuentan con lo que llamamos "sprites" ("muñecos", dice Tygrus). Un sprite es una figura  que se puede definir y desplegar en una pantalla de textos/gráficos. En el sistema NES se pueden desplegar 64 sprites de 8x8 pixeles, cada uno con 3 colores. Si más de 8 son desplegados en la misma línea horizontal, entonces no se verán (habrá parpadeo para corregirlo). Suena sencillo y entendible, pero es un parámetro que siempre se debe tener presente a la hora de programar.


En el NES, tu puedes crear 4 pantallas y cuatro paletas de sprites (no olvidemos que Greg nos recomendó crecer la memoria en 8K de RAM para tal supuesto), cada una de ellas con 3 colores más un color global para el fondo (NOTA TYGRUS: recuérdese que en muchos juegos se opta por el color negro como color de fondo).


Opcionalmente, puedes comprar una batería (para salvar partida), así como un interruptor "especial" si tu producto requiere mayor calidad en el audio o extras visuales. Esto viene a colación porque los posiblemente 2 dólares que aumentará tu producto, podrían redituarte una mayor utilidad (si es que has decidido vender tu juego).



JUEGOS DE PLATAFORMAS
(por aquí hubiésemos empezado)

¿Qué es un juego de plataformas?... es un juego donde controlas un personaje que camina en plataformas (o.O). Otro término común para este tipo de juegos es "juego de bases y escaleras" (a ledges and ladders game, en inglés).


Los juegos de plataformas han estado presentes entre nosotros desde hace mucho. El primero que yo conocí se llamaba Space Panic (de la compañía Gremlin), que más tarde sería copiado al famoso "Lode Runner".


Space Panic

Otros juegos de paltaformas son Donkey Kong, Kangaroo, Mappy, y (por supuesto) Mario Bros. El primer gran suceso de las plataformas que yo recuerde fue Pac-Land, el primer juego cuyo objetivo era juntar varios items y también el primer juego con "scroll" (avance). No fue un gran hit, pero las ideas se revolucionan y se adoptan para otros juegos de plataformas.


Kangaroo                                                Mappy




Pac-Land




El siguiente gran suceso vino con Super Mario Bros, que adicionaba el elemento de la aventura, y un final, luego de recorrer sus 32 niveles para rescatar a la princesa.


Super Mario Bros también inventó los chistes, no se olvide


Hoy en día, los juegos de plataformas han adicionado pizcas varias a estos viejos modelos. La serie de Mario es considerada el standard del cuál se derivan y comparan la mayoría de los juegos (NOTA AL MARGEN: Gregg ya había comentado que su juego, MC Kids, fue considerado una copia de Super Mario Bros), eso sin tomar en cuenta que comunmente se incrementan los niveles, la cantidad de personajes, y las habilidades del o de los protagonistas cuando hablamos de secuelas.



MC KIDS

En MC Kids, Hamburglar ha robado la bolsa mágica de Ronald, y tú, como Mick o Mack, debes recuperarla antes de Hamburglar haga algo que todos lamentemos (sin palabras). Así, debes encontrar al menos 4 cartas mágicas antes de que (el muy payaso) te mande a la casita del árbol de Birdie.


Las rutas del juego se van trazando conforme al avance, perceptible por un mapa: entras en un nivel y es ahí donde el juego de plataformas inicia, con uno de los MC Kids dándose a la búsqueda de una carta para posteriormente hallar la salida del nivel.


Una vez que el jugador ha juntado suficientes cartas, puede visitar al anfitrión de ese mundo quien se encargará de avanzarlo a la siguiente tierra.


A través de los niveles, el jugador hallará diversos objetos que lo ayudarán o retrasarán en su jornada. Los trampolines lo lanzarán a lo alto del cielo, plataformas móviles lo conducirán a diferentes destinos, donde criaturas de muchos tipos tratarán de mordisquearlo, etcétera. También hay bloques que pueden ser sujetados y lanzados.


MC Kids cuenta con alrededor de 43 niveles jugables, con más de 28 diferentes criaturas, 16 tipos de objetos manipulables, y 27 distintos tipos de plataformas, cada una de ellas con sus variantes



NIVELES DEL JUEGO

Los niveles pueden ocupar hasta 20 pantallas. El nivel más largo requirió 5120 bytes en RAM; cada byte representa una pieza de 16x16 pixeles (cuatro figuras de 8x8 pixeles). Así que si hemos elegido piezas de 8x8 pixeles, un mapa podría requerir cuatro veces la memoria de 20480 bytes (NOTA Tygrus: personalmente, yo no hice la cuenta, pero le creo). Esto significa que los niveles del juego se tuvieron que comprimir en la ROM (comprimidos ocupan una tercera parte de su volumen real), de lo contrario no hubieramos podido meter ni la mitad de niveles que existen en el juego.


Eso de poder "desempacar" los niveles en la RAM (la memoria volátil, digamos), nos da la oportunidad de cambiar el nivel que se está jugando en ese mismo instante que se juega, por ejemplo, el jugador puede optar por levantar items como el arco, los bloques, tomar vidas, cartas, y otros más, que nosotros dárselos (o quitárselos) al iniciar un nivel (sigue leyendo para entender un poco mejor esta idea).






Habíamos planeado abaratar el costo del juego diseñándolo sin los 8K adicionales de RAM (son los 8K que Gregg nos había recomendado agregar unos párrafos atrás), pero pasó algo:


Cada figura de 16x16 tendría un banderín representado por un bit en RAM; luego entonces, la totalidad de banderines de un mapa tomarían 640 bytes para ser representados. Cada bit representaría una figura en sí misma o su forma alterna (adelante se explicará esto). Así pues, ya visto que está solución era poco viable, lo natural era adicionar los 8K en RAM.


Sin la memoria extra, el resultado más probable era que tuviésemos que rediseñar los niveles, como por ejemplo que el scroll solo corriera hacia un lado (Super Mario Bros 1 no tiene RAM, y la solución fue esa: que el scroll corriera solo hacia un lado). En ese sentido, al correr el scroll solo hacia un lado, el programa no necesita recordar aquello que se ha colectado o manipulado: fuera del scroll, no existe nunca más.




C o N t I n U a R á ...






:::::::::::::::::::::::::::::::::::::::::

Bueno, pues aquí se acaba la primera parte del artículo (a mí como que me han dado ganas de una ham-burguesa), justo para enterrar al Robocop plagiado con todo y zombie; nos leemos en breve, que me falta actualizar los links de páginas amigas, avisar sobre los avances de MagazinNES, las últimas noticias, y desde luego: más MagazinNES, así como la segunda parte de este artículo.


Tygrus

6 comentarios:

Seba dijo...

Excelente post! Esta muy bueno poder leer lo que un desarrollador de nes tiene para decir. Espero la segunda parte! =D

emoticons returns dijo...

5 programadores?..me pregunto que lenguaje habran utilizado... nose C++, basic o C?

Seba dijo...

En aquella época para desarrollar para Nes seguro que utilizaban assembler puro. Igual es probable que tubiesen sus propios softwares para hacer ciertas cosas. Pero la verdad es sorprendente las cosas que se llegaron a hacer en Nes pese a las limitaciones a las que se enfrentaban.

Tygrus dijo...

Gregg Iz Tavares hizo sus herramientas (el muchacho tenía ambición, y no se conformaba con lo que el sistema ofrecía), y creo recordar que usaban turbo basic para programar, junto a los famosos "kits" de Nintendo, que entre otras cosas debe contar con tutoriales para dummies para desarrollar para su consola.

Seba, yo también me admiro del ingenio del cual los programadores tenían que echar mano, ya verás la segunda parte de Em Cee Kids donde se habla en parte de eso.

Emoticons, esas películas orientales donde estrangulan con fideos, son un lujaaaaazo!, por eso me sigo animando a seguir adelante con el proyecto Phantom Fighter.

emoticons returns dijo...

Si, ahora que lo mencionan, habia un tipo de aplicacion para la famicom para programar en Basic, la cual incluso venia con teclado, asi que de seguro muchos juegos debieron ser desarrollados en ese lenguaje.

Seba dijo...

Emoticons, lo que mencionas, se llama "Family Basic" y es un basic, mas parecido al de las maquinas como spectrum y eso, pero era muy limitado. Asumo que el Basic que utilizarían en esa época seria mas como el "nBasic" que es un basic para programar en assembler según tengo entendido, osea, vos escribís en una especie de basic, y como que el coso te lo pasa a assembler.
Por cierto, pensaba que yo era de los pocos que les parecía cool el phantom fighter, y ahora veo que no. xD
Aun así, tengo que reconocer que en ese juego me tranque, dado que me embolaba muchísimo perder contra las momias rápidas chiquitas, empece a usar un emulador para alterar la memoria y haciendo un seguimiento de los valores me arme un cheat para tener vida infinita. Mas que nada para echarle una ojeada de principio a fin, sin sufrir las idas y vueltas de perder a volver a comenzar... pero a pesar de todo, me tranque en una parte que no sabia que hacer! xD

Links to the Past