Anne y los mapaches

Sinópsis

Anne lleva una vida pacífica en su granja, atendiendo sus cultivos y cuidando su jardín. De pronto la paz se acaba ya que una gran cantidad de mapaches aparecen en su granja y desordenan todo cuanto encuentran. Anne ha trabajado muy duro en su granja y no piensa quedarse de brazos cruzados.

Cómo jugar

Controla a Anne pulsando las teclas WASD o las flechas de movimiento. Recoge los objetos con la tecla E. Pon la granja en funcionamiento y si tienes tiempo encuentra los vegetales que desordenaron los mapaches. Cada puesto se normaliza con un objeto en particular de modo que tendrás que tener este objeto al momento de ahuyentar a los mapaches y normalizar el puesto.

Desarrollado para la Game Jam Ludum Dare 51 con el tema "Cada 10 segundos" por:

MARTÍN HEINTZ

MUSIC COMPOSER

GAMEDEVTRAUM

UNITY DEVELOPER

STEFF

UI/UX DESIGN

ÁLVARO

GAME DESIGN

Mc. Rooties

Sinópsis

Mc. Rooties está buscando un auxiliar de cocina para reemplazar a su antiguo empleado quien se rumorea huyó entre lágrimas y gritos por la puerta trasera del restaurante. Tu manejo excepcional del cuchillo te ha labrado un nombre y eres la persona indicada para el trabajo.

Cómo jugar

Controla el cuchillo movimiento el ratón y corta las raíces en el punto indicado por una línea roja, el cuchillo solo corta con un movimiento rápido, ten cuidado de no dañar los vegetales.

Desarrollado para la Global Game Jam 2023 con el tema "Raíces" por:

CIAN

ILUSTRATOR

MANU

GAME DESIGN

VALEN

UNITY DEVELOPER

GAMEDEVTRAUM

UNITY DEVELOPER

MR. DORIAN

MUSIC COMPOSER

AGRAULIS.C

ILUSTRATOR

Introducción​

Uno de los proyectos más grandes en los que he trabajado es una aplicación de simulación para tareas de perforación y control de pozo, aplicación solicitada por una empresa de la Patagonia Argentina. El desarrollo de esta aplicación comenzó en febrero del año 2021 y está en producción desde octubre del 2021 y en junio del 2022 se cerró un acuerdo con el Instituto Rumiñahui de Ecuador para instalar dos estaciones de trabajo, en las ciudades de Quito y El Coca.

Esta aplicación permite configurar una gran cantidad de parámetros, comenzando por las dimensiones del pozo, ángulo de desviación, kick-off point, profundidad de zapata, la densidad del lodo, parámetros de tubería, entre muchos otros. Al establecer las condiciones iniciales se calcula el resto de variables como por ejemplo las presiones en tubería y en fondo de pozo. La aplicación permite perforar en las condiciones dadas.

Para la parte de control de pozo se simula una situación de influjo, es decir gas filtrándose en el pozo, situación que puede desatarse debido a los trabajos de perforación o puede ser desatada manualmente por el instructor si así lo desea. Cuando ocurre la situación de influjo se procede a controlarla usando el «método del perforador» o «esperar y densificar», el operario debe asegurarse de mantener las presiones en valores estables para prevenir un blow out y también evitar que la presión del fondo del pozo caiga por debajo de la presión formacional con lo que podría ocurrir otra situación de influjo.

Esta aplicación cuenta con una serie de fallas que pueden ser activadas por el instructor en cuanto considere oportuno, algunas de estas fallas son pérdida de presión de aire en el rig, fallas eléctricas, fallas en bombas, fallas en válvulas y boquillas del trépano.

Pantallas de la aplicación​

Esta aplicación está pensada para utilizarla con un mínimo de tres personas, un instructor y dos operarios, es por eso que se requiere que la aplicación pueda funcionar en múltiples monitores y para eso se creó un sistema de pantallas dinámico que permite cambiar en todo momento la pantalla que se visualiza en cada monitor. Puede trabajar con hasta 5 monitores.

En el siguiente vídeo se pueden ver las distintas pantallas disponibles en la aplicación:

Movimiento de las máquinas​

En la ventana del perforador se puede observar una vista 3D de un equipo de perforación, caracterizado por ser una plataforma con una torre de varios metros de altura sobre la cual viaja un equipo de perforación conocido como «Top Drive». 

En esta aplicación se puede mover el Top Drive verticalmente para desplazarlo en la torre, activar la rotación para poder perforar, extender y retraer los brazos.

Es posible agregar y quitar tuberías para poder continuar con la perforación cuando se acaba la excursión del Top Drive.

En el siguiente vídeo se puede ver cómo es este movimiento:

Elementos interactivos​

En la pantalla del perforador hay elementos 3D con los que se puede interactuar, accediendo a nuevas funcionalidades del simulador, un ejemplo es el tableto 3D de la máquina «Blow Out Prevention» o BOP, al hacer clic sobre este elemento la cámara se posiciona frente a él y podemos realizar maniobras para controlar la BOP.

En el siguiente vídeo puedes ver algunos de los elementos interactivos de la pantalla del perforador:

Alternar entre el día y la noche​

Esta aplicación tiene un gran número de parámetros para modificar, uno de ellos es alternar entre una simulación diurna y una nocturna, como se puede ver en el siguiente vídeo:

