¿Qué se siente al crear un juego para Game Boy en 2017?

imagen

Todos tuvieron un sueño de infancia. Personalmente, soñé con crear un juego para mi primera consola: Nintendo Game Boy. Hoy mi sueño se hizo realidad: lancé el primer juego para Game Boy en un cartucho real : Sheep It Up!

En este artículo, hablaré sobre las herramientas que utilicé y los obstáculos que un principiante tuvo que superar para crear un proyecto. El artículo es muy largo, por lo tanto se divide en dos partes:


El juego


"Sheep It Up!" - Este es un juego de arcade en el que las ovejas deben subir, pegándose a las tiras voladoras de Velcro. El concepto es simple, pero el juego rápidamente se vuelve bastante complicado: ¿hasta dónde puedes subir sin caer?


Yo mismo soy un coleccionista de juegos, así que no quería que Game Boy sufriera ningún juego antiguo al crear mi proyecto. Por lo tanto, todo fue creado específicamente para el juego: placa de circuito impreso, ROM, carcasa, estuche protector e incluso una pegatina. También buscamos mantener un precio razonable para que todos pudieran disfrutar del juego: $ 15 (+ envío) . Se ejecutará en cualquier modelo de Game Boy, desde el primero hasta GBA SP, incluido el Super Game Boy.


Si todavía tiene un Game Boy, puede comprar un cartucho en el sitio web del editor:

https://catskullgames.com/sheep-it-up

Restricciones de sonido


Como entendimos desde la primera parte del artículo , Game Boy tiene limitaciones obvias de potencia de CPU y gráficos. Pero lo mismo se puede decir del sonido. Y, de hecho, a diferencia de las máquinas modernas, Game Boy no puede reproducir música MP3 ni leer archivos de audio WAV. Para crear sonidos y música para Game Boy, debe generarlos dinámicamente utilizando los cuatro "canales de sonido" integrados en la consola. Cada canal tiene su propia función:

  • Canal 1 - Tono y barrido: podemos reproducir sonido (tono) con tono creciente o decreciente.
  • Canal 2 - Tono: reproduce un tono sin un efecto especial.
  • Canal 3 - Forma de onda: puede reproducir formas de onda muy simples (codificadas en 4 bits).
  • Canal 4 - Ruido: puede generar sonidos de explosiones o motores.

Repitámoslo nuevamente: para reproducir sonido en Game Boy, debes generarlo manualmente, controlando directamente estos cuatro canales de sonido . Afortunadamente, esto es bastante simple: simplemente cambie los valores de varios registros de hardware. Cada canal de sonido está controlado por 4-5 registros de hardware (variables de 8 bits) que determinan el volumen, el tono, los efectos especiales, etc. Al establecer diferentes valores para los registros que controlan el canal, podemos hacer que Game Boy reproduzca una amplia gama de sonidos. Por ejemplo, aquí hay tres sonidos de Sheep It Up! que creé usando el canal de sonido 1, y los valores correspondientes de los registros de hardware:

Saltar



NR10_REG = 0x15; NR11_REG = 0x96; NR12_REG = 0x73; NR13_REG = 0xBB; NR14_REG = 0x85; 

Aterrizaje



 NR10_REG = 0x79; NR11_REG = 0x8D; NR12_REG = 0x63; NR13_REG = 0xC8; NR14_REG = 0x80; 

Fall (final del juego)



 NR10_REG = 0x4F; NR11_REG = 0x96; NR12_REG = 0xB7; NR13_REG = 0xBB; NR14_REG = 0x85; 

Como puede ver, asignar 5 valores diferentes a las variables nos permite crear efectos de sonido muy diferentes. Puede pensar que para crear sonidos tiene que pasar por prueba y error: inserte valores aleatorios en los registros hasta obtener un sonido agradable. Pero eso sería aburrido y sin sentido. Por lo tanto, las herramientas modernas pueden hacernos la vida más fácil . Déjame presentarte el generador de muestras de sonido GB .


