Recientemente saltaba la noticia. RetroVirtual machine incluirá un engine para portar a dispositivos Android, juegos y programas de Amstrad CPC.
Francisco Gallego, el profe, nos ha facilitado el siguiente documento que a buen seguro, disipará las dudas y expectativas que ha generado el anuncio de RVMEngine.
Hemos desarrollado una versión de RVM2 para CPCtelera llamada RVMengine que sólo incluye el emulador en un formato utilizable desde programación. Con esa versión, hemos adaptado CPCtelera para que genere ejecutables nativos de Android.
Esta adaptación está incluida en los proyectos de CPCtelera. El desarrollador crea su proyecto y utiliza la orden «make» cada vez que quiere compilar y generar los clásicos .dsk, .cdt y .sna a partir de su código y sus assets. Ahora, además, cuando el desarrollador tiene una versión de su juego que quiera probar en Android tiene la orden «make apk» que compila, genera y firma digitalmente el fichero .apk que incluye rvmengine y su juego. Este .apk se puede instalar directamente en un móvil Android o subir a Google Play Store o cualquier otro store de Android. De esta forma, los desarrolladores crean sus juegos para Amstrad con CPCtelera exactamente igual que siempre, y los exportan como juegos independientes a Android sin ningún esfuerzo adicional.
Proceso de desarrollo.
Para este desarrollo hemos tenido que realizar 4 partes clave:
1. La versión Android de RVMengine, optimizada y nativa con soporte para arquitecturas ARM y X86 de los móviles.
2. Una investigación sobre el funcionamiento de los sistemas de build de Android Studio para entender los entresijos y detalles.
3. La creación de una aplicación base Android que incluya RVMengine y permita su fácil adaptación para distintos juegos desarrollados para Amstrad CPC.
4. La adaptación de CPCtelera para que los proyectos generados produzcan ficheros .apk de Android listos para usar, siguiendo la filosofía de CPCtelera.
Quienes han trabajado en éste proyecto.
– Juan Carlos González Amestoy, creador de RVM2 y artista que ha producido RVMengine nativo y muy bien optimizado para plataformas Android.
– José Luís Luri, alumno del Grado en Ingeniería Informática de la Universidad de Alicante, muy interesado en emuladores y cuyo trabajo de fin de grado está siendo este proyecto. Ha realizado la aplicación base para Android, la investigación del sistema de build de Android Studio y las adaptaciones de RVMengine para su flexibilidad y funcionamiento final en la plataforma.
– Francisco Gallego, un servidor que, como es de esperar, he realizado la adaptación de CPCtelera, he dirigido a José Luís en su trabajo de fin de grado y simplemente he coordinado al equipo. El grueso de horas de desarrollo y trabajo importante lo han hecho ellos dos, como queda claro en el reparto de tareas.
Funcionalidades del proyecto resultante y funcionalidades:
Al usuario final (desarrollador de videojuegos y/o apps con CPCtelera), este proyecto le ofrece lo siguiente:
– Capacidad para exportar sus juegos de Amstrad a Android sin ningún esfuerzo añadido, y sin necesidad de adaptar ni una línea de programación.
– Una gestión automatizada del proceso de exportación a Android que incluye: la gestión de su clave privada para la firma de .apks (imprescidible para que funcione en Android) y la automatización del proceso de firmado y gestión de IDs de aplicación de Android. Todo esto lo hace CPCtelera de manera simple y transparente.
– Facilidad para cambiar iconos, apariencia y assets de la aplicación final resultante, editando imágenes directamente con cualquier editor convencional.
– Facilidad para adaptar los controles virtuales en pantalla a las necesidades del juego. El desarrollador sólo necesita indicar en un fichero qué tecla de Amstrad corresponde a cada control del pad virtual.
– Automatización completa del proceso de desarrollo: creación del proyecto, gestión y generación.
– Posibilidad de exportar a Android para todos los juegos desarrollados con CPCtelera hasta la fecha. Sólo hay que migrar los ficheros fuente a un proyecto nuevo de CPCtelera y compilar.
– Emulación al máximo nivel actual gracias a RVMengine integrado. Ningún otro emulador trabaja a niveles inferiores al de instrucción del Z80.
– Soporte a futuro para exportación en condiciones similares a otras plataformas (iOS, Windows, Mac y Linux)
Y lo más importante, todas estas características se ofrecen sin requerir la instalación de software Adicional a CPCtelera. La única necesidad añadida en la versión 1.5. para poder exportar a Android es disponer de la máquina virtual de Java (JRE) en su vesión 1.8 o posterior. No es necesario ni el kit de desarrollo de Android ni el de Java: tan sólo el intérprete de la máquina virtual. Este intérprete cuesta muy poco de instalar en cualquier sistema operativo actual. En particular, en Linux que es el sistema nativo de desarrollo de CPCtelera, se tarda segundos (literalmente) en instalar JRE, si no viene ya instalado de serie.
Licencia de uso final.
Aun no está clara la forma definitiva de la licencia de uso que tendrán los desarrolladores de CPCtelera. Sin embargo, si tenemos claros los puntos que queremos que tenga:
– Los usos no comerciales estarán permitidos, alentados y aplaudidos :). Cualquiera que quiera poner sus juegos en Android sin cobrar por ello tiene nuestra bendición completa.
– También permitiremos usos comerciales, pero estamos estudiando todavía cuál será la forma final que tendrá la licencia (o licencias) potenciales. Cuando tengamos claras las condiciones finales en que se ofrecerá, lo anunciaremos. Mientras tanto, si alguien quiere hacer uso comercial, que se ponga en contacto con nosotros.
– Aunque es ilegal por sí solo, añadiremos un disclaimer que diga claramente que estamos en contra del uso de rvmengine para publicar juegos ya existentes sin disponer de los derechos del juego. Además, es muy conveniente advertir de que si alguien pone juegos de los que no tiene los derechos y cobra por ello le puede salir muy caro: es una infracción del artículo 270 del código penal, y eso significa que puede terminar en la cárcel.
Participación decisiva de José Luís Luri y Juan Carlos González Amestoy.
Muy importante la participación de José Luís y su investigación en las entrañas de Android. Comenzó inicialmente intentando compilar el emulador Arnold para Android, pues era el único del que disponíamos de codigo fuente en un estado aceptable. Poco después empezamos a colaborar con Juan Carlos, justo en cuanto conocimos que estaba desarrollando su core de Amstrad, mucho antes de que se materializase en RVM2.
Una vez tuvimos la colaboración de Juan Carlos, José Luís se centró en la parte de Android. El mayor problema que teníamos era que todos los desarrollos en Android pasaban por Android Studio, su SDK para Java y su NDK para aplicaciones nativas. Estos sistemas son extremadamente grandes y pesados, requieren horas de instalacion, ocupan gigas de disco y requieren conocimiento sobre su manejo.
Desde el comienzo, quedó claro que pedir a un usuario de CPCtelera que instalase Android Studio era un camino sin salida. Algo así no sólo haría este proyecto inviable, sino que podría incluso destruir la propia CPCtelera, por el coste tremendo que supone. Así pues, era indispensable conseguir una forma de generar la aplicación de Android sin depender del sistema de Android Studio, SDK o NDK.
En los primeros meses de trabajo e investigación llegamos a creer en muchos momentos que esto no sería posible. Estudiamos algunas ideas y alternativas, pero siempre que conseguíamos algún avance salían nuevos problemas que siempre nos llevaban a seguir necesitando SDK o NDK. Pero todo el trabajo de este último año y el aprendizaje que ha supuesto ha terminado cristalizando en el último mes y medio.
Hace mes y medio, teníamos algún APK desarrollado a mano con ajustes y Android Studio, y nos decidimos a dar un empujón para intentar tener el sistema funcionando en Amstrad Eterno. José Luís Luri se puso a profundizar en las herramientas mínimas que nos hacían falta para conseguir generar los APK y, poco a poco, con ayudas puntuales de Juan Carlos y mías, como equipo que somos, todo empezó a cuadrar. Finalmente, a falta de menos de 1 semana para el evento tenemos todo un proceso de generación propio, basado únicamente en 3 herramientas de línea de comandos que ocupan unos pocos Kilobytes y el intérprete de Java. Sólo con eso, amen del conocimiento que hemos adquirido en todo el desarrollo de este proyecto, hemos producido un sistema que genera el APK definitivo con todo integrado y firmado en 20 o 30 segundos en un PC de hace 10 años.
La comunidad de Amstrad y el mundo del retro ya le debían mucho a los desarrollos de Juan Carlos González Amestoy, por su magíficio emulador. Ahora le deben aún más a Juan Carlos por RVMEngine, y también están en deuda con este gran trabajo de José Luís Luri, por abrirnos las puertas a exportar nuestras nuevas creaciones para Amstrad al mundo entero, expandiendo las fronteras de nuestra máquina, garantizando su legado y aportando un potencial futuro de características impredecibles. ¿Puede aún Amstrad crecer como sistema a sus 35 años de edad?
Un poco de historia y como surgió el proyecto.
El proyecto nace tras la CPCRetroDev de 2017. La idea se venía gestando parcialmente desde el año anterior, pero fueron las conversaciones posteriores a la victoria de Baba’s Palace las que dieron forma final a la idea del exportador de juegos de Amstrad para Android.
En conversaciones posteriores al concurso comentábamos mucho la calidad que estaban alcanzando los juegos de Amstrad CPC. Realmente, los mejores juegos del concurso estaban tan bien hechos, que podíamos dárselos a jugar a personas ajenas al mundo del retro y esperar que los disfrutasen como cualquier otro juego de plataformas modernas. Esta idea, aparentemente muy simple, fue ganando mucha claridad en poco tiempo. ¿Que pasaría si pudiéramos embeber estos juegos de forma que el usuario sólo tuviera que iniciarlos y ponerse a jugar?
Se trataba pues, de eliminar la barrera de entrada que supone tener que conocer la máquina (el Amstrad), tener que instalar un emulador, saber cómo cargar el juego en el emulador y, finalmente, jugar. Todas estas tareas son triviales para quienes conocemos la máquina y estamos en el mundillo del retro. Sin embargo, basta con poner a prueba a cualquier persona ajena para comprobar que son una barrera prácticamente insorteable.
Así pues, tras el CPCRetroDev 2017 lo vimos claro. Hacía falta que los juegos pudieran jugarse directamente, sin esta barrera de entrada. Todo esto nos dio la forma final de la idea: empaquetar juego y emulador todo en uno, en una misma aplicación, haciendo que el juego se lance junto con el emulador directamente.
Después de esto vino todo el desarrollo resumido anteriormente, con las participaciones de Juan Carlos González Amestoy y José Luís Luri. Este desarrollo nos ha llevado hasta hoy, donde tenemos ya la primera versión completamente operativa del producto.
Es una idea aparentemente sencilla, incluso teóricamente insignificante, pero con una potencia astronómica. Las primeras pruebas con personas ajenas al retro y desarrolladores lo dejan claro. La eliminación de la barrera de entrada centra al usuario en el juego y hace que no importen ni la emulación, ni la máquina, ni el conocimiento, ni nada en absoluto. Si el juego es un buen juego, los usuarios lo juegan y no les importa el resto. Es más, en las primeras pruebas preliminares muchos usuarios no supieron que se trataba de juegos emulados hasta que se lo explicamos.
La potencia de la idea está clara. Al poder lanzar un juego de Amstrad en un móvil sin diferencias con un juego de móvil, el público potencial al que el juego puede llegar aumenta en muchos órdenes de magnitud. Los juegos desarrollados salen del mundo del retro para enfrentarse directamente al mundo de los videojuegos de la actualidad. Con este exportador, un desarrollo para Amstrad tiene la posibilidad de llegar a millones de usuarios literalmente. Al fin y al cabo, flappy bird lo hizo con mucha menos potencia que lo que tenemos entre manos.
Sólo nos queda una pregunta por hacernos, ¿Quién hará el primer juego de Amstrad de la era moderna que supere el millon de usuarios? Nosotros tenemos claro que no es una cuestión de si esto pasará o no, sino de cuánto tardará en pasar. Las bases están ya sobre la mesa.
Fantástico, maravilloso, pero: Hay disponibilidad de Alphas y betas públicas?
Todavía no hay licencia de uso del invento, por lo que no se permite hacer usos públicos del mismo. Ni siquiera nosotros hemos publicado nada que contenga RVMEngine todavía.
Hay una rama en desarrollo en CPCtelera donde los developers ya pueden hacer pruebas. Lo que hay es lo mismo que hemos enseñado y es una versión alpha. Funciona todo lo principal, como puede verse, pero está sin preparar para el usuario final.
Esperamos liberar la primera beta a finales de mes (abril). Si todo va bien, la beta permitirá los usos no comerciales, por lo que todo el mundo podrá ya compilar y exportar sus producciones a Android y ponerlas en Google Play si quiere.
Por si todo éste artículo de puño y letra de Fran os ha parecido poco, en el canal de Juanje, teneís una completa entrevista con los tres autores de éste engine, incluyendo ejemplos prácticos de funcionamiento.
Entrevista completa en éste video:
Menuda currada se han pegado… Es una genial noticia, a ver si la cosa prospera y vemos muchos juegos de cpc en todas las plataformas.