Fallas y catástrofes​

En un rig de perforación pueden ocurrir muchas situaciones problemáticas e incluso eventos que puedan perjudicar los equipos y poner en riesgo la seguridad de los operarios y la instalación.

En esta aplicación se pueden simular una serie de fallas que pueden ser disparadas por el instructor, como falla de frenos del Top Drive, falta de presión en el sistema de aire y también algunas fallas que son consecuencia de malas maniobras por partes de los operarios, como por ejemplo no disminuir la velocidad del Top Drive al llegar a los extremos de la torre.

En el siguiente vídeo se ilustran algunas fallas del simulador:

En este vídeo puedes ver el procedimiento paso a paso para generar las texturas a partir de un material procedural hecho en Blender


Introducción. El problema con los materiales procedurales

En Blender tenemos la posibilidad de crear materiales procedurales utilizando la ventana Shader Editor interconectando distintos nodos que producen distintos resultados en el material final.

El problema que nos reúne aquí surge cuando queremos exportar el modelo 3D con esas texturas de Blender a Unity, actualmente toda esa información definida por los nodos no se incluye en el archivo de exportación, ya sea que usemos el formato FBX, OBJ o el propio BLEND file.

Para solucionar este problema propongo generar imágenes para representar el color y las normales que el material procedural aplica sobre el modelo 3D, de esta forma, esas texturas las podremos asignar en los campos del Standard Shader en Unity y así recrear el material.

En el siguiente vídeo puedes ver el procedimiento paso a paso para generar las texturas a partir de un material procedural hecho en Blender



Punto de partida

Vamos a comenzar con dos materiales procedurales hechos en Blender, como se observa en el vídeo de más arriba, uno de los materiales representa un no metal y el otro material un metal. Hago esta distinción porque es la forma en la que he logrado exportar texturas para utilizarlas en Unity y que representen de la mejor manera posible los materiales originales.

A continuación puedes descargar el archivo de Blender con el modelo 3D y los materiales procedurales listos para exportar las texturas y además el paquete de Unity con una escena donde se encuentra montado el modelo 3D y tiene asignadas las texturas generadas proceduralmente y posteriormente exportadas de Blender a Unity.

ARCHIVOS PARA DESCARGAR

.BLEND FILE

PAQUETE DE UNITY

PAQUETE DE UNITY: Medir distancia de bote al fondo

ACERCA DE ESTA SOLUCIÓN

  • Cuando importes el paquete de Unity encontrarás una carpeta con 1 escena, 1 script y algunos extras.
  • La imagen de arriba es una captura de la escena luego de importar el paquete.
  • Dentro de la escena encontrarás información sobre cómo funciona esta solución.
  • En pantalla aparece la distancia que hay desde la base del bote hasta el fondo del lago.
  • Muévete con WASD para conocer la distancia al fondo en distintos puntos
  • EXTRAS: Modelos 3D del terreno y bote, script de control del bote, diseño de interfaz gráfica

Introducción

En esta ocasión les traigo una solución para Unity que consiste en un movimiento por carriles estilos Subway Surfers, en el cual el personaje se mueve horizontalmente en ciertos carriles predefinidos. Además esta solución viene acompañada de un paquete de Unity para descargar e importar con lo que se pueden recuperar todos los Assets de esa solución y tener una escena donde está el sistema montado.

DESCARGA DESBLOQUEADA CON 7300 SUSCRIPTORES

🟢 Cómo hacer MOVIMIENTO por CARRILES en UNITY

En este vídeo explico cómo implementar un control de movimiento por carriles en Unity, similar al movimiento del personaje en el juego Subway Surfers.


Introducción

En este artículo vamos a ver cómo hacer para conocer el estado de un GameObject cualquiera a través de código. Los GameObjects son los elementos de la escena que se utilizan para modelar todo cuanto exista en nuestro proyecto en Unity. Una de las propiedades básicas que tienen estos GameObjects es su estado de activación, en la ventana inspector puede verse como una casilla que al estar marcada el GameObject se encuentra ACTIVO y si la casilla está desmarcada el GameObject se encuentra INACTIVO.

En el siguiente vídeo explico cómo saber si un GameObject está ACTIVO o INACTIVO en la escena en Unity a través de código


Procedimiento para saber si un GameObject está ACTIVO o INACTIVO en la escena

Vamos a asumir que ya existe un script creado y asignado a un GameObject en Unity para que sus instrucciones puedan ejecutarse.

Paso 1 – Definir REFERENCIA

Para resolver practicamente cualquier problema en Unity tenemos que partir por las variables que vamos a utilizar, en este caso necesitamos contar con la referencia del GameObject que queremos analizar, en otras palabras, en nuestro script definiremos una variable global de tipo GameObject, por ejemplo de la siguiente manera:

public GameObject myGameObject

Paso 2 – Inicializar REFERENCIA

La variable que definimos en el paso anterior no va a apuntar automáticamente al GameObject que nos interesa conocer si está ACTIVO o INACTIVO en la escena, tenemos que ocuparnos de que eso pase.

Existen diversas formas de inicializar una variable, en mi canal tengo una lista de reproducción con más de 20 vídeos donde se ven métodos y ejemplos sobre este tema, en este caso vamos a ir al inspector donde tenemos asignado el script y vamos a arrastrar manualmente el GameObject que nos interesa analizar a la variable tipo GameObject que aparece en el inspector, en nuestro caso llamada»myGameObject». De esta manera ahora esa variable apuntará al GameObject que nos interesa.

