Cliente Minecraft en ODROID

Entorno de Minecraft

¡Ahora se puede jugar al Minecraft en el ODROID! La instalación es bastante sencilla, gracias a las habilidades de empaquetado de Tobias también conocido como @meveric. Tras instalar su repositorio, escribe el siguiente comando:

$ sudo apt-get install minecraft-odroid
Minecraft se instalará con un par de dependencias y estará listo para ejecutarse. Viene empaquetado con el lanzador por defecto, para que puedas reproducir la demo, o puedes iniciar sesión con tu cuenta para jugar.

Rendimiento

Una cosa que debe saber es que actualmente no es realmente compatible con los mipmaps, de modo que el rendimiento será muy bajo a menos que configures los mipmaps en "ninguno". Una vez que el juego se haya iniciado, ve al menú de Opciones, selecciona Video, luego elige Mipmap Levels: OFF.

Figura 1 – Configuración del video

Después de esto, el resto de configuraciones son bastante estándar y tienen el efecto deseado. Recomiendo reducir la “Render Distance“ (5 están bien, aunque es posible que desees bajarlo más para obtener más FPS), elije “Graphics: Fast” (para que las hojas del árbol no sean transparentes), y ajusta el Smooth Lightning en OFF para velocidad máxima o Minimum para algunas sombras suaves (pero es más lento). Además, el Max Framerate debe estar alrededor de tus FPS actual (30 fps es bien para que el juego vaya fluido). Con estos parámetros, logré conseguir entre 12 y 15 FPS en Full HD. Puedes usar "F3" durante el juego para que se muestren algunas estadísticas, incluido los FPS, pero ten en cuenta que la pantalla F3 utiliza algunos FPS, unos 3 o 4 como mínimo.

Figura 2 - Pantalla de la muerte

Mejorar el rendimiento

Si quieres que tu Minecraft funcione más rápido, puedes utilizar OptiFine, que es un mod que te permite modificar muchos ajustes de Minecraft, así como el método de renderizado para logara que el juego vaya más fluido. Primero debe iniciar Minecraft y lanzar un juego, para que la versión actual de Minecraft se registre y descargue. Luego, dirígete al sitio web de OptiFine en http://bit.ly/1jOG2Di y descarga la versión para tu versión de Minecraft (cuando escribí este artículo, era la 1.9.4). Recibirá un archivo .jar que se puede iniciar y que se instalará automáticamente. Para iniciarlo, simplemente haga doble clic o, usando un terminal, escribe el siguiente comando:

$ java -jar OptiFine_1.9.4_HD_U_B4.jar
A continuación, verás un menú que te pregunta qué deseas hacer. OptiFine primero detecta automáticamente la carpeta local de Minecraft y después de un rato, debe instalarse sin problemas.

Figuras 3 - Instalación del mod Optifine

Vuelve a iniciar Minecraft, y notará que el perfil ahora se llama OptiFine. Una vez en el juego, notarás que los trozos se cargan más rápido. Hay muchos más parámetros para probar en la pantalla Opciones, tal y como se muestra en la Figura 5.

Figura 4 - Configuración de video Optifine

Sin tocar nada, OptiFine puede darte unos cuantos FPS más (En mi caso, obtuve 4 FPS más en mi ODROID), pero depende en gran medida de la configuración real. Estimo que puede llegar a mejorar el rendimiento entre un 25% y un 50%.

Cómo funciona

