Como le comenté a uno de los lectores en la introducción de Unity con Quest, hoy os traigo otra breve introducción pero esta vez usando el motor de la competencia, Unreal Engine o UE4. Cualquiera que esté interesado en el desarrollo de juegos o entornos 3D habrá oído o leído la rivalidad que hay entre UE4 y Unity3D, cual es mejor, cual se ve más realista, el que mejor trata las luces, su renderizado fotorrealista, el consumo de recursos, los requisitos mínimos, compatibilidad entre plataformas o su dificultad o facilidad de desarrollo ya sea por código o con los blueprints de UE4.

Un amigo de la infancia que lleva ya unos años trabajando en el mundo de los videojuegos en un conocido estudio español, me miraba por encima del hombro cuando le decía que usaba Unity3D y ellos UE4. Me decía que Unity3D era el motor de los que empezaban o querían crear juegos Indies o de forma rápida, pero que todo aquel que quisiera hacer algo profesional y llegar a algo debería optar por UE4.

Recientemente, siguiendo con mi idea de sacar algún juego en Oculus Quest a pesar de que al final todo dependerá de la aprobación por parte de Oculus, más que la propia calidad del producto o el engine usado, estuve preguntándome como sería de difícil realizar una demo o juego con UE4.

En uno de los muchos grupos de Telegram en los que siempre ando leyendo para ver si aprendo algo nuevo, observé a un colega del gremio que había hecho ya alguna cosa para Oculus Go y le pregunté por privado sobre las virtudes, defectos y referencias de este motor.

Tras informarme, documentarme y realizar pruebas varias con sus problemas y errores como no conseguir hacer funcionar Vulkan o compilar en arm64 (pensé que las Quest funcionaban en 64bits…) y solventar algún que otro fallo que indico al final de este tutorial, repetí el proceso una vez más haciendo las capturas y redactando el borrador de lo que aquí debajo podréis leer, probar, aprender y mejorar.

Lo primero que tenemos que hacer es descargar el Launcher de Epic. Muchos lo tendréis ya bajado para poder cargar sus juegos, más ahora que cada mes están regalando varios.

Es posible que os pida registraros en su web, yo lo hice hace mucho y no me lo pidieron ahora.

Link a la web del Launcher de Epic.

Una vez descargado, instalamos el Launcher y veremos la siguiente imagen. Seleccionamos en la columna izquierda Unreal Engine. En la pestaña Biblioteca y pulsamos en el signo + para instalar el Editor de UE4 donde crearemos nuestros juegos.

Ventana Epic Launcher
figura 1. Epic Launcher

Una vez instalado el Editor en la ruta que queramos, tendremos que instalar los drivers adb de Android, el SDK y poner las Quest en modo desarrollo o DevMode.

Para los drivers usb adb y el SDK, Unreal nos da un archivo ejecutable con lo necesario en la ruta donde hayamos instalado el Editor.

El archivo se llama CodeWorksforAndroid.exe y en mi caso como no cambié la ruta por defecto, se encuentra en: C:\Program Files\Epic Games\UE_4.23\Engine\Extras\AndroidWorks\Win64

Para poner las Quest en modo Dev o si los drivers usb adb no se os han instalado bien, podéis seguir mi otro tutorial de Quest con Unity.

Con todo lo necesario listo, abrimos nuestro Editor de Unreal y creamos un New Project, Virtual Reality de tipo Mobile/Tablet, Scalable 3D or 2D, No Starter Content y lo guardamos en la ruta y nombre que queramos.

New Project UE4 Editor
figura 2. New Project VR

Una vez abierto el editor, tenemos que abrir el proyecto que viene de prueba en la ruta Content, VirtualRealityBP, Maps, Motion Controller Map y borramos el resto de escenas de la carpeta y sus Data. No borréis el de nuestra escena.

Escena inicial
figura 3. Carpeta de escenas

Tendremos que configurar varias opciones y confirmar otras como el plugin de VR pinchando en Edit arriba, Plugins y buscamos VR. Nos aseguramos de que Oculus VR esté seleccionado.

Plugins UE4
figura 4. Plugin VR Oculus

Ahora configuraremos lo que respecta a las settings del propio proyecto pulsando en Edit de nuevo, Project Settings. Nos aseguramos de que en la sección Maps & Modes, tengamos nuestra escena seleccionada en Editor Startup Map y en Game Default Map.

Map Settings
figura 5. Configuramos carga de escena inicial

En input debemos tener en none la sección Default Touch Interface.

Input Settings
figura 6. Input Settings

En Rendering, desactivar Mobile HDR.

Rendering Settings
figura 7. HDR rendering off

En la sección Android, nos saldrá un cartel rojo advirtiendo de que el proyecto actual no está configurado para Android. Pulsamos en Configure Now. Aceptamos la licencia del sdk.