Paso 3 – Cómo LEER el estado del GameObject

Una vez resuelto los dos pasos previos ahora podemos utilizar la variable que definimos para saber si el GameObject se encuentra ACTIVO o INACTIVO en la escena. Para esto usamos la siguiente instrucción.

myGameObject.activeInHierarchy

La instrucción anterior es equivalente a un valor booleano, si el GameObject al que está apuntando la variable «myGameObject» está activo en la escena la expresión dará como resultado «true», mientras que si está inactivo dará como resultado «false». Por lo tanto podemos usar esta expresión para hacer lo que queramos, por ejemplo definir una sentencia IF e imprimir un mensaje en consola si el objeto está activo y un mensaje distinto si está inactivo, por ejemplo:

if(myGameObject.activeInHierarchy){
Debug.Log(«El GameObject está ACTIVO»);
}else{
Debug.Log(«El GameObject está INACTIVO»);
}

Introducción

En este artículo vamos a ver cómo trabajar con los componentes Text Mesh Pro desde un Script, concretamente vamos a crear un objeto texto en un Canvas y otro Text Mesh para el espacio 3D y crearemos un Script dentro del cual vamos a escribir el texto TextMesh Pro a través de código.

También vamos a ver cómo cambiar el color del texto a través de código.

Imagen 1: El componente Text se ha traslado a la sección «Legacy».

En este vídeo muestro cómo configurar TextMesh PRO, cómo mostrar un texto en pantalla y cómo escribir el texto a través de código en Unity.




Crear objetos TextMesh Pro para World Space y Canvas

Comenzamos creando los objetos Text que posteriormente modificaremos desde un Script, vamos a crear dos tipos de objetos TextMesh Pro, uno para usar en la interfaz gráfica y otro para usar como un objeto 3D de la escena.

Creación de Text Mesh Pro Text para la interfaz gráfica

En Unity los objetos Text Mesh Pro que están en la sección UI deben colocarse como hijos de un objeto Canvas, por lo que vamos a asumir que ya tenemos uno de estos objetos en la escena. Para crear un nuevo objeto Text Mesh Pro vamos a la jerarquía, hacemos clic derecho sobre el Canvas (o algún objeto hijo del Canvas), vamos a la sección UI y elegimos la opción «Text – Text Mesh Pro», como se observa en la imagen 2.A.

Imagen 2.A: Opción para crear un nuevo texto Text Mesh Pro para la interfaz gráfica.

Creación de TextMesh Pro Text para el World Space

La otra opción para escribir texto en pantalla es usar un componente Text de Text Mesh Pro como un objeto 3D y por lo tanto que se encuentre en una posición del mundo, este objeto lo encontraremos en la ventana de creación dentro de la sección 3D, como se observa en la imagen 2.B.

Imagen 2.B: Opción para crear un nuevo texto Text Mesh Pro como un objeto 3D de la escena.



Primera vez usando TextMesh Pro

En caso de que aún no hayamos configurado Text Mesh Pro nos saldrá la ventana de la imagen 3 donde nos dá la opción de importar los componentes necesarios para usar Text Mesh Pro, le damos clic en «Import TMP Essentials», como se observa en la imagen 3. El segundo botón para importar ejemplos y extras es opcional.

Imagen 3: Vetana para importar paquete Text Mesh Pro en Unity.

Resultado de la creación de los objetos

Una vez creados los objetos, les hice unas pocas modificaciones en el inspector (tamaño de fuente, text) y el resultado es el siguiente:

Imagen 4.a: Objetos Text Mesh Pro en la jerarquía.
Imagen 4.b: Objetos Text Mesh Pro visualizados en la escena.

Una vez creados los objetos e importado Text Mesh Pro ya podemos comenzar a usar el componente Text Mesh Pro Text desde el inspector o escribirlo a través de un Script. En la imagen 5 vemos el componente Text en la ventana Inspector, tiene muchas más opciones de configuración comparado con la antigua solución para textos.

IMPORTANTE

En la imagen 5 vemos el campo para editar el texto que aparece en pantalla, actualmente tiene escrito el valor «Canvas Text», ese es el campo que queremos editar por código y para hacerlo tendremos que editar la variable «text» de ese componente.

Imagen 5: Componente Text de Text Mesh Pro visto desde el inspector.



Script para escribir texto en componente Text Mesh Pro

Para poder escribir un componente Text Mesh Pro por código voy a crear un script y asignarlo a algún GameObject de la jerarquía, como se observa en la imagen 6. En este caso mi Script se llama «ModifyTextMeshPro«, dentro de este script voy a modificar los textos.

Imagen 6: Creamos un script y lo asignamos a algún objeto de la jerarquía.

Importar namespace TMPro en nuestro Script

Para poder usar los componentes Text Mesh Pro cómodamente es conveniente importar el namespace «TMPro» agregando en la cabecera de nuestro script la línea «using TMPro;» como que se observa en la imagen 7.

Imagen 7: Declaramos que vamos a utilizar el namespace «TMPro» en la cabecera de nuestro script.

Declaración de las variables a utilizar