Primero configuramos parámetros convenientes para encontrar el sonido correcto (presione START para verificar el sonido actual)

Este es un programa para Game Boy, totalmente compatible con hardware real. Le permite cambiar los valores de los registros de sonido del hardware de una manera conveniente para el usuario. En lugar de establecer valores brutos NR10_REG, podemos especificar la frecuencia del sonido, el nivel de volumen, la duración de la señal de barrido, etc. Puede considerar esta herramienta similar a SFXR para Game Boy. Pero para exportar el sonido, en lugar de guardar el archivo WAV, el generador de muestras de sonido GB muestra los valores de registro de hardware correspondientes. Es decir, para reproducir el sonido en su juego, simplemente ingrese estos valores en el código fuente.


Luego, debe mantener presionado A + SELECT para mostrar los valores brutos correspondientes de los registros de hardware

Para trabajar en Sheep It Up! Utilicé el generador de GB Sound Sample en Game Boy Advance SP (una pantalla retroiluminada es más conveniente) . El programa ROM se lanzó en Everdrive GB . Pasé mucho tiempo configurando los parámetros directamente en la consola, y cuando finalmente encontré la combinación correcta, simplemente copié los valores de la pantalla GB al código fuente de la computadora.


Copie los valores de los registros de hardware en el código fuente

Chiptune music!


A pesar de las capacidades de sonido limitadas, hoy Game Boy se utiliza como instrumento musical. Muchos talentosos compositores de escenas de chiptune crean pistas enérgicas en Game Boy utilizando programas como LSDJ o Nanoloop . Por ejemplo, es posible que haya escuchado sobre el chip chip Chip Legend de la leyenda irlandesa Chipzel , que escribió la música para Super Hexagon , y sobre el mago francés Sidabitball , que remezcló muchos éxitos de la música pop de los 90 .


Chipzel y Sidabitball

Desafortunadamente para nosotros los desarrolladores de juegos, la herramienta LSDJ utilizada para componer estas increíbles canciones consume casi el 100% de los recursos de hardware de Game Boy. Por lo tanto, puedes escribir música maravillosa en él, pero no podrás iniciar el juego mientras se reproduce esta música en la consola. Afortunadamente, existen alternativas menos intensivas en recursos para crear y reproducir música en Game Boy.

1) reproductor de música propio


La solución más minimalista es crear su propio "reproductor de música".
No olvide que la única forma de reproducir sonidos en Game Boy es establecer los valores de los registros de hardware que controlan los cuatro canales de generación de sonido. Por lo tanto, es bastante simple crear su propio "reproductor de música", guardando las "notas" en una matriz. Cada "nota" es una cierta combinación de valores para cada uno de los registros de hardware. Si establece el ritmo con el que recorreremos esta matriz para tocar “notas”, entonces obtendremos una forma muy sencilla de reproducir música. ¡Eso es exactamente lo que hice en Sheep It Up! Aquí hay un breve video de juego con sonido y música para que puedas escuchar el resultado:


De hecho, mis "notas" solo se reproducen en el canal de sonido 2. Sí, los cuatro canales de sonido son comunes a los efectos de sonido y la música. Por lo tanto, si tocamos una nota en un canal, no se puede usar para reproducir simultáneamente un efecto de sonido . Y dado que cada canal es algo "especial", a veces es preferible usar algunos canales solo para música, mientras que otros se dejan para efectos de sonido. Por ejemplo, un sonido de "crujido" que se escucha cuando una oveja se pega a un Velcro volador se reproduce en el canal 4 (ruido). Como este es un sonido muy frecuente en mi juego, decidí no usar este canal para la música. Lo mismo se aplica al canal 1, que utilicé para todos los demás efectos de sonido. Como no soy un gran especialista en música, decidí no usar las ondas del canal 3 y, en cambio, trabajar con los tonos del canal 2.

2) GBT Player y Carillon Player


