Juegos Linux en ODROID: Box86 - Parte 2

Hace aproximadamente un año, escribí sobre box86, un emulador i386 para ARM desarrollado por @ptitSeb, quien también es responsable del asombroso empaquetador gl4es para OpenGL → OpenGL ES. Aunque el aspecto original de hace un año ya era impresionante, quisiera volver a verlo y señalar lo que ha cambiado desde entonces y lo que se puede hacer ahora con él.

Requisitos

Actualmente aun lo estoy probando en mi vieja imagen ODROID GameStation Turbo basada en Debian Jessie, con box86-odroid, libgl-odroid y monolibs-odroid instalados. Cada uno de ellos se utiliza de una forma diferente para mejorar la experiencia general y proporcionar los controladores necesarios para ejecutar los juegos. Todo lo anterior se instalará a la vez, si instalas box86-odroid.

Antecedentes

Algunas personas pueden estar familiarizadas con un software llamado ExaGear. Era un emulador comercial x86 (i386) para dispositivos ARM y ARM64, que te permitía ejecutar el software i386. Aunque el rendimiento en general era bastante bueno, carecía de soporte 3D, si tu plataforma no contaba con controladores GPU x86, que normalmente no es el caso, excepto la RPi que puede usar controladores MESA, y para esto puedes ejecutar OpenGL en i386 de forma limitada. Además, la mayoría de los juegos x86 requieren OpenGL, que no es compatible con gran parte de los SoCs ARM. Por lo tanto, el soporte para juegos x86 estaba limitado a juegos y aplicaciones 2D que no requerían ninguna aceleración de hardware o herramientas de línea de comandos.

Con box86, @ptitSeb tomó un enfoque diferente. No solo escribió una emulación de CPU para x86, sino que también implementó la posibilidad de redirigir llamadas del entorno x86 al entorno host ARM, utilizando librerías ARM nativas en lugar de usar librerías x86 emuladas. Primero lo implementó con soporte OpenGL, que en combinación con gl4es nos permitió ejecutar aplicaciones y juegos que requieren aceleración de hardware. También permite reenviar muchas llamadas del sistema desde aplicaciones directamente al sistema host en lugar de intentar emular estas llamadas en un entorno x86 emulado, que es mucho más rápido que una simple emulación.

Cambios en conjunto

@ptitSeb trabaja constantemente en box86 para mejorar la compatibilidad y el rendimiento, pero también trabaja duro en gl4es (libgl-odroid) para soportar este proyecto. La combinación de estos dos ha mejorado mucho en los últimos meses, lo que nos permite ejecutar más aplicaciones y juegos que solo están disponibles en x86 en plataformas ARM. Uno de los cambios más importantes es el trabajo que realiza @ptitSeb en un recompilador dinámico x86 → ARM. Esto significa que algunas de las llamadas x86 se convierten directamente en ARMcode "sobre la marcha" sin emulación, en el momento en que se solicitan. Esta misma técnica se utiliza en muchos otros emuladores para acelerar el rendimiento general.

Por ejemplo, en el pasado, cuando ejecutabas el emulador PSX en una placa ARM64, que se compiló para ARM64, no podía utilizar el recompilador dinámico (por ejemplo, C2 o N2), e incluso si la placa era más potente que otras placas, los juegos eran muy lentos y estaban lejos de ejecutarse a maxima velocidad, mientras que los ARMboards mucho más lentos (por ejemplo, el ODROID C1 o U3) eran perfectamente capaces de ejecutar estos juegos a toda velocidad con un recompilador ARMdynamic. Algunas aplicaciones se ejecutan entre 2 y 10 veces más rápido con el recompilador dinámico que con la propia emulación. Lo mismo se aplica para box86, los juegos que antes eran demasiado lentos para jugar ahora se ejecutan mucho más rápido, abriendo muchos más juegos que pueden ejecutarse en ODROID. El recompilador dinámico acelera bastante los tiempos de carga, los juegos se cargan mucho más rápido que antes, en algunos juegos tenías que esperar 5-15 minutos para cargar los datos del juego, ahora se cargan en solo unos segundos.