La primera pregunta que podrías hacerse es por qué no ha estado disponible antes Minecraft para ODROID. Después de todo, es un juego de Java, de modo que debería ejecutarse tal cual. Sin embargo, los programas de Java no dependen de la CPU, y tampoco dependen del sistema, ya que se trata de una Máquina Virtual. Por lo tanto, un programa Java que se ejecuta en un sistema x86/Windows también puede ejecutarse en un sistema x86/Linux o ARM/Linux. En algunas ocasiones, Java no es suficiente para hacer un programa, y necesitas interactuar con alguna librería nativa para hacer cosas más avanzadas. Se trata de JNI (Java Native Interface), un mecanismo que permite que un programa Java llame directamente a una librería nativa. Por ejemplo, necesitas esto para usar un sonido OpenAL o gráficos OpenGL, y eso es lo que hace Minecraft: utiliza una librería Java llamada "lwjgl" (Light Weight Java GL) para acceder a OpenGL para el renderizado. Para usar esta librería, Minecraft la descarga directamente desde su servidor, junto con el resto de librerías y recursos necesarios, cuando lanzas un juego por primera vez, y comprueba que tienes todo correctamente en su lugar cada vez que lo ejecutas. El problema es que Minecraft no es compatible con ARM. Ni siquiera conoce esta arquitectura. Entonces, cuando descarga su versión de lwjgl, se obtiene una versión para una CPU x86, que simplemente no funciona porque no es la correcta. Para solucionar esto, se ha creado un lanzador especial que intercepta todas las llamadas a Java, analiza los comandos y reemplaza el enlace por la versión x86 con el que está instalada en el sistema. Es un poco bruto, pero funciona permitiendo que Minecraft se ejecute. Aunque se inicia, no llega muy lejos, ya que necesita OpenGL, y ODROID solo proporciona GLES. De modo que, debemos usar glshim para traducir todas las llamadas de OpenGL a GLES. Glshim solo proporciona OpenGL 1.5 hasta ahora, así que Minecraft nos advierte que actualicemos nuestros drivers, indicándonos una advertencia de que ya no es compatible con OpenGL 1.x, y que necesitarmos OpenGL 2.0. Por cierto, glshim contiene algunos hacks especiales que fueron creados específicamente para Minecraft. La primera versión de Minecraft sobre máquina ARM fue en OpenPandora, hace 2 años. Y al principio, se veía tal como se muestra en la Figura 5.

Figura 5 - Versión inicial de Minecraft en OpenPandora

Como puede ver, ¡No era muy colorido! Tras algunas depuraciones, finalmente codifiqué un hack en glshim para compensar la forma en que Minecraft monta su iluminación. Utiliza multitextura, donde la primera textura es del color del bloque, y la segunda textura es el mapa de luz, el cual es un método muy común de iluminación. Sin embargo, lo que Minecraft hace es renderizar las texturas de forma que cada bloque se tiene en cuenta para la iluminación uniforme, de modo que no tienes bloques a medio iluminar. De modo que, cuando se emite el comando de trazado para un bloque/cubo, todas las coordenadas de vértice son proporcionadas a openGL, junto con las coordenadas de texturas para la primera textura, con solo una coordenada de textura para el mapa de luz. Y este supuesto, que es técnicamente correcto de acuerdo con las especificaciones de OpenGL, no es gestionado por Glshim. Se corrigió comprobando si solo había una coordenada para una textura. En este caso, las coordenadas están duplicadas para todos los vértices, lo que facilita su manejo en glshim. Si tiene curiosidad por los detalles técnicos, busca la función "glshim_glEnd" en el archivo "gl.c" (http://bit.ly/24WP30W).

¿Y ahora qué?

Después de crear el lanzador personalizado y modificar Glshim, Minecraft funciona bastante bien. Aun así, las cosas siempre se pueden mejorar. Todavía hay tres áreas principales en la que se puede trabajar en la aplicación glshim:

  • Mejorar la gestión de la configuración de Mipmap
  • Aumentar la velocidad usando el modo Batch de glshim
  • Tener un glshim funcionando en GLES2

La configuración de mipmap es un poco confusa, y tengo que entender lo que realmente hacen los niveles de Mipmap, lo cual no es fácil con un software de código cerrado. El modo Batch puede ser bastante efectivo a veces, como con Xash3D o Emilia Pinball, por ejemplo, pero en otras ocasiones es totalmente ineficaz. Incluso puede llegar a romper el motor de renderizado, como es el caso de Minecraft. Se necesita mucho trabajo para estabilizar esta característica. Tener un Glshim usando GLES2 y proponer una versión OpenGL 2.x son objetivos a largo plazo para glshim, aunque será necesario tarde o temprano, ya que cada vez más el software está dejando de tener soporte para la tubería fija, que es una función OpenGL 1.x. a favor de usar sombreado en su lugar.

Be the first to comment

Leave a Reply