Muchos juegos caseros usan su propio reproductor de música. Sin embargo, esta no es la única solución. Hay una biblioteca llamada GBT Player que puede convertir módulos de música (en formato ".it" de Impulse Tracker) para reproducir en Game Boy. Por supuesto, hay muchas restricciones en el tamaño de las muestras, el número de canales y los efectos de nota. Sin embargo, la biblioteca le permite componer música real en un rastreador de música real, por ejemplo, OpenMPT , y luego reproducirla en Game Boy. Lo más importante es que la biblioteca consume solo el 7-8% de los recursos de CPU de Game Boy, dejando una tonelada de potencia informática para ejecutar el juego. Además, es muy fácil integrarlo en su código si decide escribir un juego en C usando GBDK o en ensamblador usando RGBDS. Una buena alternativa al GBT Player es el Carillon Player , sin embargo, deberá utilizar el Carillon Editor para componer música.


Geometrix es un juego casero del GBT Player AntonioND. Para la música se usa esta biblioteca.

Ponerse en forma: grabar un juego en cartuchos


Después de un largo trabajo en el código, los gráficos y el sonido, el juego finalmente está listo. Pero en este punto solo tenemos el archivo ROM. Por supuesto, puedo probar activamente en muchos modelos diferentes de Gameboy de mi colección (los tengo todos excepto el AGS-101) . Pero no sentí que el proyecto estuviera listo: en mi opinión, para ser considerado "completado", el juego debería tener su propio cartucho .

Como dije en la primera parte del artículo , ¡toda la ROM del juego Sheep It Up! Pesa solo 32K, como con juegos anteriores de Game Boy como Tetris y Alleyway . Pero, de hecho, la mayoría de los juegos para Game Boy son mucho más grandes, de 128KB a 512KB, y el juego más grande de Pokemon Blue and Red requiere un monstruoso 1024KB (1MB). En los años 90, cuanto más grande era el juego, más caros resultaban ser los cartuchos en producción: para almacenar juegos grandes, se necesitaban chips más caros. Pero hoy todos se mantienen casi iguales. Entonces, ¿por qué estoy limitado a un juego de 32 kilobytes?

La respuesta es que quería poder lanzar el juego en los cartuchos fabricados de hoy. Como puede suponer, Nintendo ha dejado de producir cartuchos para Game Boy (Game Pak-s) . Por lo tanto, para crear su propio cartucho hoy hay dos soluciones:

1) Modificación de cartuchos (Cartmodding)


La primera opción, llamada "cartmodding", es reciclar viejos juegos de Game Boy. Los juegos lanzados durante la era comercial de Game Boy se almacenaron en cartuchos no regrabables. Por lo tanto, para reemplazar el juego almacenado en ellos, debe abrirlos, quitar el chip de memoria y reemplazarlo con otro chip de memoria, en el que se carga la ROM de su juego. Esta solución te permite crear juegos de cualquier tamaño. Pero como coleccionista de juegos, no quería destruir los cartuchos de Game Boy existentes para la producción de mi juego.


Un ejemplo de modding de tarjeta. Un nuevo chip de memoria con un juego casero se suelda en un cartucho viejo

2) propio cartucho


La segunda opción es crear un nuevo cartucho desde cero. Como no soy un experto en electrónica, comencé a buscar en Internet personas que pudieran ensamblar cartuchos de Game Boy. Después de varios intentos fallidos, tuve la suerte de encontrar a Catskull. Este es un increíble mago de la electrónica, crea y vende muchos equipos relacionados con Game Boy en su tienda de electrónica Catskull . Entre otras cosas, desarrolló un dispositivo para conectar Gameboy a la interfaz MIDI, que permite a los músicos usar Game Boy con instrumentos y sintetizadores reales. También desarrolló su cartucho Game Boy. Todo fue rehecho para este cartucho: la placa de circuito impreso, chips, carcasas, incluso pegatinas y piezas nuevas, nada fue tomado de juegos anteriores. Fue la solución perfecta para mí.