Vamos a declarar dos variables de tipo «TMP_Text» donde estarán alojadas las referencias de los componentes Text que queremos modificar, en este casos los nombres de mis variables serán «canvasText» y «worldText» en estas variables colocaré las componentes Text Mesh Pro Text del canvas y del espacio respectivamente.

DETALLE

Los nombres «canvasText» y «worldText» son los nombres que elegí para esas variables, se puede usar cualquier otro nombre siempre que contenga los caracteres permitidos.

Imagen 8: Declaración de las variables que se utilizarán para modificar el texto Text Mesh Pro.

Inicialización de las variables (Asignación de referencias)

La inicialización de este tipo de variables no primitivas es crucial, si no nos encargamos de colocar dentro de la variable el objeto preciso al que queremos referirnos nos dará error de referencia null («Null Reference Exception»).

Hay muchas formas de asignar las referencias en Unity, en este caso lo haré de una de las formas más simple que es arrastrando los GameObjects que contienen los componentes Text que quiero modificar a los espacios de las variables en el inspector.

Imagen 9: Se arrastran los GameObjects apropiados a los espacios en el inspector para inicializar las variables.



No aparece la variable en el inspector

En el caso de que no aparezca la variable en el inspector normalmente es porque su visibilidad es privada, se puede solucionar declarando las variables como públicas como se observa en la imagen 8, anteponiendo la palabra «public», o también se pueden declarar como privadas pero indicando que sean serializadas por el inspector, de la siguiente forma:

[SerializeField]
TMP_Text canvasText;

O también:

[SerializeField]
private TMP_Text canvasText;

Otro motivo por el que las variables no aparezcan en el inspector puede ser cuando hay errores en consola y los cambios hechos en los scripts no se actualizan, para resolver esto deberemos solucionar todos los errores que haya en consola, una vez hecho esto Unity compilará y aparecerán las nuevas modificaciones.

Instrucciones de código para modificar el texto Text Mesh Pro a través de Script y pruebas

Una vez que hemos inicializado las variables podemos utilizarlas, en este caso si queremos modificar el texto que muestra el componente TextMesh Pro, deberemos modificar la variable «text» definida en su interior, para ello usamos el operador punto que nos permite acceder a las variables y funciones públicas definidas dentro de un objeto,

Imagen 10.A: Escribir un texto Text Mesh Pro desde un Script en Unity.
Imagen 10.B: Al pulsar play vemos como se modifican los textos en pantalla.



Extra: Cambiar el color de un texto Text Mesh Pro por código

Imagen 11.A: En las líneas 22 y 23 se cambia el color a los textos Text Mesh Pro a través de código.
Imagen 11.B: Al pulsar play vemos como cambian los colores de los textos en pantalla.

Introducción – ¿Qué es Occlusion Culling en Unity?

El motor Unity tiene un sistema llamado «Occlusion Culling» que permite ocultar automáticamente objetos que la cámara no está viendo de manera directa, un nombre en español para este sistema es «eliminación selectiva».

En este artículo vamos a ver cómo preparar un proyecto en Unity para que se aplique Occlusion Culling, algunos detalles sobre su funcionamiento y parámetros de configuración.

Detalle Importante – En Occlusion Culling se hacen precálculos (BAKE)

Occlusion Culling funciona con los objetos que están marcados como «estáticos» en la escena y es necesario precalcular todos los datos, lo que se conocer como hacer un «bake», esto implica que cada vez que introduzcas un nuevo objeto que deba ser apagado si la cámara no lo está viendo, o si cambias la posición de uno de estos objetos, deberás precalcular nuevamente los datos para Occlusion Culling, si no lo haces algunos objetos que están detrás de cámara o detrás de algún objeto podrían no desaparecer o incluso peor, podrías tener objetos que desaparecen frente a la cámara cuando deberían permanecer visibles.

Dónde se encuentra la ventana de configuración de Occlusion Culling en Unity

La vetana de configuración de Occlusion Culling se encuentra en Window > Rendering > Occlusion Culling, en mi caso suelo colocarla junto al inspector para más comodidad, como se observa en la imagen 2.

Imagen 1: Cómo abrir la ventana Occlusion Culling en Unity.
Imagen 2: Ventana Occlusion Culling junto al inspector en Unity.

Cómo agregar objetos al sistema de Occlusion Culling

Para que un objeto pertenezca a los cálculos de Occlusion Culling y por ende desaparezca cuando la cámara no lo está viendo, hay que marcar cada objeto que el parámetro «Estático» en el inspector, como se observa en la imagen 3. En general los objetos importantes para marcar como estáticos son aquellos que tienen asignado algún tipo de Renderer, como un Mesh Renderer o un Sprite Renderer, ya que estos objetos son los que tienen una representación visual en pantalla.

Imagen 3: Propiedad «Static» de todo GameObject que permite incluirlo en el sistema de Occlusion Culling.

IMPORTANTE: Los objetos que formen parte del sistema Occlusion Culling no deben cambiar de posición en ningún momento y de hacerlo es necesario volver a calcular los datos como veremos más adelante.

Cómo aplicar Occlusion Culling en Unity

Una vez que el paso previo de marcar todos los objetos estáticos vamos a hacer un «Bake» de la información para aplicar Occlusion Culling, para esto vamos a la ventana «Occlusion» que se observa en la imagen 4, en caso de no ver la ventana consultar más arriba en este artículo.