Recapitulación de algunos juegos antiguos

Neverwinter Nights

Aunque el juego ya funcionaba bastante bien la última vez que lo revisé, la última mejora hace que el juego tenga una experiencia mucho más fluida. El rendimiento en general ha aumentado bastante, y ahora puedes ajustar la calidad de los gráficos al máximo. El juego se ejecuta casi como un juego nativo con solo un pequeño tartamudeo aquí y allá, básicamente lo que esperarías en un PC más antiguo. Recomiendo este juego en ODROID-XU4.

God Will Be Watching

No hay mucho que decir: el juego funcionaba bien, aunque no a toda velocidad, ¿qué ha cambiado? Ahora funciona a toda velocidad perfectamente

Freedom Planet

Cuando ejecuté por primera vez el juego, el juego tardó mucho en cargarse (entre 5 y 10 minutos). Ahora tarda unos 30 segundos en iniciarse, es decir, más de 10 veces más rápido que antes. Dentro del juego, aparecían algunos problemas menores de velocidad. No eran nada que hiciera que el juego no fuese jugable, pero no se ejecutaba a toda velocidad, lo cual era una pena ya que se trata de un juego similar a Sonic. Esto ahora se ha solucionado y el juego funciona perfectamente a máxima velocidad.

Faster Than Light

Este es otro juego comercial bien conocido que ya se estaba ejecutando en box86, pero con un tiempo de carga excesivo de más de 5 minutos. Esto también se reduce a menos de un minuto, y el problema de sonido también ha desaparecido. El juego ahora es lo suficientemente rápido como para reproducir música y efectos de sonido y no se aprecia ningún tipo de retardo.

World of Goo

El juego ahora se ejecuta a máxima velocidad, pero podría necesitar LIBGL_FB=3 como indicador para ejecutarse, debido a algunos problemas con la inicialización de GLX.

Qué hay de nuevo

Entonces, en general, los juegos de la última vez funcionan mejor, eso es bueno, pero ¿qué hay de nuevo a parte de esto? ¿Qué podemos ejecutar que no pudiéramos ejecutar antes?

Day of the Tentacle Remastered

Comencemos con algo grande y brillante.

Figure 1 - Day of the Tentacle Remastered in 1080p on the ODROID-XU4
Figura 1 - Day of the Tentacle Remastered en 1080p en el ODROID-XU4

Figure 2 - Green never looked friendlier!
Figura 2 - ¡El verde nunca fue tan acogedor!

Me encanta el juego original Day of the Tentacle, y todavía lo juego hoy en ScummVM en mis ODROID. Ahora, con box86, también puedo reproducir la versión remasterizada con gráficos e interfaz mejorados. Se ve increíble y se ejecuta muy bien. Existe un pequeño inconveniente por ahora. El tiempo de carga entre pantallas puede ser de 10 segundos, que es excesivos si tenemos en cuenta de que se trata de un juego donde tienes que caminar, explorar y probar cosas de un lugar a otro. Aun así, el juego funciona bien, y si no te importa demasiado esperar el tiempo de carga, no hay diferencia entre este y uno que se ejecute en un PC normal.

Jelly Killer

Este juego de aspecto bastante simple es, en realidad muy pesado para la GPU, probablemente debido a su uso de CRT y otros sombreadores.

Figure 3 - A murderous Jelly is on the loose and jumps it’s way through numerous levels
Figura 3: una gelatina asesina anda suelta y salta por numerosos niveles

El juego es un juego de plataformas de rompecabezas donde necesitas cronometrar tus saltos correctamente, infestar a los humanos para alcanzar tu objetivo o matar a otros enemigos. Es un juego pequeño y divertido, que hace un tiempo se ejecutaba muy lento, pero ahora es bastante jugable si no a maxima velocidad.

Pier Solar and the Great Architects

Este juego de rol es un homenaje a los viejos juegos de rol estilo Mega Drive/Genesis y tiene un modo de 16 bits que parece ser de Mega Drive/Genesis. También tiene un modo HD y HD+ que se ve bastante mejor y pulido.

Figure 4 - Pier Solar title screen
Figura 4 - Pantalla de título de Pier Solar

