Mis desaguisados con el experimento de Pico-8

Hace un mes aproximadamente mientras hacia algunos trabajos en el campo tuve la necesidad de jugar unas partidas a algunos juegos de Pico-8 entre descanso y descanso...

Pico-8 para quien no lo conozca es un software relativamente reciente que imita ser una consola, para poder jugar a los juegos (que hace la misma comunidad) tan solo tienes que acceder a su pagina web y seleccionar el cartucho que quieras jugar, todo ello gratis. Pero para poder hacer juegos tienes que comprar su SDK que cuesta unos $ 14,99 (dolares). Una vez lo compras te descargas unos binarios para tu sistema operativo y puedes hacer juegos y crear el cartucho el cual puedes compartir y subirlo a su web con tu perfil, para que las demás personas puedan jugarlo -e incluso si tienen el SDK pueden ver como esta hecho por dentro, si, puedes ver como esta hecho cualquier juego abriéndolo con el SDK-. Gran parte del atractivo de la comunidad es aprender a hacer juegos.

Pico-8 imita ser una "consola retro" (parecida a las antiguas consolas de 8 bits), lo cual tiene serias limitaciones (atractivas o no depende de cada cual) para hacer un juego:

Pero para mi, lo que más me llamo la atención de Pico-8 fueron sus gráficos ultrapixelados y su hermosa paleta de colores. Además del sonido chiptune, pero especialmente los gráficos. Y también la gran comunidad que hay detrás haciendo experimentos muy chulos, cada vez con más en auge sobretodo en redes sociales como twitter.

Origen de la idea.

Tras esta breve descripción prosigo, como obviamente en ese momento que se me apeteció echarme una partida, no tenía el PC a mano, pues tuve la errónea suposición de que habría ya una app para jugar en Android.

Y... no, desafortunadamente no hay nada en el Play Store para poder jugar en el móvil. Los juegos se juegan a través de la web, pero tampoco puedes usar el móvil para eso porque necesitas un teclado para jugar, y el teclado de Android no se despliega mientras ves una web, y tampoco podrías porque necesitas los cursores para jugar, en cualquier caso seria muy incomodo todo.

Prototipo

Ahí fue cuando lo pensé, necesitaba hacerme alguna app casera para poder jugar en el móvil. Así que mi idea/prototipo más rápido fue el siguiente. "¿Que tal si me conecto a la pagina web, muestro un webview embebido con solo el marco del juego y agrego botones táctiles que envíen la señal al webview como si fuese un teclado de verdad?" Tal que así:

Tras pensar la idea, ese misma noche me puse manos a la obra y dos días mas tarde la tenia lista, incluso decidí publicarla en el Play Store, para que mas gente pudiera aprovecharla.

El funcionamiento era muy sencillo, cargaba la lista de juegos más recientes que se publican en la web, y al elegir uno te mostraba esta vista para que pudieras jugarlo, obviamente al ser un webview iba horriblemente lento y sin sonido, pero estaba muy satisfecho con el resultado. =D

Repercusión.

Nada más subir la app al store y pasársela a algunos amigos, publique un tweet que no tenia ni enlace ni nada:

No pasaban ni 5 minutos que no recibiera un RT o un Fav, o gente preguntándome cosas.
Pues se ha convertido en mi tweet mas famoso con 56 RT y 93 favs.

Fue descargada un total de 236 veces y aún permanece instalada en 55 dispositivos. Fue valorada 5 veces y tenia como valoración media 4'8 estrellas de 5.

Y todo esto en menos de 24 horas... ahora explicaré porque.

Problemas de copyright, o como actuar sin pensar.

Pensando nada más que en el resultado final y olvidándome que estamos en un mundo de leyes, en menos de 24 horas recibí un correo de Google alertándome que la aplicación había sido suspendida (retirada) del Play Store debido a problemas de copyright. A pesar de que no especifica nada más, ya que se trata de un mensaje automático debido a varias denuncias por parte de usuario, no hay que ser muy listo para saber donde estriba el error. En la primera versión use el icono oficial y el nombre, únicamente para que fuese reconocible, ya que la app estaba distribuida sin ánimo de lucro (no tenia ni anuncios ni pagos inapp de ningún tipo).