En principio en esta ventana vamos a configurar dos parámetros, «Smallest Occluder» y «Smallest Hole», el primer parámetro hace referencia al objeto más pequeño de la escena (en unidades de la escena) que podrá obstruir la cámara y hacer que todo lo que está por detrás no se renderice, cuanto más pequeño sea este parámetro más tiempo tomarán los cálculos por lo que habrá que hacer algunas pruebas para determinar un valor apropiado, en principio se pueden considerar los valores de la imagen 4.

PARA APLICAR LOS CÁLCULOS DE OCCLUSION CULLING EN UNITY HACEMOS CLIC EN EL BOTÓN BAKE A LA DERECHA DEL BOTÓN CLEAR.

Imagen 4: Ventana Occlusion para aplicar Occlusion Culling en Unity.

El parámetro «Smallest Hole» se usa en caso de tener espacios abiertos en un modelo 3D, consideremos el ejemplo que se ilustra en la imagen 5-A, en el cual se ha aplicado Occlusion Culling con los parámetros de la imagen 4.

Imagen 5-A: Escena montada para ilustrar Occlusion Culling.
Imagen 5-B: Perspectiva de la cámara de la imágen 5-A.

Como vemos en la imagen 5-B la cámara puede ver a través del agujero, sin embargo el cubo que está seleccionado en la imagen 5-A no es visible, esto se debe a que el sistema de Occlusion Culling está considerando que ese cubo debería estar oculto, ya que el agujero más pequeño está configurado en un tamaño de 0.5 unidades de Unity (imagen 4), mientras que el agujero de la imagen 5-B tiene un ancho de 0.1 por 0.1 unidades de Unity.

Modificando un poco los parámetros teniendo en cuenta estos modelos en particular y el hecho de que deberíamos ser capaces de ver objetos a través de ese agujero, hacemos un nuevo Bake con los parámetros de la imagen 6 y como se observa en la imagen 7 ahora el sistema de Occlusion Culling no oculta ese objeto porque la cámara podría verlo a través de ese agujero.

Imagen 6: Nuevos parámetros para corregir el problema de objetos no visibles a través de agujeros.
Imagen 7: Con estos nuevos parámetros la cámara puede ver el cubo a través del agujero.

Introducción

En este artículo vemos cómo configurar un proyecto de Unity para crear compilaciones para Meta Quest 2, para esto vamos a usar el paquete «Oculus Integration SDK» para Unity el cual contiene todo lo necesario para comenzar a crear apps de realidad virtual para Oculus, además viene con modelos 3D y ejemplos útiles. Vamos a repasar cada configuración necesaria, crear una compilación y correrla en un dispositivo Meta Quest.

En el siguiente vídeo vemos cómo configurar Unity para compilar aplicación para Meta Quest (Oculus Quest 2).


Requisitos previos

Módulos Android instalados en Unity

Para poder compilar aplicaciones para Meta Quest se necesita tener instalado el motor Unity con los módulos de Android, que consisten en las siguientes tres aplicaciones:

Fig. 1: Se requieren estos módulos instalados en Unity HUB para compilar para Oculus Quest.

Oculus Quest SDK – Paquete de Oculus para Unity

Vamos a descargar e importar el paquete Oculus Quest SDK para Unity el cual viene con muchos Assets útiles que nos facilitarán la creación de aplicaciones VR para Oculus.

Crear cuenta de desarrollador para Oculus

Es necesaria una cuenta de desarrollador de Oculus para poder publicar aplicaciones en la tienda de Oculus

Oculus Developer HUB (Software auxiliar para desarrollar y publicar aplicaciones para Oculus)

Oculus Developer HUB permite reconocer el dispositivo Oculus desde el ordenador, configurarlo, acceder a las imágenes y vídeos capturados y permite publicar aplicaciones en la tienda de Oculus.

Oculus Android App

La aplicación para móviles de Oculus nos permite configurar nuestro dispositivo Oculus y activar el modo desarrollador para nuestro dispositivo.

Oculus App para PC (Opcional)

La aplicación de Oculus nos permite utilizar aplicaciones de realidad virtual para PC con nuestro Oculus, lo cual se puede hacer por cable o con la conexión AirLink.

Cómo configurar Unity para exportar aplicaciones para Meta Quest (Oculus Quest 2)

Ahora vamos a ver qué parámetros tenemos que configurar en el motor para poder exportar para Oculus, para esto creo un proyecto en blanco con el que vamos a ver todos los pasos.

Configurar plataforma Android como objetivo

Los dispositivos Oculus Quest utilizan Android como sistema operativo por lo que en primer lugar vamos a File > Build Settings y vamos a cambiar la plataforma objetivo a Android, como se observa en la figura 2.

Fig. 2: Cambiar la plataforma objetivo para la compilación.

En este caso voy a utilizar el dispositivo Oculus Quest 2, con el dispositivo conectado abro la aplicación Oculus Developer HUB para comprobar que el sistema operativo reconoce el dispositivo, si tenemos éxito deberíamos ver nuestro dispositivo como en la figura 3.

Fig. 3: Ventana de dispositivo del programa Oculus Developer HUB.

Además en Unity, en la pestaña Build Settings debería aparecer el dispositivo en el campo «Run Device», como se muestra en la figura 4. Si no vemos el dispositivo hay que volver a la parte de requisitos previos, probablemente no se ha activado el modo desarrollador o hay que activar la depuración USB.