¡Catskull diseñó el PCB original que utilicé para Sheep It Up!

Pero luego todo mejoró aún más: después de una breve correspondencia, Catskull me dijo que durante mucho tiempo quería crear una empresa para publicar juegos caseros, ¡y que mi juego sería una gran oportunidad para esto! Por lo tanto, unimos fuerzas: hago software, él se dedica al hardware . La única limitación en esta solución es que solo se pueden almacenar 32 KB en un cartucho Catskull Game Boy . Por qué

Inicialmente, se suponía que la consola Game Boy tenía acceso a solo 32 KB de datos ROM. Para crear juegos de más de 32 KB, debe navegar por todos los datos en el cartucho, mientras obtiene acceso a solo una subsección de todos los datos de ROM. Este método se llama cambio de banco : todos los datos de ROM se dividen en bancos de 16 KB cada uno, y podemos cambiar entre ellos en cualquier momento (con ciertas restricciones). Sin embargo, para realizar el cambio de banco, el cartucho debe tener un chip adicional : "Controlador de banco de memoria" (MBC). Hay varios chips (MBC1, MBC5, etc.) que aumentan el tamaño de la ROM, lo que le permite usar RAM para guardar juegos con batería, etc. Desafortunadamente, en este momento no existe una solución preparada para crear nuevos cartuchos con un chip de este tipo desde cero.

Por lo tanto, las personas que crean juegos caseros de más de 32K usualmente usan modding de tarjetas para usar el chip MBC del antiguo cartucho de Game Boy, que "reciclan". Otra solución es comprar copias falsas de juegos de Game Boy reales, seguido de un flasheo. Hace muchos años, los fabricantes chinos aprendieron a "clonar" un chip MBC para crear copias pirateadas de juegos grandes como Pokemon . Y dado que estos cartuchos pirateados usan chips EEPROM en lugar de los chips ROM de los juegos antiguos, por lo general se pueden "actualizar" para reemplazar el juego almacenado en el cartucho. Para hacer esto, use una grabadora de cartucho como la Joey de BennVenn . Varios juegos caseros de más de 32K han utilizado este enfoque.


Un cartucho pirata hecho en China. Puedes actualizarlo escribiendo tu juego, pero algunos otros no pueden actualizarse (más sobre esto aquí )

Para hacer Sheep It Up! Quería crear cartuchos completamente nuevos para evitar destruir los juegos originales de Game Boy. Tuve mucha suerte de unir fuerzas con Catskull, que produce sus propios cartuchos, a pesar de que tuve que limitarme a 32 KB de memoria compartida.

Hornear cartuchos!


Entonces, ¿cómo haces tus propios cartuchos? Le pedí a Catskull que tomara fotos de los pasos individuales del ensamblaje del cartucho. Como puede ver, cada cartucho se ensambla manualmente:

1) La placa de circuito se inserta en el hardware.


2) Se aplica una plantilla de acero inoxidable a la placa de circuito impreso para aplicar pasta de soldadura. Esta pasta le permitirá soldar el chip de memoria a la placa.


3) Normalmente hago lotes de 18-20 cartuchos a la vez. La pasta de soldadura ya se ha aplicado a este lote.


4) Sé cómo seleccionar manualmente condensadores y resistencias, y colocarlos en las placas. Luego puse chips flash en cada tablero.



5) Las tablas se colocan en la rejilla del horno de reflujo. Literalmente "horneamos" cada placa para soldar un chip en ella. Ahora puedo tomar cada una de las tablas y escribir la ROM del juego en el chip de memoria.



6) Luego, el tablero se inserta en la carcasa del cartucho del juego con una hermosa pegatina hecha en una impresora profesional.



7) ¡Después de una revisión exhaustiva del cartucho en el equipo real, el juego está listo para ser enviado al jugador que lo ordenó!