Una vez en este punto de suspensión de app hay 3 vías posibles:

  • Abrir una incidencia a Play Store por si se trata de una equivocación por parte de los usuarios que te han denunciado y te la vuelvan a restaurar en linea.
  • Abrir una incidencia adjuntando el permiso de los propietarios del Copyright y que te la vuelvan a restaurar en linea otra vez.
  • O como alternativa a toda estas, quitar los problemas de copyright que tengas en la app y volver a subirla como una app nueva (nombre de paquete nuevo), por ejemplo, cambiar el icono.

En mi caso no era tan simple ya que aunque hubiese cambiado el nombre y el icono, cosa que ya hice por advertencia de algunos tweets, días después me entere por un amigo desarrollador con más experiencia en estos temas, que en Google se considera también infringir el copyright si te conectas a una web a través de un webview a una pagina que no sea tuya, algo por otra parte totalmente lógico...

Un nuevo amanecer, un nuevo anochecer.

Lejos de quedarme de brazos cruzados decidí investigar alguna vía alternativa para poder jugar a Pico-8 en Android. Me encontré con el proyecto Picolove en github de @impbox en twitter, una reimplementación de Pico-8 en Lua para Love2D. Básicamente es un "emulador" de Pico8. Me puse en contacto con el propietario, le pregunte si podría portarlo a móviles y me dijo que no había ningún problema y me puse manos a la obra.

El código en ese momento se permitía ejecutar en móviles Android, pero había 3 pequeños problemas:

  • La paleta de colores se mostraba erróneamente en el móvil, es decir, que no coincidía el color que indicabas en código con el que verdaderamente mostraba.
  • No tenia controles táctiles, esto es un problema si quieres jugar XD.
  • No podías seleccionar ni cambiar cartucho, la app solo podía ejecutar el mismo juego siempre.

Al final logré solucionar todos estos problemillas, en gran parte gracias a la ayuda de gamax92 un contribuidor que esta mejorando mucho el emulador y que me ayudó a entender partes del código que no entendía.
La paleta de colores era debido a que el GLSL ES de Android (Opengl para moviles) gestiona los decimales de forma diferente en el shader (dos días me pego con esto dibujando pixeles por pantalla para descifrar el error), los controles táctiles fueron fáciles de poner y el sistema de cambiar cartucho fue un hack que ideé y tampoco fue difícil de hacer.
Todas las mejoras que iba solucionando se las envié a gamax92 y el las subía a el repositorio por mi.

Al fin, otra app nueva que hice completamente desde cero, cuyo tiempo total de desarrollo fueron 70 horas. Esta vez no se conecta a la web de Pico-8 para bajarse los juegos, simplemente la app crea una carpeta en tu movil, y ahí colocas los cartuchos de Pico-8 que quieras jugar. Al abrir la app lee los cartuchos que tienes y tú seleccionas el que quieres jugar:

La app funciona perfectamente, el emulador va a full speed y con música, etc.
Pero no todo es tan bonito, solo es funcional con algunos juegos!! :O
La gran mayoría al cargar el juego da error:

Errores como este son los que aperecen... :/

Al emulador Picolove le queda muchísimo por mejorar, pero no es cosa de mi app, sino al código del Picolove en si. Otra vez por las malditas prisas, solo testé mi app con dos juegos diferentes, curiosamente en esos dos juegos no daba ni un fallo el emulador... me di cuenta al terminar y probar con otros juegos...

Where do I go from here?

Así que tras todo esto, no tiene mucho sentido publicar una app que solo funciona con unos cuantos cartuchos y da error con la gran mayoría (la gente se cebaría con las malas criticas).
Y aunque he detectado un par de errores en el código para mejorar el emulador, es algo que no puedo dedicar mas tiempo ya que no se trata de un proyecto con fines lucrativos, esto es algo que requiere muuuucha dedicación y con mi nivel, aún más.
Necesito ese tiempo para poder dedicárselo a mis otros proyectos, proyectos que si serán comerciales y espero que me den algo de comer y estabilidad en un futuro.
Puede que vuelva a dedicar más tiempo a todo esto en un futuro, pero de momento, volveré a mis otras creaciones, y el resto del tiempo a descansar. Hasta la vista!!

josemwarrior

Read more posts by this author.

Subscribe to @josemwarrior

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!