Fig. 4: En la ventana Build Settings aparece el dispositivo conectado.

Importación del paquete Oculus SDK para Unity

Importamos el paquete Oculus SDK (link para descargar en la parte de arriba de requisitos previos).

En este caso vamos a agregar todos los archivos que vienen en el paquete.

Fig. 5: Ventana para importar el paquete Oculus SDK para Unity.

En este punto nos aparecen varios carteles con mensajes solicitándonos una acción.

En general para todos los mensajes elijo las opciones recomendadas y las más actuales, en el caso de la figura 6 le damos a «Yes», en el caso de la figura 7 a «Use OpenXR».

Fig. 6: Mensaje que aparece al importar el paquete Oculus SDK.
Fig. 7: Mensaje que aparece al importar el paquete Oculus SDK.

Puede que nos solicite reiniciar el editor Unity, en cuyo caso reiniciamos el editor.

Fig. 8: Mensaje que aparece al importar el paquete Oculus SDK.

Las figuras 9 y 10 son otro ejemplo de mensajes que pueden aparecer, aplico el mismo criterio, elijo las opciones más actuales y reinicio de ser necesario.

Fig. 9: Mensaje que aparece al importar el paquete Oculus SDK.
Fig. 10: Mensaje que aparece al importar el paquete Oculus SDK.

Al momento de grabar el vídeo y escribir este artículo, al pasar por todo el proceso de configuración del paquete Oculus SDK para Unity, luego de reiniciar el editor por última vez se abre una escena ejemplo en la que se muestra un Avatar con LipSync (sincronización de labios con el input del micrófono, figura 11). Vamos a compilar esta misma escena por lo que abrimos la pestaña Build Settings (en File) y le damos al botón «Add Open Scene» para agregar la escena abierta a la compilación que vamos a crear.

Fig. 11: Escena de ejemplo que se abre al reiniciar Unity.
Fig. 12: Se agrega la escena abierta a la compilación.

Configuración del plugin XR Management

El siguiente paso de la configuración es ir a la ventana «Player Settings», podemos hacerlo desde «Edit» y también tenemos un acceso directo desde la ventana Build Settings como se muestra en la figura 13.

Fig. 13: Acceso directo a la ventana Player Settings para configurar parámetros de la compilación.

En la ventana Player Settings vamos al elemento «XR Plugin Management» y le damos clic al botón para instalar que se observa en la figura 15.

Fig. 14: Sección XR Plugin Managment.
Fig. 15: Instalación del Plugin XR Plugin Managment.

Una vez instalado el plugin le damos clic a la casilla «Oculus» que nos aparece y esa acción hace que aparezca un nuevo elemento llamado Oculus debajo del plugin (figura 17), le damos clic al elemento Oculus.

Fig. 16: Activamos la casilla Oculus del Plugin.
Fig. 17: Vamos a la nueva pestaña Oculus del Plugin

Nos aseguramos que están marcadas las casillas Quest y Quest 2 para que se aplique el plugin a estos dispositivos.

Fig. 18: Nos aseguramos que están marcadas las casillas Quest y Quest2

Configurar Color Space apropiado

Antes de compilar una aplicación para Oculus Quest en Unity tenemos que asegurarnos de cambiar el parámetro «Color Space» que se encuentra en la ventana Project Settings, Player y dentro del menú desplegable «Other Settings», como se observa en la figura 19. Si este paso no se hace vamos a tener errores en consola al momento de compilar la aplicación.

Fig. 19: Cambio del parámetro Color Space a Linear para poder compilar para Oculus.

Compilación de aplicación de realidad virtual y prueba en Oculus Quest 2

Una vez que hemos configurado todo en el motor Unity procedemos a crear una compilación de la aplicación de realidad virtual y testearla en un dispositivo como el Oculus Quest 2, para eso vamos a la ventana Build Settings y asegurándonos que en el parámetro «Run Device» tenemos nuestro dispositivo (asegurarse de que el dispositivo esté conectado por USB o AirLink), le damos clic en Build and Run, elegimos la carpeta de destino del archivo APK y le damos un nombre, como se observa en las figuras 20 y 21.

IMPORTANTE: Si el dispositivo no aparece en el campo «Run Device» se puede hacer clic en el botón Build, exportar el archivo APK y luego instalar ese archivo por medio del software Oculus Developer HUB arrastrando el archivo APK a la ventana que se observa en la figura 3 al principio de este artículo.

Fig. 20: Creamos la compilación para Oculus dando click en Build and Run.
Fig. 21: Nombramos el archivo APK para compilar.

Cuando el proceso termina la aplicación se ejecuta automáticamente en el dispositivo Oculus Quest 2, el resultado de esto lo vemos en la siguiente imagen:

Fig. 22: Prueba de la escena ejemplo en Oculus Quest 2.

Dónde se encuentra la aplicación instalada en Oculus

Como estamos haciendo una prueba, esta aplicación de realidad virtual no fue validada por la tienda de Oculus y por lo tanto nuestro dispositivo la coloca en una sección aparte de aplicaciones con «Orígenes desconocidos», en esa sección podemos encontrar la aplicación que fue instalada desde Unity, ver figuras 23 y 24.