Android Agree
figura 8. Aceptar Licencia Android SDK

Le damos nombre al package con nuestra compañía o algún nombre que nos identifique en el formato indicado, com.algo.[PROJECT], pero no cambiéis [PROJECT] ya que es la variable que coge el nombre de nuestro proyecto y lo pone al package. Ponemos de Mínimum y Target SDK la versión 25.

Android API
figura 9. Configuración versión SDK API

Activamos Enable Fullscreen para dispositivos superiores a KitKat. Pulsamos sobre el + en Package for Oculus Mobile Devices y seleccionamos Oculus Quest. Marcamos Remove Oculus Signature.

Extra Android Settings
figura 10. Oculus mobile Device

En la sección Android SDK, si tenemos nuestros path configurados por defecto, los dejamos en blanco y cogerá los del sistema por defecto. Debería estar todo instalado por el AndroidCodeWorks que instalamos al principio. Si no es así quizá nos falte el JDK, que se puede bajar desde internet, aunque pide registrarnos. El resto se deja como está ya que le estamos diciendo que use el último SDK y la versión del NDK por defecto. Cerramos las settings y guardamos todo con File Save All.

Pulsamos en la flecha hacia abajo que hay junto al botón Launch y seleccionamos Supported Platforms y marcamos Android.

Compatible devices
figura 11. Prelaunch Android device

Es posible que haya que volver a Project Settings y aceptar las condiciones del SDK de Android de nuevo si es la primera vez que se usa. Sabremos que está todo correcto cuando dicho botón se ponga de un tono gris más oscuro. Volveremos a pulsar la misma flecha del paso anterior pero ahora nos saldrá Quest.

Launch App on Quest
figura 12. Selección de Launch Quest

Si sale una exclamación amarilla a su lado es que no hemos hecho bien el paso previo y deberemos aceptar la licencia del SDK.

Launch Device Error
figura 13. Advertencia en Launch Quest

Una vez hecho, aparecerá abajo a la derecha una ventana indicando con un número que se está compilando los shaders para Android. Si pulsamos sobre el link al Log, podremos ver que hace Unreal en dicho proceso y así veremos cuando ha terminado. Nos saldrá un mensaje con algo parecido a Quest 127.0.0.1, que es que todo ha ido correcto pero el editor sigue a la escucha por si se le mandan nuevas acciones. Nos ponemos las Quest y podremos movernos por la escena y agarrar objetos.

Result Gif
figura 14. Resultado

Si tenemos el problema de que solo podemos interactuar con uno de los mandos, crearemos el siguiente archivo con el siguiente contenido en la ruta del proyecto /Build/Android

Touch Fix path
figura 15. Ruta donde añadir archivo fix de Touch

    <uses-sdk android:minSdkVersion="25" android:targetSdkVersion="25" />
    <uses-feature android:glEsVersion="0x00030001" android:required="true" />
    <uses-feature android:name="android.hardware.vr.headtracking" android:version="1" android:required="true"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="com.android.vending.CHECK_LICENSE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- Supported texture compression formats (cooked) -->
    <supports-gl-texture android:name="GL_KHR_texture_compression_astc_ldr" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-feature android:name="android.hardware.usb.host" />

Nombre del archivo: ManifestRequirementsOverride.txt

Si tenemos un cable usb C 3.1 compatible con el modo link de Quest y Pc, nos ahorraremos mucho trabajo ya que podemos activar el link mode en las Quest en el menú principal de las gafas.

Quest Link Button
figura 16. Botón Link en menú de Quest

En el editor de Unreal pulsar en la flecha que hay junto a Play, VR Preview. Así directamente se ejecutará sin compilar. Es un método rápido de probar lo que hagamos sobre todo ala hora de ver como queda el escenario, pero hay que tener cuidado con lo que vemos, ya que el rendimiento no será el mismo cuando lo compilemos para ejecutar en las Quest.

Play VR Preview
figura 17. Preview directa en Quest con Link

Ahora os toca a vosotros probar con vuestras creaciones, añadir armas, algún objeto en movimiento y llegar a desarrollar algún juego o experiencia VR de gran calidad.


Y sin más me despido, espero que os haya gustado. Iré subiendo más tutoriales del estilo y de todo lo que me parezca curioso o interesante de practicar y aprender. Un saludo y gracias 👍

Si te ha gustado y aún no lo has hecho, puedes suscribirte al blog por correo o siguiéndome en Twitter y así te avisaré con cada nuevo artículo o tutorial para que estés al día.


1 comentario

pillan · 28 agosto, 2020 a las 9:59 pm

Unreal Engine 4.25 and later uses the Android Software Development Kit (SDK) distributed with Android Studio…..not CodeWorksforAndroid.exe

Se agradece el tutorial, sirve para las versiones previas a la 4.25

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Translate »