Cumplimiento de un sueño de infancia.


Después de toda esta información técnica, me gustaría compartir un sentimiento más personal sobre lo que este proyecto significa para mí. En aras de comprender el contexto, le aconsejo que vea el video más inspirador de mi reloj “Realmente logrando sus sueños de infancia” de Randy Posh. Le recomiendo que lo vea. Esta es una gran lección sobre cómo percibir la vida con un sentido de milagro, incluso en los días más difíciles. Para vivir una vida plena, Randy Posh sugiere que tratemos de cumplir los sueños de los niños y ayudar a otros a cumplirlos.


En la parte superior de mi lista personal de sueños de la infancia estaba crear un videojuego para Nintendo Game Boy. Game Boy fue mi primera consola de videojuegos, y siempre ocupará un lugar importante en mi corazón. Durante muchos años me dije que algún día crearía un juego para ella. Pero siempre tuve "asuntos más importantes", por ejemplo, trabajar en un proyecto que me trajo dinero. Finalmente, un día me encontré con un juego de BitBitJam dedicado a crear juegos para hierro retro. Entonces recordé las palabras del sabio Randy Posh: ¿qué pasa si al menos una vez trato de completar un proyecto sin esperar nada más que el cumplimiento de un sueño de la infancia?

Por lo tanto, aproximadamente un mes antes del comienzo del atasco, comencé a estudiar varias herramientas para crear juegos para Game Boy. Luego, ya durante el atasco, pasé una semana entera (tuve unas vacaciones) para crear un prototipo de Sheep It Up! Después del atasco, continué trabajando en el juego, puliéndolo, mejorando, optimizando y volviendo a dibujar ... hasta que estuve satisfecho con el resultado. Mientras tanto, buscaba formas de crear cartuchos reales para el juego. Tuve mucha suerte de conocer a Catskull, que se dedicaba a su fabricación, y secretamente soñaba con crear mi propia empresa para publicar juegos caseros. Al final, creé y lancé un juego real para Game Boy, vendido en cartuchos físicos. Pero, ¿por qué son tan importantes los cartuchos? ¿No podría dejar de distribuir la versión electrónica del juego en línea, como hacen muchos otros desarrolladores de juegos caseros?

No lo olvides: mi objetivo real no era el lanzamiento del juego, sino el cumplimiento de un sueño de la infancia. Y en mi sueño, podía jugar con un cartucho que hice en un Game Boy real , como fue el caso con todos los otros juegos que compré cuando era niño. Aquí hay un video de cómo pruebo el juego en un Game Boy real, comprado por mis padres para Navidad, cuando tenía nueve años:


Como puede ver, la consola de mis hijos ha visto mucho: muchas columnas de píxeles ya no se muestran en la pantalla, los botones están desgastados y la pantalla tiene un gran rasguño vertical. Pero ella todavía trabaja. No puedo expresar con palabras los sentimientos que surgieron durante el juego en la consola en el cartucho creado por mí. Todo lo que puedo decir es que en este mismo momento de las nueve, estaba muy orgulloso del adulto en el que se había convertido. Y este sentimiento solo fue el mejor resultado que pude obtener de tal proyecto.


¡La consola aún funciona después de 25 años, y pudo lanzar un juego lanzado en 2017!

Comparto un sueño: reseñas de jugadores


Entonces, crear un juego principalmente para tu propia alegría es lo mejor. Pero la alegría puede ser aún mayor si otras personas pueden jugarla . Al final del proyecto, ¡conocía a Sheep It Up! resultó ser un juego simple, por lo que las expectativas no eran muy altas. ¡Pero los comentarios recibidos de los jugadores todavía me sorprendieron!

A pesar de (o gracias a) la simplicidad del juego, a los jugadores realmente les gustó . El juego es lo suficientemente simple como para entenderlo en segundos, pero se lleva rápidamente: "uno más, el último juego en romper tu récord". Por cierto, ¡ mi récord actual es de 147 puntos ! Pero lo que más me gusta de la comunidad retrogamer es que el amor es el factor clave para la mayoría de los jugadores. Y esto puede llevar a sorpresas curiosas.