Fig. 23: Las aplicaciones de prueba se encuentran en la sección «Orígenes Desconocidos».
Fig. 24: Aplicación de realidad virtual para Oculus Quest 2 compilada con Unity.

Para que las aplicaciones aparezcan en la sección principal debemos subirlas a la tienda de oculus.

Introducción

En este artículo vamos a ver qué es el mínimo común múltiplo y como encontrarlo. El mínimo común múltiplo es algo que surge de comparar dos números, por lo tanto una consigna como la siguiente no tendría sentido: «Encontrar el mínimo común múltiplo de 24«. En cambio una consigna como la siguiente si puede resolverse: «Encontrar el mínimo común múltiplo de 12 y 18«, una consigna como esta puede expresarse como «m.c.m(12,18)«.

Qué es el mínimo común múltiplo de dos números

Un múltiplo común de dos números «A» y «B» es simplemente un número «C» que es múltiplo de esos números A y B, es decir que se puede tomar a C y dividirlo por A y por B y en ambos casos el resultado va a ser entero, por ejemplo 12 es un múltiplo en común que tienen los números 2 y 3, ya que 12 es igual a 2 multiplicado por 6 y también 12 es igual a 3 multiplicado por 4. Sin embargo con la misma lógica vemos que 24 también es un múltiplo común de 2 y 3, ya que 2 multiplicado por 12 es 24 y 3 multiplicado por 8 también es 24.

Aquí es donde se incluye el la palabra «mínimo» en la expresión «mínimo común múltiplo«, quiere decir que de todos los múltiplos que tienen en común dos números nos quedaremos con el que sea más pequeño, por ejemplo el mínimo común múltiplo entre 2 y 3 no es 12 ni 24, sino 6.

Cómo encontrar fácilmente un múltiplo común de dos números

Si se quiere conocer un múltiplo común de dos números enteros «A» y «B«, en general el múltiplo común más fácil de encontrar va a ser un número entero «C» tal que:

C = A . B

Al multiplicar ambos números por definición vamos a obtener un múltiplo común a ambos, ya que si se toma el número C y se lo divide por A se obtiene B, y si se toma el número C y se lo divide por B se obtiene A, ambos números enteros.

Esta operación suele ser muy práctica para la suma de fracciones en las que se necesita encontrar un denominador común a los denomidores de las fracciones que se quieren sumar.

A veces este múltiplo común será el mínimo común múltiplo a ambos números, como en el ejemplo anterior en el que m.c.n(2,3) = 6, pero no siempre es así como veremos en el siguiente ejemplo.

Cómo encontrar el mínimo común múltiplo de dos números

Para encontrar el mínimo común múltiplo de dos números hay un procedimiento que consiste en tomar cada número y expresarlo como una multiplicación de sus divisores primos, es decir números primos que al dividir por ellos al número inicial el resultado es entero, esto se explica en detalle en el artículo de divisibilidad, por ejemplo los números 12 y 18 pueden expresarse de la siguiente manera:

12 = 1 . 2 . 2 . 3

18 = 1 . 2 . 3 . 3

Tomando estas descomposiciones, para encontrar el mínimo común múltiplo se construye un nuevo número que será el resultado de la multiplicación de los números primos que más veces aparezca en ambas descomposiciones.

El número 1 aparece una única vez en cada descomposición, por lo que se coloca un 1. Luego el número 2 aparece dos veces repetido en la descomposición del 12 por lo que al 1 lo multiplicamos dos veces por 2, finalmente el número 3 aparece dos veces repetidos en la descomposición del número 18, por lo que a la expresión anterior la multiplicamos dos veces por el número 3, resultado en lo siguiente:

1 . 2 . 2 . 3 . 3 = 36

El resultado de esta operación es el mínimo común múltiplo de 12 y 18, es decir:

m.c.m(12,18) = 36

Introducción

En este artículo vamos a ver qué es el máximo común divisor y como encontrarlo. En primer lugar es importante destacar que el máximo común divisor es algo que surge a partir de comparar dos números, por lo tanto una consigna como la siguiente no tendría sentido: «Encontrar el máximo común divisor de 24». En cambio una consigna como la siguiente si puede resolverse: «Encontrar el máximo común divisor de 12 y 24», la cual podemos expresarla como «m.c.d(12,24)».

Cómo encontrar el máximo común divisor de dos números

La idea de encontrar el máximo común divisor de dos números es tomar cada número y hacer una lista de todos sus divisores, es decir números que al dividir por ellos el resultado es entero, esto se explica en detalle en el artículo de divisibilidad, conociendo los divisores de ambos números se comparan y se elige el divisor más grande que tengan en común.

Ejemplo

Encontrar el máximo común divisor de 12 y 24.

Comenzamos listando los números que son divisores de 12 y de 24:

divisores de 12: {1, 2, 3, 4, 6}

divisores de 24: {1, 2, 3, 4, 6, 8, 12}

Comparando ambas listas vemos que el máximo común divisor de 12 y 24 es el números 6:

m.c.d(12,24)=6

Introducción

Un número primo es un número que solo es divisible por si mismo y por 1, algunos ejemplos de números primos son el 2, 3, 5 y 7.

Cuando un número no es primo se llama «compuesto» y es posible expresar este número como una multiplicación de sus divisores primos. Esto es lo que se conoce como «descomponer un número en sus factores primos».

Ejemplo 1

