Jorge Vallejo Blog

Blog del creativo, ilustrador y profesor de videojuegos Jorge Vallejo

Category: unity

Proyecto: Recuperación de huerta, del mundo real a Unreal 5

¿Puede el mundo digital ser útil en el mundo físico? ¿Y si llevamos la huerta al mundo del videojuego?

La tecnología detrás de Unreal nos permite recrear la realidad hasta el extremo de hacerla prácticamente indistinguible de una fotografía, por eso Unreal ya se usa en estudios de arquitectura que deben presentar Renders de como quedará el proyecto, para ir mas allá de un simple plano, las recreaciones digitales son cada vez más realistas y la distancia entre el concepto digital y su realización real es cada vez menor.

Recreación en Unreal https://www.cosasdearquitectos.com/

Aun que mi especialidad es el mundo del videojuego, tengo el conocimiento suficiente para poder hacer una aproximación del mundo real al digital, lo suficientemente buena, para que me sirva a la hora de tomar decisiones.

Recreando el invernadero en 3D
Lo primero que hice fue tomar medidas de cada uno de los arcos del invernadero, después los recree usando Blender simplemente cree un arco y utilizando la herramienta Array generé los demás.

Para la cobertura de plástico utilice un plano, al cual di propiedades de simulación de tela usando Cloth, y a los arcos les di detección de colisiones con Collision

Después simule la física , para obtener el resultado del plano envolviendo los arcos

En algunos puntos el plástico se metía por dentro de los arcos, tras hacer la simulación remodele utilizando las herramientas de esculpido de Blender, principalmente la de inflado y la de suavizado.

Finalmente me lo lleve a Unreal5 a un nivel vacío y ajuste los materiales. Para el suelo de momento estoy usando un plano, pero le meteré un landscape para que sea más fácil la colocación de las plantas y recrear otras partes de la huerta.

Invernadero 3D en Unreal 5

Se ve bastante vacío, pero va cogiendo forma, lo que me interesa de este proyecto es conjugar la realidad con lo digital, por lo que iré incorporando elementos reales como el camino que va al invernadero, marcado de lindes etc,

Cesta de pan, en Unreal Engine

Homenaje al cuadro del mismo nombre de Salvador Dali, creado con el motor de videojuegos Unreal Engine 5, los modelos 3D son de Quixel, me resulto muy curioso pensar en como Dali había realizado la composición, en su cuadro el pan esta dado la vuelta , a mi sin embargo me interesaba más mostrar la miga con sus agujeros

La magia de la composición esta en el fondo negro que hace que toda nuestra atención se centre en la cesta, es muy difícil recrear la iluminación exacta del cuadro puesto q la luz esta pintada y reinterpretada, al final opte por colocar las luces lo más parecido posible, colocando una luz trasera que aisla parte de la mesa, sin mas sentido que el artístico.

Detalle del cuadro “Cesta de pan” de Salvador Dali

Creando una bombilla en Unreal 5, encendido y apagado en c++

Unreal 5 y el sistema de iluminación en tiempo real Lumen, nos permiten tener materiales con emisión que no solo van a crear un halo suavizado , sino que realmente iluminan.

Para ello tendremos que crear un material con Emission, el que mejor resultado me ha dado es Surface, y convertirlo en parámetro quedando:

Ahora viene algo que al principio parece extraño pero que luego tiene toda su lógica, y es crear dinámicamente una copia del material , modificarlo y reasignarlo.

Es necesario crear una copia ya que si se pudiera, creo que Unreal no deja manipular el material directamente, estaríamos modificando las propiedades del material en todos los objetos que lo tuvieran, por lo que un cambio en el emissor cambiaria todos y normalmente lo que se busca es tener control sobre cada uno

  1. Obtener copia dinámica del material, para ello tenemos que fijarnos en que índice está, lo ideal es crear una variable para poder cambiarlo
 DynMaterial = UMaterialInstanceDynamic::Create(LampMesh->GetMaterial(indexOfMaterial), this);

Donde DynMaterial es UMaterialInstanceDynamic* DynMaterial;

2. Modificar los parámetros, aquí es muy importante que el nombre del parámetro y el que vamos a pasar coincidan, de nuevo crear una variable ParamEmissionName (FName ParamEmissionName = FName(TEXT(“EmissionIntesity”));) para el nombre

DynMaterial->SetScalarParameterValue(ParamEmissionName, 0.0f);

3. Por último reasignar la copia del material al elemento, sino se habrá creado la copia pero no tendrá dueño, LampMesh es mesh del objeto que contiene los materiales definido como UStaticMeshComponent* LampMesh;

 LampMesh->SetMaterial(indexOfMaterial, DynMaterial);

Crear un videojuego para móvil V con Unity: Construir nivel

Continuamos con la recreación de Duet para móviles Duet con Unity y C# En este vídeo trabajaremos:

-Creando un constructor para el nivel

– Instanciando GameObjects

– Uso de bucles para posicionar

– Uso de aleatorios

– Mejorando el constructor con un sistema codificado

Codificar la información es crear un código para relacionar datos, así podemos utilizar matrices bidimensionales para crear las piezas

Crear un videojuego para móvil II con Unity: Mecánicas de giro

En el segundo vídeo de la serie de recreación de un videojuego para moviles android con Unity veremos como crear mecánicas de giro, que serán la base de todo el juego.

El reto:

El jugador debe tener un reto al que enfrentarse, en este caso ponemos aprueba su velocidad y su capacidad de calculo para que las bolas no choquen con los objetos, frente a otros juegos de móvil donde desplazamos el elemento principal, aquí lo rotamos, al existir dos bolas complicamos el movimiento, ya que tendremos que movernos hacia la derecha y hacia la izquierda.

En este tipo de videojuegos minimalistas para móviles, es importante tener una mecánica clara, bien definida y sencilla de entender, la complejidad del juego vendrá de un factor externo al jugador: los niveles.

En este vídeo tutorial trabajaremos diferentes elementos base de Unity para la recreación de un videojuego para móvil android , tipo Duet:

– Colocación de los distintos elementos

– Diseño base usando solo recursos de Unity

– Diferenciar tiempo de juego de tiempo de edición

– Buenas practicas de programación [SerializeField]

– Mecánicas de giro

– Programación de el giro

Crear un videojuego para móvil I con Unity

He creado una serie de vídeos Unity Do el camino del videojuego donde veremos paso a paso , y explicando cada parte cómo crear un videojuego para móvil, concretamente para la plataforma android desde 0 y utilizando Unity y C#

En este vídeo recrearemos el videojuego para móviles Duet con Unity y C# :

-Cómo preparar un proyecto de Unity para exportarlo a Android

-Configuración del proyecto para Android

-Creando un GameManager

-Creación de los controles con Event Trigger

-Comunicación GameManager y Event Trigger

-Comprobación de los eventos por consola

Lo interesante de recrear un proyecto es ir desglosando cada paso, tratando de crear una buena arquitectura en el control del juego e ir aumentando su complejidad progresivamente, trataremos de utilizar las herramientas más adecuadas , por ejemplo utilizaremos un tipo de collection menos conocido como queue para gestionar los textos, o usaremos AudioMixer para el control de sonidos.

No te pierdas este y otros contenidos creados para enseñar a todo el que lo desee a diseñar y programar videojuegos y suscribirte al canal.

https://www.youtube.com/channel/UChMzt1jSTzii0hoY1ABHPpQ

Nace Unity Do , el camino del videojuego

Llevaba un tiempo pensando en crear un canal de youtube donde volcar mi conocimiento sobre programación y Unity, como docente de videojuegos, hay muchas cosas que me dejo en el tintero en las clases, por falta de tiempo.

Unity a sufrido constantes mejoras en los últimos años, algunas de las cuales se han vuelto muy interesantes pero demasiado especificas , por ejemplo el nuevo sistema para animación 2D, por eso en el canal Unity Do, puedo explorar los nuevos paquetes, las actualizaciones, assets y tambien hacer hincapie en la programación y el diseño de videojuegos.

¿Por qué es necesario crear un canal como Unity Do?

Como su nombre indica UnityDo es un guiño a las artes marciales, como Judo, Taekwondo , Karate Do.. en ese caso el do significa camino, una filosofia de entrenamiento y mejora continua, que es precisamente la quiero inculcar en el canal.

Por lo tanto Unity Do, es el camino de Unity, el camino del videojuego, y mi intención es conseguir fomentar la programación y el desarrollo de videojuegos en castellano, ya que hay muy buenos canales en ingles, pero creo que en español , que tambien les hay muy buenos, nos falta ser un poco mas desprendidos con el conocimiento e ir más alla de lo basico.

Como en cualquier otro proyecto que uno se embarca debe aspirar a lo máximo, mi reto es conseguir tener un dojo virtual, una comunidad de seguidores, que hayan pasado del blanco al negro, de apenas tener un concomiendo a ser capaces de crear grandes videojuegos.

Escenas de paisajes en Unity

Crear escenas de paisajes es una buena practica para entender como posicionar elementos, como crear una composición y como funcionan las luces en Unity, trabajando con un directional light y unas pocas luces mas para matizar es suficiente.

Un protocolo de trabajo, sin utilizar terrains, que serán explicados en otro articulo

Gran Capitán creado en Unity3d
Escena creada con Unity

1) Cambiamos el modo de Color Space a linnear en File-> Build Settings ->Player Settings ->Other Settings -> Linnear

2) Metemos un skybox de un cielo

3) El skybox nos dará una definción aproximada de la hora del día, amanecer, atardecer etc

4) Colocaremos la rotación del directional light basándonos en la hora aproximada del día, si es de noche podemos dar una luz azulada tenue

5) Importar las texturas y crear los materiales colocando sus mapas

6) Importar diferentes modelos para crear una composición general (Montañas, rocas, arboles

7) Colocar los objetos creando la composición, se puede importar una referencia y meterla en un plano, o usar Cinemachine >Storyboard

8) Creada la composición los gameobjects serán marcados como static

9) Los objetos complejos se aumenta su escala en el lightmap en el Mesh Renderer ->Lightmap Settings -> Scale Lightmap (Para que aparezca el objeto tiene q ser static)

10) Si queremos meter reflejos , creamos un Reflexion Probe , y lo colocamos en los objetos que tengan propiedades metalic , specular o roughness

11) Colocamos la cámara creando el cuadro de la composición

12) Bakeamos ->Lighting->Settings->Generate Lighting

13) Podemos meter como máximo un par de point light para crear ambientaciones

14) Corregimos iluminaciones y posiciones

15) Volvemos a Bakear