Figure 5 - Looting strangers homes like in every good RPG
Figura 5: Saquear casas de extraños como en todo buen juego de rol

Figure 6 - You can select auto for AI based fights a faster way to finish a fight
Figura 6: Puedes seleccionar auto para los combates basados en IA como una forma más rápida para terminar una pelea

Para mi gusto, el juego tarda demasiado en comenzar, pero está bien, y me pregunto cómo será en las secciones posteriores del juego. No obstante, es totalmente jugable en el ODROID-XU4, así que pruébalo si quieres.

Postal 2

Muchos probablemente habrán oído hablar de este juego, no tanto podrían haberlo jugado. En algunos países todavía está prohibido debido a su naturaleza controvertida. Este juego de acción te permite seguir un camino pacífico para lograr tus objetivos, pero también es el camino más aburrido. El juego funciona en general bien, pero no perfecto. Tuve problemas con el sonido y es difícil cambiar la resolución. El juego es un poco lento, no se puede jugar del todo bien, definitivamente no se ejecuta a toda velocidad.

Figure 7 - Another full 3D game with a very strange theme
Figura 7: Otro juego completo en 3D con un tema muy extraño

Figure 8 - This guy doesn’t know what’s coming at him
Figura 8 - Este tipo no sabe lo que le viene en cima

The Bard’s Tales

The Bard’s Tales es una impresionante serie de juegos de rol que se ven muy bien y funcionan perfectamente en el ODROID-XU4 y otros ODROID. Los gráficos son realmente fantasticos, y aunque el juego ya funcionaba cuando lo probé hace un par de meses, ahora tiene un rendimiento mucho mejor, lo cual hace que este juego se sienta como un juego nativo

Figure 9 - Even the Menu is fully 3D animated
Figura 9: incluso el menú está completamente animado en 3D

Figure 10 - The graphics are impressive for this game, especially on ODROIDs
Figura 10: los gráficos son impresionantes en este juego, especialmente en ODROID

Simplemente recomiendo el juego, es muy divertido y tiene la famosa "Canción de la cerveza” (https://www.youtube.com/watch?v=eTUJNeuFIFA), y un juego que tiene cerveza no puede ser malo.

Toki Tori

Este juego extrañamente solo funciona con soporte OpenGL 1.x. El juego tiene buen aspecto y se ejecuta muy bien. Debes rescatar todos los huevos del juego recogiéndolos. Este juego de rompecabezas es bastante desafiante y te hace pensar antes de llevar a cabo tus movimientos. Tiene una buena pinta e inclye una pequeña melodía que se adapta perfectamente al juego. En general, este juego funciona muy bien, incluso si no tiene la misma velocidad que en un PC normal, el juego es bastante jugable y no se percibe lentitud. El soporte para mandos de juegos es excelente e incluso admite vibración si tienes un mando que lo admita. Este es un juego muy adictivo y lo recomiendo.

Figure 11 - Toki Tori, highly addicting puzzle platformer
Figura 11 - Toki Tori, un juego de plataformas de rompecabezas altamente adictivo

Figure 12 - You have to deal with limited amounts of special moves like teleporters
Figura 12: Tienes que lidiar con cantidades limitadas de movimientos especiales como teletransportadores

Worms Reloaded

Jugué mi primer juego de "Worms" en el Amiga 500. En realidad, solo se llamaba "Worms", y fue un gran éxito y muy divertido de jugar. La serie continúa incluso hoy, y tiene un par de remakes de versiones anteriores del juego y versiones en 3D.

Figure 13 - Worms Reloaded on the ODROID-XU4
Figura 13 - Gusanos recargados en el ODROID-XU4

Figure 14 - The game looks beautiful and runs perfectly fine
Figura 14: el juego tuene muy buen aspecto y funciona perfectamente

El juego se ejecuta sorprendentemente rápido. La única vez que se reletiza es cuando el PC calcula su movimiento, pero el movimiento y los ataques reales se ejecutan perfectamente.

UnEpic

Figure 15 - The things that happen to you when you need a bathroom
Figura 15: lo que te sucede cuando necesitas un baño