El número 8 no es un número primo, para expresar el número 8 como una multiplicación de factores primos comenzamos buscando los divisores de 8, los cuales serían el 1, el 2 y el 4 (para mas información sobre esto consultar el artículo sobre divisibilidad), conociendo los divisores, podemos expresar al número 8 como:

8 = 2 . 4

Pero a su vez el 4 puede expresarse como un producto de factores primos, es decir como 2 multiplicado por dos, por lo tanto:

8 = 2 . 4 = 2 . 2 . 2 = 23

Ejemplo 2

El número 42 no es un número primo, por lo tanto podemos expresarlo como una multiplicación de factores primos, comenzamos dividiendo el número a la mitad para expresarlo de la siguiente manera:

42 = 2 . 21

El número 21 a su vez tampoco es un número primo, lo expresamos como una multiplicación de sus divisores y finalmente obtenemos lo siguiente:

42 = 2 . 21 = 2 . 3 . 7

Introducción

En este artículo vamos a ver qué es la divisibilidad, cuándo dos números son divisibles y algunos criterios de divibilidad entre números.

Un número natural es divisor de otro número cuando el resultado de la división del primero por el segundo es exacta (sin decimales).

Por ejemplo 2 es divisor de 8 porque 8 divido 2 es exactamente 4, en cambio 3 no es divisor de 8 ya que 8 dividido 3 es igual a 2.666.

Los números primos son números que no tienen otros divisores además de el propio número y el 1.

Criterios de divisibilidad

Existen unos criterios para saber rápidamente cuándo un número es divisible por 2, 3, 4, 5, 9 y 10, es bastante útil conocer por lo menos la divisibilidad por 2, por 5 y por 10, porque esto nos ayuda a hacer cálculos mentales.

Cuándo un número es divisible por 2

Un número es divisible por 2 si su última cifra es par, es decir si el número termina en 0, 2, 4, 6 u 8. Por ejemplo los números 24, 38 y 14 son divisibles por 2

Cuándo un número es divisible por 5

Un número es divisible por 5 si termina en 0 o en 5. Por ejemplo los números 30, 45, 100 y 115.

Cuándo un número es divisible por 10

Un número es divisible por 10 si termina en 0. Por ejemplo los números 100, 300, 1200, etc.

Se puede conocer fácilmente el resultado de dividir por 10 ya que al hacerlo se elimina el cero en la posición de la unidad, por ejemplo si tomamos el número 1000 y lo dividimos por 10 el resultado es 100, otro ejemplo: si tomamos el número 1230 y lo dividimos por 10 el resultado es 123. En el caso de que el número no termine en 0 y se lo divide por 10, lo que se hacer es colocar el punto decimal una cifra hacia la izquierda, por ejemplo 123 dividido 10 es igual a 12.3.

Conocer esto permite agilizar mucho los cálculos mentales.

Cuándo un número es divisible por 3

Sabemos que los números 3, 6 y 9 son divisibles por 3, teniendo en cuenta esto, un número es divisible por 3 si la suma de sus cifras es divisible por 3, por ejemplo el número 213, si sumamos sus cifras (2+1+3) el resultado es 6, el cual es divisible por 3, por lo tanto 213 es divisible por 3.

Lo interesante de esto es que este criterio se puede aplicar de forma recursiva, por ejemplo si queremos saber si el número 67311 es divisible por 3, aplicamos el criterio sumando sus cifras (6+7+3+1+1) y el resultado de hacer esto es 18, luego para saber si 18 es divisible por 3, nuevamente podemos aplicar el criterio sumando sus cifras (1+8) lo que dan como resultado 9, que sabemos que es un número divisible por 3, en consecuencia el número 67311 es divisible por 3.

Cuándo un número es divisible por 4

Un número es divisible por 4 si sus dos últimas cifras forman un número divisible por 4, por ejemplo 108 y 3016, por lo tanto la tabla de multiplicación del 4 nos ayuda con esta tarea.

Otro criterio es el siguiente, un número es divisible por 4 si se cumplen dos condiciones, la primera es que sea un número par, es decir que termine en 0, 2, 4, 6 u 8 y la segunda condición es que al dividir el número por 2, el resultado también es un número par. Por ejemplo, el número 188 es par y además la mitad de 188, es decir 94 también es un número par, por lo tanto el número 188 es divisible por 4.

Tsunami

Sinópsis

Eres un trabajador vestido con traje de osito que se encuentra haciendo publicidad en la calle cuando de pronto se avisora un tsunami en el horizonte y la ciudad comienza a ser arrasada. Con mucho miedo buscas refugio entrando en un edificio, pero esto es solo el principio, no estarás a salvo hasta que llegues a la cima del edificio.

Cómo jugar

Controla al personaje con las teclas WASD o las flechas de movimiento y pulsa ESPACIO para saltar. Pulsa E para levantar una caja y poder moverla. Recoge las llaves que desbloquean las puertas para continuar el ascenso.  Llega hasta la terraza.

Desarrollado para la Game Jam Ludum Dare 50 con el tema "Retrasar los inevitable" por:

MARTÍN HEINTZ

MUSIC COMPOSER

GAMEDEVTRAUM

UNITY DEVELOPER

STEFF

UI/UX DESIGN

ÁLVARO

GAME DESIGN

Salir de la versión móvil
Secured By miniOrange