Para empezar, algunas personas se quejaron de que el juego no estaba a la venta en una versión en caja. Como colecciono juegos retro simplemente en cartuchos (para ahorrar dinero y espacio en los estantes) , al principio no pensé en crear una versión en caja. Pero ahora me doy cuenta de que sería bueno ofrecer esa opción a las personas que la necesitan. Pero uno de los fanáticos del juego, Cyph, fue aún más lejos y creó su propia caja de juego al remodelar la caja de joyas del cartucho Nintendo DS. No sé tú, pero el resultado me parece sorprendente. Si está interesado en esto, también puede hacer su propia caja. Todo lo que necesita es tomar el joyero del cartucho Nintendo DS, cortar dos pequeñas piezas de plástico en el interior e insertar esta hermosa cubierta creada por Cyph .


Hermosa caja casera para Sheep It Up! ¡creado por Cyph desde la caja de cartuchos de Nintendo DS!

Otro detalle divertido sobre el juego es que se demostró en una de las exposiciones de videojuegos más grandes del mundo : Paris Game Week (300 mil visitantes, más que en el E3 y Tokyo Game Show) . ¿Cómo llegó un juego amateur lanzado para Game Boy al mismo programa con los últimos juegos AAA de la industria? Por esta oportunidad, agradezco a OrdiRetro . Esta es una asociación francesa dedicada a la historia de los videojuegos, en particular, los nuevos juegos lanzados para consolas y computadoras antiguas. En esta exposición, tuvieron un stand con varios juegos. Gracias a mi amigo Julian Alvarez, se enteraron del juego y se ofrecieron a mostrarme en la exposición.


Sheep It Up!, Lanzado en Super Game Boy durante la Paris Game Week 2017, ¡gracias, OrdiRetro !

Pero tal oportunidad puede surgir sin la presencia de lazos. Inmediatamente después del lanzamiento, el juego fue comprado por dos fanáticos de Game Boy de Alemania que participaron en el sitio web DMGpage . Pero no solo compraron el juego, sino que también lo mostraron en la conferencia de retrogamers Retro-Börse en Hesse. Entonces, gracias a dos fanáticos de Game Boy, los jugadores lograron jugar mi juego en el Super Game Boy y en la conferencia alemana, ¡también les estoy muy agradecido!


Sheep It Up! exhibido en Super Game Boy durante Retro-Börse en Hesse - ¡gracias, DMGpage !

Conclusión


Los juegos caseros para consolas retro no están hechos para ganar dinero o popularidad.Por lo general, se hacen muy pocas copias. Puedes esperar una audiencia de varias docenas de personas, en el mejor de los casos, un par de cientos si tu juego es realmente bueno. Pero puedes estar seguro de que estas personas tienen un sincero interés en tu juego. Están impulsados ​​por el mismo amor por el hierro retro que tú. A veces su amor puede ser incluso más fuerte que el tuyo. Y si te gustaron estas dos partes del artículo sobre cómo crear un juego para Game Boy en estos días, ¿por qué no intentas hacerlo tú mismo?

Como se indica en la primera parte del artículo., Existen muchas herramientas fáciles de usar para crear juegos para la consola portátil más popular de la historia. Sí, no te ayudará a hacerte rico, pero como resultado obtendrás mucho placer. ¡O tal vez también puedas complacer a otras personas que juegan tu juego!


Entonces, espero que te haya gustado este post mortem y que te anime a desarrollar un juego retro. Además, si tienes un Game Boy por ahí, no olvides que puedes comprar un maravilloso cartucho Sheep It Up por solo $ 15 en los juegos de Catskull. ¡Cada cartucho se ensambla a mano!

Source: https://habr.com/ru/post/es418193/


All Articles