Figure 16 - This dungeon crawler has beautiful graphics and lighting effects
Figura 16: Este buscador de mazmorras tiene estupendos gráficos y efectos de iluminación

Este impresionante buscador de mazmorras también funciona a maxima velocidad en el ODROID-XU4. El único problema es que requiere una cantidad relativamente grande de RAM (para placas ARM, es decir). Necesitas al menos 1500 MB de memoria libre para ejecutarlo, por lo que, dependiendo del sistema operativo, es posible que no puedas ejecutarlo en un XU4, y el juego es más adecuado para un N1 con controladores ARMHF y 4 GB de memoria. En general, este juego es impresionante y lo recomiendo encarecidamente.

Honorable mentions

Hay toneladas de juegos en los que no puedo entrar, puesto que hay muchos que funcionan ahora, quisiera compartir algunos con vosotros para daros una idea de hasta donde llega el sistema.

Figure 17 - Broken Sword Director’s Cut - Adventure
Figura 17 - Broken Sword Director’s Cut - Adventure

Figure 18 - Demon Hunter – Chronicles from Beyond - Hidden Object Game
Figura 18 - Demon Hunter – Chronicles from Beyond - Hidden Object Game

Figure 19 - Don’t Starve + Together - Survival / Crafting
Figura 19 - Don’t Starve + Together - Survival / Crafting

Figure 20 - eets Munchies - Puzzle
Figura 20 - eets Munchies - Puzzle

Figure 21 - Enigmatis Series - Hidden Object Game
Figura 21 - Enigmatis Series - Hidden Object Game

Figure 22 - Human Resource Machine - Programming “as a game”
Figura 22 - Human Resource Machine - Programming “as a game”

Figure 23 - Hyper Light Drifter - Action Platformer
Figura 23 - Hyper Light Drifter - Action Platformer

Figure 24 - Icewind Dale Enhanced Edition - RPG
Figura 24 - Icewind Dale Enhanced Edition - RPG

Figure 25 - Little Inferno - Casual / Puzzle
Figura 25 - Little Inferno - Casual / Puzzle

Figure 26 - Memoranda - Adventure
Figura 26 - Memoranda - Adventure

Figure 27 - Not a Hero - Action
Figura 27 - Not a Hero - Action

Figure 28 - Papers, Please - Puzzle
Figura 28 - Papers, Please - Puzzle

Figure 29 - Space Pirates and Zombies - Action / Simulation
Figura 29 - Space Pirates and Zombies - Action / Simulation

Figure 30 - Super Meatboy - Platform / Puzzle
Figura 30 - Super Meatboy - Platform / Puzzle

Figure 31 - VA-11 Hall-A - Simulation / Visual Novel
Figura 31 - VA-11 Hall-A - Simulation / Visual Novel

Figure 32 - Heretic 2 - 3rd Person “Shooter” / Action
Figura 32 - Heretic 2 - 3rd Person “Shooter” / Action

Hay muchos y diferentes de juegos que funcionan actualmente. Hace un par de meses, algunos eran tan lentos que más bien parecían una presentación de diapositivas, pero ahora estos juegos funcionan a máxima velocidad (por ejemplo, Hyper Light Drifter). Es realmente asombroso como ha evolucionado el emulador en tan solo un año.

Juegos especiales

Sin embargo, hay algunos juegos que quisiera destacar, ya que son mis favoritos, y algunos de los cuales quizás también conozcas. Dos son muy cercanos e incluso comparten un nombre similar. Ya los jugué hace un tiempo en ExaGear, donde se ejecutan con software de renderizado 3D. Era impresionante que este juego realmente funcionara, pero ahora puedo ejecutar estos juegos con box86 y aceleración de hardware 3D. Estos juegos me traen tantos recuerdos, ya que los jugué de niño y ahora están en la colección de juegos de todo el mundo, especialmente en PC. Estoy hablando, por supuesto, sobre Unreal y Unreal Tournament (la edición original de 1999).

Tanto Unreal como Unreal Tournament fueron portados a Linux hace muchos años. Hoy en día es un tanto difícil hacer que funcionen, ya que usan controladores muy antiguos, especialmente en lo que respecta al sonido. Pero por lo demás, estos juegos siguen siendo increíbles, y funcionan tan bien como recuerdo haberlos jugado en 1999 en mi procesador AMD K6-2 450 MHz con la tarjeta gráfica Riva TNT. El juego funcionó bien en aquel entonces, pero ahora en ODROID, incluso puedo jugarlos en 720p o 1080p, que no era posible en aquellos tiempos. Es realmente sorprendente, y para ser sincero, estoy deseando tomarme un tiempo libre y volver a reproducir Unreal para ver si es así como lo recuerdo.

Figure 33 - Seeing the flyby back in 1998 was so iconic
Figura 33: Volver a ver la exhibición de vuelo de 1998 fue tan icónico

Figure 34 - Graphics were outstanding for its time, and still look good today
Figura 34 - Los gráficos eran excepcionales para su época, y todavía se ven bien hoy en día

Unreal funciona mejor actualmente. Enicia el juego con las siguientes opciones:

$ LIBGL_SRGB=1 LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libaoss.so.0 box86 UnrealLinux.bin
LIBGL_SRGB=1 usa un modo especial en gl4es que aumenta el brillo general, ya que de lo contrario el juego puede ser extremadamente oscuro. LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libaoss.so.0 es necesario ya que el juego usa /dev/dsp para la salida de sonido que ya no se usa, con esto podemos redirigir el sonido a una emulación alsa.

El juego tarda un poco en iniciarse, ya que carga una gran cantidad de datos desde el principio y luego pasa directamente a la exsibición de vuelo. En cuanto al rendimiento, es increíble, quiero decir que realmente parece que este juego se ejecuta de forma nativa en el ODROID. No he experimentado ningún retardo mientras jugaba. De hecho, el menú parece ser más lento que el juego en sí, y lo ejecuto con detalles altos en una profundidad de color de 32 bits a 720p. Simplemente es increible jugar a este juego.

Figure 35 - What Unreal started, Unreal Tournament improved on
Figura 35 - Lo que Unreal empezó, Unreal Tournament lo continuo

Figure 36 - Still got it... even if it was just the first level
Figura 36 - Todavía lo tengo ... incluso si solo era el primer nivel

Unreal Tournament fue la perfección del combate multijugador en primera persona. Jugué esto innumerables veces con amigos en fiestas LAN mientras estaba de vacaciones. El modo de juego Asalto siempre fue mi favorito, y hasta hoy, hay muy pocos juegos que incluso hayan estado cerca de implementar un modo de juego tan emocionante. Extraño mucho jugar esto con mis amigos. Siempre odié "capturar la bandera", en la que se basaba cualquier otro juego. Unreal Tournament hizo todo bien y me atrevo a decir que me gustó más que Quake 3. Sin embargo, no pude hacer que el sonido funcionara en esta versión. Se basa en un controlador muy antiguo llamado OSS, y aunque puedo cargar módulos de kernel para esto, no puedo usarlo para el sonido. Otros métodos como aoss y padsp tampoco funcionan, así que estoy atascado sin sonido.

Conclusion

En solo un año, Box86 realmente despegó en términos de compatibilidad. La última vez que escribí al respecto, fue un proyecto con muchas promesas, pero con poco soporte. Ahora está por las nubes, ¡y el soporte para los juegos es increíble!

Espero con ansias lo que podremos hacer en los próximos meses. Espero soporte para Unity y WINE, ya que esto abre las puertas a más juegos. Espero especialmente WINE, que sería realmente impresionante porque WINE, en combinación con OpenGL, podría significar que también podremos jugar juegos de Windows con aceleración de hardware en ODROID. El proyecto promete ser muy emocionante.

Hay otros que también siguen los juegos de desarrollo y prueba en Raspberry Pi y otras plataformas. Puedes consultar el canal de Youtube "Pi Lab" (https://www.youtube.com/channel/UCgfQjdc5RceRlTGfuthBs7g/videos), donde puede encontrar aún más juegos en box86. ¡Gracias @ptitSeb por todo su gran trabajo en este proyecto!

Be the first to comment

Leave a Reply