Saltar navegación

Defensa Mayo 25 - ARNM - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 21 de mayo de 2025 por Daniel M.

3 visualizaciones

Grabación de defensa de proyecto final.

Descargar la transcripción

Bienvenido a tu presentación y defensa del proyecto final. Bueno, has comparecido a la hora acordada, así que vamos a proceder a esta presentación. 00:00:00
Aunque es información con la que ya contáis de antemano, simplemente recordarte que tu presentación consta o se prevé que sea de un máximo de 15 minutos. 00:00:10
Ya te indiqué que a los 15 minutos no voy a detener, no voy a intervenir hasta que no llegue a unos 20 minutos, etc. 00:00:24
Pero bueno, se espera que más o menos ocupe ese tiempo. 00:00:31
Y posteriormente habrá una ronda de preguntas, algunas que ya tengo de los compañeros que han visto tu entrega. 00:00:34
y mías que surjan a partir de la defensa también, de la presentación 00:00:40
y que bueno, dependerá un poco pero suele ser de alrededor de 10 minutos 00:00:45
aparte de eso pues 00:00:49
si tienes alguna duda previa pues la resolvemos ahora mismo y si no pues 00:00:52
cuando me digas vemos que hora es y 00:00:56
empiezan a contabilizar esos 15 minutos 00:00:59
Empezamos ya 00:01:02
vale pues te voy a marcar a las 18 y 6 que va a cambiar en breves 00:01:03
cuando quieras puedes empezar bueno me pregunto ante que nada porque no sé quién más va a ver 00:01:08
esta presentación soy en un aula estoy presentando el proyecto y bueno es un multiproyecto que he 00:01:16
resumido en una solo como la extensión del mismo es más o menos grande voy a sentar en la parte 00:01:23
más que me parece más interesante de explicar para esta presentación el proyecto nace 00:01:30
Como una necesidad de integrar controles. 00:01:38
Originalmente era para integrar controles virtuales dentro de aplicaciones. 00:01:42
En este caso fue cuando se propuso la tarea de Dane, del Saxon, que era un granal que se movía y tal. 00:01:47
Le presenté a algunas personas el juego y la mayoría de ellas me pidieron una versión que fuese con controles, ¿vale? 00:01:53
Entonces, yo no la quería hacer con controles porque no era la idea, pero bueno. 00:02:03
Me metí en el tema de integrar los controles y ahí me di cuenta que Unity no viene con unos assets o con una forma de implementación fácil para una persona que no sabe de este mundo para que se pueda integrar, para generar rápidamente una aplicación para WebGL o Android. 00:02:06
que debo aclarar yo yo no sabía y yo he aprendido aquí en el curso y yo me esperaba que este tipo de 00:02:27
controles fuesen nativos como yo vengo del mundo de visuales y qué cosa ha sido donde está casi 00:02:34
todo hecho bueno no casi todo pero la mayoría de las cosas tú colocaste el control y ya tienes una 00:02:39
aplicación funcional con la medida que necesitas y es cierto que perdón me faltó esa parte entonces 00:02:44
Entonces lo que hice fue empezar a investigar porque había que hacer los controles de cero, había que hacer desde la lógica de todo, que por un lado está bien, pero para quien no sabe, pues se le hace cuesta arriba todo este tema. 00:02:54
voy a resumir un poco 00:03:10
porque realmente el proyecto 00:03:14
que si bien empezó con todo lo que 00:03:15
el control visual y el control electrónico 00:03:17
derivó 00:03:20
después en la necesidad de que cuando yo 00:03:21
en los controles virtuales quise 00:03:23
darle más funcionalidad 00:03:25
integrar teclado, integrar mandos 00:03:27
y todo para que funcionase todo junto 00:03:29
y me di cuenta que 00:03:31
estaba metiendo peras con manzanas 00:03:33
o sea una cosa era 00:03:36
todo lo que es la interfaz visual 00:03:37
Era un mando más, era un input más, pero lo que yo quería hacer realmente era un controlador de varias interfaces. De ahí salió la necesidad de generar una clase que reemplazase lo que era el input manager que viene con Unity. 00:03:39
De ahí dejé aparcado todo lo que ya tenía hecho de los controles virtuales y me lancé a generar esta implementación. 00:03:59
No con el objetivo inicial de reemplazar completamente el Input Manager, pero a medida que estuve aprendiendo cosas, me di cuenta que sí era factible y era conveniente en algunos casos hacerlo. 00:04:12
Porque me daba, como yo lo estaba haciendo, yo me proveía de las funcionalidades que me faltaban del Input Manager. 00:04:25
¿Vale? Entonces, llegando a este punto, empecé a integrar varias cosas. 00:04:31
De hecho, voy a ejecutar la demo que tengo aquí y a medida que la voy ejecutando voy a ir explicando cosas que están todas integradas. 00:04:39
La demo, cuando empieza... 00:04:47
De hecho, perdón, voy a... 00:04:52
No voy a arrancar la demo en el orden que corresponde porque no voy a ir donde me interesa comentar. 00:04:54
Aquí son los contrarreactores. 00:05:00
Cuando... 00:05:05
es el concepto mío de lo que es un mando y lo que yo quería era integrar varios distintos 00:05:12
distintos tipos de entradas que se transformarán en un solo gamepad y no tener que estar yo como 00:05:32
desarrollador y luego el que la persona que esté utilizando herramientas que no esté pensando en 00:05:39
cómo pueden acceder a tal o cual de los de los tipos de los dispositivos para poder implementar 00:05:46
los ojos yo quería hasta ver todo eso en un tiempo en una clase entonces de aquí empezó a surgir toda 00:05:53
la idea bueno ya había surgido ya ya se empezó a implementar de hecho esto tenía otra implementación 00:06:02
que he quitado que en el futuro pretendo añadir por ejemplo añadir controles de giro controles 00:06:07
de voz etcétera etcétera y todo transformarlo siempre en un gamepad que sea estándar 00:06:13
bueno por ahí va todo lo del concepto ahora lo que voy a hacer es ejecutar la demo desde el diálogo 1 00:06:23
de la primera pantalla. La demo consta de 4 módulos. Nuevamente quito el sonido. La demo consta de 4 módulos. El primer módulo, realmente que fue el de los controles virtuales, 00:06:31
derivó de ahí el módulo que va a ser el X-Input, que es el Input Manager, el reemplazo. Y voy a empezar por el último de los módulos que creé, que es el de la presentación. 00:06:55
Y este módulo realmente lo creé porque necesitaba yo mostrar la demo de una manera un poco interactiva, porque no ser un juego no es una cosa evidente lo que estás haciendo, entonces necesitas explicarte las cosas que están sucediendo. 00:07:07
Esto no es una demo para un usuario final, para un jugador, es una demo para un desarrollador, para el que entiende lo que está pasando por detrás. 00:07:23
El primer componente que voy a mostrar aquí va a ser el de esta interfaz que parece un diálogo de un juego RPG, ¿vale? 00:07:31
Básicamente se consta de... Aquí vamos a ver un poco el código para entender qué está haciendo. 00:07:43
Si ves, sale un personaje en la batalla. 00:07:48
Bueno, incluso lo voy a silenciar, ¿vale? 00:07:54
Bueno, lo voy a bajar. 00:07:57
Vale, este. 00:08:05
vale, en principio 00:08:05
como necesito también he explicado una parte que es 00:08:08
de la demo, que son los sólidos 00:08:09
por eso lo voy a dejar, después lo voy a quitar 00:08:11
entonces, esta demo 00:08:13
lo que tiene es 00:08:15
hablando de una forma muy 00:08:17
resumida, he creado una 00:08:20
lista, es una lista 00:08:22
con frases, que son las que van apareciendo aquí 00:08:24
que como se pueden ver también se pueden 00:08:26
formatear, etcétera 00:08:28
encienden HTML 00:08:29
para presentarlo, porque es un componente 00:08:32
text 00:08:34
ahora mismo se me ha ido el nombre 00:08:35
pero el componente este que se utiliza 00:08:37
en Unity 00:08:40
y lo que hace 00:08:41
básicamente es esto, escena 1 00:08:44
para generar los diálogos 00:08:46
el componente 00:08:49
es muy simple, voy a generarlo de esta manera 00:08:50
¿por qué quiero mostrar esto? 00:08:52
porque aparte de los textos 00:08:54
cada línea 00:08:56
cada vez que hago un ente 00:08:58
un siguiente va mostrando una de estas líneas 00:09:00
Además de esto, tiene la facilidad 00:09:03
Que se lo he añadido 00:09:05
Después de estar dando una vuelta con esto 00:09:06
De que yo puedo añadir 00:09:09
Estados de avatar 00:09:11
Los avatares son estos que aparecen aquí 00:09:12
Estos avatares dentro del componente 00:09:14
Se añaden 00:09:17
Aquí dentro de una lista de avatares 00:09:19
Que son imágenes 00:09:21
Entonces 00:09:22
Los avatares 00:09:23
Puedes indicar que avatar quieres que aparezca 00:09:25
De esta manera, con un índice 00:09:29
O también se lo puedes indicar con 00:09:31
un texto. El texto lo que va a hacer, por ejemplo, este, que está diciéndole, quiero que esta línea 00:09:32
me aparezca con una avatar de Smile, de Swambrisa. ¿Cómo él decide cuál es Smile? Simplemente porque 00:09:39
va a buscar dentro de la lista de avatares, el que ponga la palabra Smile va a sacar una sublista 00:09:47
y de esas va a sacar una al azar y esa es la que va a mostrar. Entonces, con eso te permite no estar 00:09:51
repitiendo, sino que saca un poco, de alguna manera, un poco al azar los avatares que quieres. 00:09:56
También tiene, estoy explicando muy rápido lo que es esto porque no es lo importante, ¿vale? No es lo importante del proyecto. También tiene aquí un avatar máximos. Este índice indica hasta qué avatar se va a tomar como un avatar por defecto. 00:10:02
Este está indicando que es el 2. 00:10:20
Entonces, el 0, el 1 y el 2, cuando yo le indique un avatar 00:10:22
o indique uno que sea inválido, 00:10:25
él va a tomar uno de estos tres por defecto. 00:10:28
Entonces, para que no se caiga el programa, 00:10:30
para que siga avanzando, vamos a eso. 00:10:31
¿Vale? 00:10:34
Básicamente era eso. 00:10:35
Y la otra particularidad que tiene, 00:10:36
bueno, tiene más funciones, pero la otra es esto, 00:10:39
que le puedo dar una llave, una key a cada uno de los diálogos. 00:10:41
¿Para qué uso esto? 00:10:44
Cuando está en ejecución el código, 00:10:45
por ejemplo este que se llama dentro del de por ejemplo estoy preguntando constantemente por el 00:10:47
diálogo en que en qué línea y con la que sacó es para esto lo puedo sacar por un número lo puedo 00:10:56
sacar por un texto y en función de la que estoy presentó a una cosa es un evento básicamente vale 00:11:03
entonces tengo dos tipos de eventos lo que estar que cuando entra en el texto en el diálogo y el 00:11:10
page change que cuando cambia ya sea para adelante para atrás porque además este componente tiene 00:11:18
ahora no lo hace porque no lo tengo interactivo que vaya utilizando el botón supuestamente me 00:11:26
aparece un botón previo yo podría volver atrás voy a seguir con la demo porque esto básicamente 00:11:39
explicado lo que hace este componente el sonido bueno cierto tiene una característica más 00:11:48
un poco lo que está aumentando 00:11:56
los avatares que son estos que están cargados que si lo colocas también en el índice si aquí 00:12:03
yo por ejemplo en los avatares como el índice negativo simplemente así en vez del 5 que va 00:12:09
ser el índice 5 de los que están aquí si es un menos 5 lo único que va a ser es la 00:12:15
según frío es para ir variando un poco y por último tiene dos componentes más este 00:12:20
que es el sonido voy avanzando que los sonidos aquí está jugando con los pitch que son estos 00:12:28
de aquí el sonido es uno solo aunque podría tener una lista de sonido vale pero yo he jugado 00:12:35
solamente con uno y siempre estoy cambiando el pitch para arriba y para abajo y aquí tengo un 00:12:40
mi límite cuanto más arriba y cuanto más abajo puedo variar entonces con eso voy generando 00:12:45
distintas voces si lo coloco más abajo en una voz más grave será así y lo otro es que voy a continuar 00:12:49
y bueno no voy a volver atrás pero también tiene una lista de música que se ejecuta 00:13:02
automáticamente y un fade como se ha podido ver cuando entra y cuando sale en la escena 00:13:06
tiene un fake que le indicó el color así es lo que va seguimos con los controles virtuales que 00:13:11
es la segunda demo que tiene este problema voy a ir avanzando los controles virtuales como he 00:13:16
dicho se componen el x gamepad que yo he creado es este esto es lo que internamente estoy 00:13:22
controlando que yo estoy representando como analista para ver los valores entonces la como 00:13:29
lo reemplazo yo con respecto al input manager. El input manager tienes un get down, get down, 00:13:35
bueno, tienes un serie de métodos que aquí tienes sus equivalentes, pero tienen más 00:13:41
datos. Por ejemplo, el digital. Aquí, ahora voy a explicar por qué tiene un digital o 00:13:46
un análogo y un vector, ¿vale? Pero el get down, por ejemplo, aquí se puede ver por 00:13:51
una propiedad que se llama isPreset, pero también en código. Estoy saltando un poco 00:13:56
lo que quería comentar pero 00:14:03
este es mi clase 00:14:04
¿vale? esta es una variable que está llamando mi clase 00:14:11
y este 00:14:13
es un método que yo he copiado 00:14:15
el mismo nombre que lo que tiene el input manager 00:14:17
¿vale? para que sea fácil de implementar 00:14:19
a quien lo quiera implementar en su 00:14:21
código, para que no sea un cambio muy grande 00:14:23
lo único que voy cambiando es que yo 00:14:25
tengo una serie de botones 00:14:27
y ejes que están con 00:14:28
un nombre definido, que son los que están dentro de mi 00:14:31
x gamepad 00:14:33
¿vale? entonces siempre vamos 00:14:35
a llamar de la misma manera el botón Start, el botón 00:14:37
Up, el botón Home, 00:14:39
el Stick, que son para los 00:14:41
Stick analógicos, etc. 00:14:42
Estos son los componentes 00:14:45
que están dentro y 00:14:47
lo bueno es que no importa si tú lo manejas 00:14:49
desde aquí o puedes manejar desde un 00:14:51
... 00:14:52
No sé si está encendido. 00:14:55
No sé si es todo. 00:14:58
No, y acá justo no funciona. 00:15:01
Bueno, lo estoy volviendo 00:15:02
a encender, a ver si... 00:15:08
al mando. 00:15:11
Lo que quería decir es que no importa desde dónde lo marques. 00:15:11
Ah, no, perdón, perdón, perdón, me estoy mirando porque estoy 00:15:15
mostrando los controles virtuales, 00:15:20
no estoy mostrando todavía los demás. 00:15:21
Estos son todos controles virtuales, ¿vale? 00:15:23
Entonces, aquí se puede ver cómo recubre los valores. 00:15:25
Hay algunas características especiales, 00:15:30
como, por ejemplo, lo que es la emulación de controles 00:15:32
analógicos, que si yo muevo, arrastro, 00:15:35
aquí se puede ver que en el analógico va cambiando el 00:15:38
valor, ¿vale? 00:15:40
Yo puedo controlar qué tan largo es el arrastre que tiene, todo eso. 00:15:41
Puedo controlar que se arrastre solamente en vertical o en horizontal. 00:15:45
Una serie de propiedades que le he añadido a los controles para que emulen lo mejor posible lo que es un mando real dentro de lo que es la pantalla. 00:15:48
Aquí estoy explicando lo de los controles horizontales, verticales. 00:15:58
Voy a saltarme un poco porque esto más o menos se entiende. 00:16:03
La implementación de los sticks son sticks dinámicos que van apareciendo en pantalla en función de donde presionas. 00:16:06
Que, por cierto, aquí yo estoy ejecutando en PC. 00:16:13
En estricto rigor, en PC no deberían aparecerme los controles. 00:16:17
Yo los estoy forzando porque en PC no tienes... 00:16:20
Si estoy con un ratón, estoy con un ratón en el control SS. 00:16:22
Yo los estoy forzando y por eso aparecen, ¿vale? 00:16:26
Entonces, como digo, tienes dos tipos de controles y además tienes el botón L3 y R3 00:16:28
que no lo había mencionado, que ahora lo voy a mencionar 00:16:35
en la demo 00:16:37
que lo haces con doble clic 00:16:38
bueno, ya le he pasado, voy a seguir avanzando 00:16:40
los efectos, vale 00:16:43
los controles 00:16:46
tienen unos efectos básicos para poder 00:16:49
utilizar, que lo, bueno, ahora mismo 00:16:51
la demo te muestra que no 00:16:53
tienes, ninguno habría habilitado 00:16:55
el web, he echado 00:16:57
le agregué una pequeña sombra 00:16:58
todo es controlable y todo desde el 00:17:01
desde el 00:17:03
desde el inspector 00:17:05
¿vale? que aquí voy a mostrar una cosa 00:17:09
que antes, que me parece interesante mostrarla 00:17:11
bueno, tiene aquí los efectos de 00:17:13
presionado, por ejemplo este que rebote 00:17:15
que parezca una burbuja, ese es el track 00:17:17
por cierto, aquí voy a 00:17:18
detener un momento la demo para mostrar algo 00:17:21
estoy en la 3 00:17:23
bueno, en realidad 00:17:24
la misma 1 me vale 00:17:30
porque está limpia, por eso lo estoy 00:17:32
cargando aquí 00:17:34
Una cosa que no he explicado yo en la memoria, no la he explicado, 00:17:35
que me parece interesante explicarla aquí, es que para poder implementar 00:17:47
todas las funcionalidades de los controles en el inspector, 00:17:50
he tenido que programar el inspector, que me parece interesante también hacerlo. 00:17:53
Y aquí, por ejemplo, son tantas las funcionalidades que tienen los controles 00:17:59
que aquí se me hacía un panel interminable de LED. 00:18:02
Lo que he hecho yo es sintetizar los controles para que, por ejemplo, aquí se haga aparecer el A, pero todas las propiedades están dentro cuando yo las marco aquí y están divididas en segmentos según su funcionalidad. 00:18:07
Me explico. Cuando la abrigo, esto es simplemente para mostrar la propiedad que tiene ahora. Aquí yo lo podría colocar. Lo que sea. Podría incluso, para cambiarle una imagen, yo no he querido complicarme la vida, vas aquí al botón A y le cambias la imagen dentro del control aquí. 00:18:20
entonces 00:18:40
lo que estaba comentando 00:18:42
dentro del panel 00:18:44
yo tengo dividido por funcionalidades 00:18:46
ahora mismo funciona con un botón digital 00:18:48
que tú presionas y ya está 00:18:50
pero el mismo control 00:18:51
y lo he comentado ahí en la memoria 00:18:54
y la DEMA también lo explica 00:18:57
todos los controles que están definidos 00:18:58
del mando 00:19:01
todos los controles 00:19:02
son el mismo control 00:19:04
simplemente con las propiedades cambian su funcionalidad 00:19:05
me explico 00:19:08
Tenemos aquí que este funciona como un botón digital 00:19:09
Y aquí tiene un iconito que por cierto 00:19:12
Que va cambiando en función de lo que nosotros 00:19:14
Definamos, ¿vale? El icono en el inspector 00:19:16
Si le coloco que sea analógico 00:19:18
Ha cambiado el inspector 00:19:20
He buscado un icono 00:19:21
Simplemente para que visualmente 00:19:24
Estaba trabajando como un analógico 00:19:25
Y ya nos cambia la funcionalidad 00:19:28
¿Cómo trabajo con un analógico? 00:19:30
Si este, voy a ejecutar esto 00:19:32
Pero no importa, lo vemos simplemente 00:19:34
Para ver la parte de la funcionalidad de esto 00:19:36
como puedes ver, para donde vaya 00:19:38
va cambiando el valor 00:19:43
¿vale? y eso lo controlamos 00:19:45
aquí, le estoy diciendo que permite los valores 00:19:47
en todos los verticales, le digo que 00:19:49
solamente los horizontales, entonces 00:19:51
los verticales ya no le hace caso 00:19:53
eso se cambia aquí, otra cosa que también 00:19:55
aquí visualmente 00:19:57
voy a ocultar las propiedades 00:19:58
visualmente puedes ver que es lo que está pasando con los controles 00:20:00
si te das cuenta aquí en el analógico 00:20:03
va cambiando la barra 00:20:05
además de que aquí te va indicando 00:20:07
son cosas que no realmente no son quizás útiles directamente pero visualmente ayudan mucho vale 00:20:09
para estar hecho sigo esto es el control lo que son el comportamiento como botón analógico que 00:20:15
es arrastrando y finalmente tenemos el comportamiento del mismo control lo transformamos 00:20:23
en un stick virtual como se ve aparece por detrás lo que es el rango donde se puede mover y 00:20:28
Y lo podemos mover como si fuese un stick cualquiera, ¿vale? 00:20:35
Aquí al lado se puede ver que algunos valores van cambiando. 00:20:40
Aquí hay unas flechitas, etcétera, etcétera. 00:20:44
Que eso sirve cuando tenemos esto así. 00:20:47
Se va mostrando ahí y se van cambiando de valor y sabemos lo 00:20:50
que está pasando es que se están sucediendo cosas, ¿vale? 00:20:52
Podría yo, por ejemplo, tener varios controles en pantalla 00:20:56
que sean sticks. 00:21:01
Podría tener todos los controles como stick y todo funciona sin problema al mismo tiempo. 00:21:04
Y todo con su lectura aparte. 00:21:07
La implementación de esto. 00:21:10
Esto es específico de los controles virtuales. 00:21:12
Puedes hacer un juego que use más de un stick. 00:21:15
Eso ya es cosa de quien vaya a integrarlo a su juego. 00:21:17
Porque además el control este se puede integrar de una manera standalone. 00:21:20
No necesitas integrar todo el proyecto para poder ejecutarlo. 00:21:26
Paso a la siguiente demo. 00:21:29
entonces 00:21:30
la siguiente me voy a pasar rápidamente porque 00:21:34
esto es una implementación de lo que es el 00:21:38
X Gamepad 00:21:40
perdona, solo indicarte que llevas 20 minutos, ¿vale? 00:21:41
continúa, pero era la indicación 00:21:44
que te decía 00:21:46
ok, trato de hacerlo lo más rápido posible 00:21:47
voy a pasar rápidamente esto 00:21:49
aquí lo interesante de la implementación 00:21:51
del X Gamepad 00:21:54
es que he añadido lo que es 00:21:55
un control de 00:21:58
de Autofire 00:21:59
por ejemplo, ahí se puede ver 00:22:02
que está activo 00:22:04
y lo estoy activando con lo que dice en pantalla 00:22:06
con Start y un botón 00:22:08
y con Select 00:22:09
ah bueno, es que ha avanzado 00:22:10
pero bueno, voy a seguir 00:22:14
vale, las implementaciones que tiene el X-Gamepad 00:22:15
especial son 00:22:20
Autofile, que tienen remapeo 00:22:22
y tienen remapeo físico, existen dos tipos de 00:22:23
mapeo importantes, una cosa es 00:22:26
lo que yo mapeo desde un 00:22:28
teclado, desde un ratón, a lo que sea 00:22:30
a mi control X-Gamepad 00:22:32
a mi control que he creado y lo otro es el mapeo físico, o sea, el lógico que es una vez ya asignado los controles, 00:22:34
yo puedo mapear, decirle un botón es este, lo puedo cambiar, ¿vale? Son dos tipos de mapeo 00:22:41
y me estoy pasando rápidamente para poder explicar esto porque me queda muy poco tiempo. 00:22:46
Aquí en pantalla, bueno, no lo he podido mostrar, pero que no se la demos a dar cuenta que originalmente 00:22:51
W, W, A, S, D es el control del stick izquierdo en teclado y ahora lo he cambiado, he mapeado físicamente 00:22:56
para que sean estas otras teclas, las que están acá, ¿vale? 00:23:04
O estas, ¿vale? 00:23:07
Simplemente para que se muestre que fácilmente por código se 00:23:10
puede realizar TMPyro, ¿vale? 00:23:13
Voy a seguir avanzando porque, y llego a la última parte de la 00:23:16
demo, que realmente era el plato fuerte, pero, bueno, 00:23:21
ya me he comido el tiempo en el otro, 00:23:24
que son la generación de listas de movimientos, ¿vale? 00:23:26
Voy a adelantar, adelantar, ¿vale? 00:23:30
Uf, qué feo se ve esto. 00:23:34
Voy a ejecutarlo de nuevo. 00:23:36
No sé por qué a veces se van los colores de esto. 00:23:37
Realmente, lista de movimientos. 00:23:44
Lo que he hecho yo es implementar, 00:23:46
ya que tengo el control del mando, 00:23:48
es proveer una forma de generar listas de movimientos, 00:23:49
como si fuesen juegos de lucha, juegos de acción, lo que sea, 00:23:53
donde hay secuencias de movimientos. 00:23:56
Y yo, por medio de la clase, 00:23:58
indicar si se ejecuta uno de esos movimientos. 00:24:00
Básicamente es eso. 00:24:02
He generado un concepto que se llama VFrame, 00:24:03
que es 00:24:05
en un lapso de tiempo 00:24:07
lo que yo he generado es un momento 00:24:11
donde leo estados 00:24:14
leo estados de gamepad 00:24:16
asigno estados lógicos 00:24:18
porque por ejemplo determino si no es posible hacer 00:24:21
izquierda y derecha al mismo tiempo 00:24:23
entonces lo que hago, voy generando 00:24:25
estoy explicando muy rápido, lo sé, pero es que 00:24:27
no tengo que hacer así 00:24:29
en ese estado lo que hago es 00:24:30
determinar frames 00:24:33
lógicos válidos 00:24:35
y si no son lógicos, voy generando frames 00:24:37
nuevos. Y con esto lo que hago es secuencias 00:24:40
de movimientos lógicas, ¿vale? 00:24:42
Y donde hay combinación de botones 00:24:43
con mandos, etcétera, etcétera. 00:24:46
A ver, voy a ir rápidamente 00:24:49
a ver si llegamos a la parte de la 00:24:50
demo. Vale. 00:24:52
Es una implementación rápida, 00:24:55
¿vale? Esto lo, se crea 00:24:56
bueno, 00:24:58
no voy a mostrar el código porque se me va a ir el tiempo, 00:25:00
Pero básicamente con esto lo que hago es, sin tener que codificar yo todo lo que es la implementación del motor de movimientos, el usuario simplemente, si voy a, lo muestro porque es lo más fácil, lo muestro en la escena 4 y esto es, por ejemplo, para generar un movimiento hago esta línea. 00:25:02
Con esta línea solamente yo estoy indicando al motor que este movimiento se llama de esta manera y que se ejecuta de esta manera. 00:25:28
Es el motor que lo resuelve. ¿Cómo después yo lo obtengo? Simplemente después tengo aquí un GetMove, que lo hago en el update, y simplemente el GetMove me dice, ¿se ha ejecutado tal movimiento? Sí, me trae el nombre del movimiento. Yo no tengo que preocuparme más como desarrollador. 00:25:35
Entonces, con eso puedo integrar todo este tipo de funcionalidades como movimientos, bueno, lo que está viendo aquí. La gracia del motor que yo he creado es que además permite movimientos en árbol, que son estos, movimientos que son requisitos para otros movimientos. 00:25:57
rápidamente le explico aquí por ejemplo el primer movimiento que se llama custom mode y tiene el 00:26:13
río y si ejecutas puedes ejecutar el siguiente si me sale bueno hay una implementación si lo haces 00:26:18
por ejemplo si hago el de arriba tengo los dos de abajo como posibles entonces por eso se ponen 00:26:26
verde y si ejecuta uno de abajo sigue la rama y se pueden así hacer x ramas hacia adentro para 00:26:32
la nueva complejidad esto sirve tanto para como lo que estoy colocando tiene un demo de lucha 00:26:41
y esto es una demo como si fuese un juego de arcade un juego de hacks y flash del mercado 00:26:49
que sea donde tienes aquí movimientos y en función de lo que estaba haciendo también puedes ir 00:26:56
generando ahora mismo porque estoy un poco nervioso tratando de sacarlo pero la idea 00:27:00
es que esto se sacan sin que consideren los los de las direcciones solamente con botones 00:27:08
ya tengo un poco un poco porque tengo que terminar 00:27:17
pues eso sería la presentación más o menos de lo que hace mi clase 00:27:29
me ha faltado tiempo para explicarlo 00:27:33
lo sé, pero 00:27:35
pues eso 00:27:36
vale, perfecto 00:27:39
dame un segundillo que 00:27:41
recopilo un poco cosas que te quiero 00:27:43
preguntar 00:27:45
prefiero las preguntas 00:27:46
bueno 00:27:48
lo primero, como tutor 00:27:51
también transmitirlo 00:27:54
es un proyecto muy muy avanzado 00:27:55
que está muy bien, además lo 00:27:58
se ha estado probando y 00:27:59
bastante robusto además 00:28:01
que digo que está muy conseguido 00:28:02
y de hecho 00:28:05
en relación a esto 00:28:07
la primera pregunta 00:28:08
¿crees que 00:28:09
mejora mucho? 00:28:13
la respuesta se sabe 00:28:15
lo que quiero es ver el razonamiento 00:28:16
con respecto al input system 00:28:18
que no sé si lo has 00:28:19
la alternativa que ha ofrecido Unity 00:28:20
como paquete frente al input manager 00:28:23
¿qué ventajas tiene 00:28:25
este paquete? 00:28:28
entiendo que hay algunas obvias 00:28:31
pero hay alguna más también vale a ver la más importante para mí no es un reemplazo completo 00:28:32
porque quise hacerlo pero primero que algunos event system y todo eso están amarrados con el 00:28:38
input manager entonces no te lo puedes quitar de encima vale existía un hack para poder yo 00:28:43
inyectar valores dentro de youtube manager pero sirve solamente en algunos yuri que lo estuve 00:28:49
investigando pero lo descarté la idea del miedo original bueno original pero la verdad es que 00:28:53
después quería hacer era el reemplazo completo porque se podía hacer en una de las ventajas más 00:28:58
evidentes para mí es la separación de controles sin tener que estar configurando el input manager 00:29:06
vale había una cosa que no está explicando la demo y que la verdad que es bastante si lo tenía 00:29:12
que haber explicado que era esto mira esto que yo no le explicaba el legacy vale no sé si alcanzaste 00:29:21
a entender que era aún sin una explicación básicamente lo que hace el legacy es leer lo 00:29:29
que hacía el input manager o sea yo podía acceder a los mismos valores podía acceder a las mismas 00:29:34
variables y eso por ejemplo ahora mismo lo más evidente con el teclado si yo hago derecha 00:29:38
izquierda tengo aquí asignada en mi x gamepad lo que es el de el de paz y aquí con el w a s de el 00:29:47
stick en el de gas y como tú sabes en la flecha está asignado a los dos entonces no puedes 00:29:54
discriminar con ellas a no ser que la configure tú manualmente desde el manager antes de compilar 00:30:01
pues ahora mismo están las dos enlazadas que es el comportamiento que tendría si estuviesen 00:30:07
leyendo el horizontal y el vertical. 00:30:12
¿Me entiendes? Vale. 00:30:15
Ese es uno de los... 00:30:17
de las razones más pensibles 00:30:19
para lo que yo usaría esto. Bueno, por lo que 00:30:20
he diseñado realmente esto. 00:30:23
Vale. Luego en la documentación, aparte 00:30:25
de la memoria, 00:30:27
que sí que es verdad que la presentación me ha faltado 00:30:28
un poquito más de empaque con 00:30:31
respecto a lo que es el proyecto, es decir, 00:30:33
no el proyecto, lo que es las conclusiones 00:30:34
que has derivado, que es la primera parte, 00:30:37
parte del factor tiempo. 00:30:39
Pero 00:30:41
aparte has presentado un manual 00:30:41
que está muy bien documentado y muy 00:30:44
extenso, además hay incluso 00:30:46
cosas que no has comentado en la presentación como 00:30:48
esta tipografía que has adaptado para ir mostrando 00:30:50
los controles, que hay más abajo 00:30:52
incluso, pero eso 00:30:54
lo vemos en la memoria 00:30:56
pero te quería preguntar 00:30:59
que me sigue faltando 00:31:01
una cosa que es básica 00:31:05
y esto no te lo digo como 00:31:07
porque además es muy fácilmente corregible 00:31:08
que es, al principio de tu presentación 00:31:10
y de tu memoria hablas de que es una forma 00:31:12
de acercar a desarrolladores 00:31:14
sobre todo principiantes 00:31:16
aunque evidentemente lo puede usar cualquiera 00:31:18
uso basiquísimo 00:31:22
es decir, de primeras a la persona 00:31:24
que quiera implementar este paquete 00:31:26
este asset 00:31:28
que es hablar de que tienes que incorporar 00:31:29
estos prefabs 00:31:32
primero a tu proyecto para poder capturarlos 00:31:34
porque es verdad que 00:31:36
aquí hay tanto código metido 00:31:37
etcétera, que a no ser que te pongas a analizar 00:31:40
los ejemplos, en este manual me 00:31:42
faltan primeros pasos 00:31:44
y que sea, incorpora este prefab 00:31:46
a tu juego 00:31:48
y a partir de ahí captúralo 00:31:50
es decir, esos prefabs no es obvio 00:31:52
que estén ahí, luego 00:31:54
evidentemente cuando ya sabes usarlo, ah bueno, sí hay que arrastrar el prefab 00:31:56
porque ahí es donde están todas las clases 00:31:59
y todo el desarrollo, pero falta 00:32:00
ese paso, es decir 00:32:02
un ejemplo muy básico 00:32:03
Esto arrastra instancias 00:32:06
De esta manera y ya lo usas 00:32:09
Igual que me has hecho 00:32:10
A mí y al resto del tribunal 00:32:11
Las instrucciones de cómo coger 00:32:15
El package para ver la demo 00:32:17
Faltaría una vez arrancas tu juego 00:32:18
Tienes que incorporar 00:32:21
Estos prefabs en la escena 00:32:23
Y hablar 00:32:25
Es verdad que en el manual está 00:32:26
La herramienta de diálogo 00:32:28
La herramienta de los inputs virtuales 00:32:30
Pero en ningún momento 00:32:32
Igual lo has puesto y yo no lo he encontrado 00:32:33
has puesto este primer paso, que parece 00:32:35
una tontería, pero como alguien 00:32:37
no se enganche directamente 00:32:38
a ver cómo va la herramienta en lo más básico, 00:32:41
igual pierde esa gente. 00:32:44
¿Vale? Y es una tontería. 00:32:45
No, no, es válido. 00:32:48
De hecho, si subo esto, 00:32:49
porque mi intención es subirla 00:32:51
al store de Unity, 00:32:52
posiblemente me lo echen para atrás por eso, porque 00:32:55
uno de los requisitos es 00:32:57
colocar precisamente ese ejemplo. 00:32:58
Ese ejemplo primero. 00:33:00
Es así. 00:33:02
Sí, esta herramienta yo no sé luego a qué precio y de qué manera, pero esta herramienta desde luego pulida ya con las cositas de esta documentación, yo le veo un potencial muy alto. Así que sí, yo te animo a que lo hagas. 00:33:05
Bueno, sobre los inputs virtuales 00:33:20
Yo lo he probado en móvil 00:33:25
¿Ves alguna 00:33:27
Es decir 00:33:29
¿Ves algún problema con este manejo de los inputs virtuales 00:33:31
En pantallas táctiles? 00:33:33
A ver, yo no 00:33:35
Las pantallas táctiles 00:33:37
No es equivalente a un mando 00:33:39
Empezando por ahí 00:33:40
Pero sí que es cierto que es una demanda 00:33:42
¿Vale? Entonces 00:33:46
Yo los inputs manuales 00:33:46
los he creado precisamente por esa demanda que me han pedido y por eso mismo he intentado generar 00:33:48
esta otra manera de leer los inputs del árbol de movimientos que no simplificaron lo máximo posible 00:33:58
para que sean válidos dentro de un entorno virtual con pantalla táctil. Entonces, por eso la segunda 00:34:06
demo, que ahora no me ha funcionado, no sé muy bien 00:34:14
por qué, todo el mundo se me funciona menos ahora 00:34:16
por eso la segunda demo era 00:34:17
básicamente todos los comandos eran 00:34:19
presionar A, A, A, B, B, B y ya está 00:34:22
y con eso generaban movimientos 00:34:24
que con eso sí que diable 00:34:26
a usarlo dentro de una pantalla táctil 00:34:28
¿me entiendes? 00:34:30
lo que es movimientos tipo de lucha y todo eso 00:34:32
a mí me consta porque eso es difícil 00:34:34
no se puede hacer porque no tienes el 00:34:36
no tienes el tacto, no tienes 00:34:37
la funcionalidad 00:34:40
se la puedes implementar de una manera muy simple 00:34:41
pero no te va a dar 00:34:43
en eso soy consciente 00:34:45
que es así 00:34:48
y luego, ya última pregunta 00:34:48
hablar de que te has apoyado en 00:34:51
en Ollama, te has apoyado en 00:34:53
inteligencia artificial 00:34:55
todo, es decir 00:34:56
el script, evidentemente 00:34:59
no es una crítica en absoluto que se use la IA 00:35:01
es como se trabaja 00:35:04
evidentemente 00:35:05
pero 00:35:07
digamos, aparte de también 00:35:08
tu bagaje previo 00:35:11
laboral, etcétera, que tiene sus conocimientos 00:35:13
más avanzados probablemente que los del curso 00:35:15
suelen tener en este ciclo 00:35:17
pero digamos que la IA 00:35:19
¿cuánto has tenido que pulir? 00:35:21
¿cómo la has enfocado 00:35:24
el uso de la IA para este proyecto? 00:35:25
porque es muy complejo 00:35:27
ocupa muchas cosas y bueno 00:35:28
un poco tu opinión 00:35:30
o tu forma de trabajar 00:35:32
de hecho mi idea es 00:35:34
que no sube un vídeo a mi canal hablando del tema 00:35:36
porque me parece súper interesante 00:35:39
la IA 00:35:41
la he utilizado sobre todo 00:35:42
para ahorrarme mucho trabajo 00:35:45
de leer 00:35:47
cuando empecé a hacer 00:35:47
el proyecto, como ves es grande y todo eso 00:35:51
es grande y he podido avanzar mucho 00:35:53
gracias a que la IA me ha dado directamente 00:35:55
hay que utilizar esta herramienta 00:35:57
hay que usar esto 00:35:59
que se podría haber hecho 00:36:00
me imagino que igual hubiese llegado a un 00:36:02
a un resultado parecido a lo que tengo 00:36:05
pero evidentemente con mucho más tiempo 00:36:08
¿Cómo he integrado la IA? 00:36:10
De dos maneras. Una, que corriéndolo en local, me ha apoyado de Oyama para integrarlo dentro de lo que es el Visual Studio y que me vaya completando sobre todo las funciones que no sabía. 00:36:12
abrió un prompt 00:36:25
y le decía, necesito 00:36:28
colocar un ejemplo, necesito 00:36:30
hacer que este valor 00:36:35
en el tiempo vaya 00:36:36
variando, porque todavía no tenía 00:36:38
muy claro lo de los ler, o cómo funcionaban 00:36:40
los updates, entonces 00:36:42
me ayudaba mucho con eso, y la otra 00:36:44
manera era directamente, 00:36:46
abría una página, por ejemplo, 00:36:48
le decía, léeme este manual 00:36:50
y dime si esta función me sirve, 00:36:52
a ver, que era una locura 00:36:54
tiene muchas cosas 00:36:58
para usar, muchas herramientas 00:36:59
muchos métodos, todo lo que es 00:37:02
la integración de Unity 00:37:04
te vuelves loco 00:37:07
te vuelves loco, y entonces 00:37:08
la mejor manera de utilizar ahora 00:37:11
la IA es de esa, es 00:37:13
ahorra mi trabajo, dime si esto me sirve o no 00:37:15
si no, pasa otra cosa, también 00:37:17
también para preguntarte 00:37:19
cómo podría aceptar cosas, porque me daban 00:37:23
orientaciones 00:37:25
porque claro, al principio 00:37:26
con los controles virtuales 00:37:29
me hace un lío 00:37:31
tengo que explicar, yo vengo de todo lo que es 00:37:33
el mundo Visual Basic de los 90 00:37:35
donde yo trabajaba 00:37:37
haciendo herramientas, no haciendo programación 00:37:39
herramientas 00:37:41
entonces todo este 00:37:42
desarrollo no me da extraño para mí 00:37:45
hacer esto de hacer una herramienta 00:37:47
para otras personas 00:37:49
me resulta más o menos natural 00:37:50
pero claro, todos los conceptos nuevos 00:37:52
he tenido que aprenderse 00:37:55
o que tampoco sabía hacer 00:37:56
en diciembre con el curso ese 00:37:58
que se recomendaba 00:38:00
y todas estas cosas 00:38:02
hombre, necesité 00:38:04
ayuda para ingerirlo todo 00:38:07
de una manera más rápida 00:38:09
porque si no, no sale 00:38:10
no sale lo mismo, o saldría 00:38:12
solamente teníamos una partida 00:38:14
Vale, pues nada, por mi parte 00:38:16
poco más, darte las gracias por la presentación 00:38:19
y por 00:38:23
¿Qué preguntas te hacían mis compañeros? 00:38:24
¿Me interesa? 00:38:26
No, la que te he estado... 00:38:27
Ya te he leído alguna. 00:38:28
La IA, por ejemplo, era una de ellas. 00:38:29
Ah, sí, sí, de eso le estoy explicando el tema, 00:38:30
porque sí que estaban con la posibilidad del tema. 00:38:34
Es que hay mucho malentendido de qué es lo que es la IA. 00:38:37
Se piensa que es decirle qué es lo que te haga 00:38:41
y que el programa... 00:38:43
Y ojalá lo hiciera. 00:38:43
Bueno, a ver, que no quite el puesto de trabajo, 00:38:45
pero ojalá hiciera el trabajo de manera perfecta. 00:38:47
Pero te va a hacer que tengas que ser más productivo. 00:38:50
Claro. Una muestra de lo que te acabo de mostrar. 00:38:53
Perfecto. Pues nada, muchas gracias. Sobre las calificaciones, aunque no puedo dar un plazo exacto, no va a ser algo inmediato, van a tardar porque al ser la segunda convocatoria, aunque a vosotros os vaya a constar como la primera de proyecto, porque hubo otra en enero, va asociada a la convocatoria extraordinaria. 00:38:59
Es decir, va a ser avanzado junio, ¿vale? No puedo decir fecha porque hasta que no se pongan todas las notas de los exámenes de convocatoria extraordinaria no va a estar. 00:39:16
Seguramente si hay algún cambio en este sentido o que vaya a ser antes, pues os lo comunicaré, pero eso, que no va a ser algo inmediato. 00:39:26
Pues nada más, muchas gracias y ánimo con la herramienta y cuando publiques esos vídeos o esa documentación, pues yo estaré interesado. 00:39:34
Así que todo lo que vaya subiendo estaré atento, ¿vale? 00:39:42
vale, genial, pues nada, muchas gracias 00:39:46
gracias a ti, ánimo con todo 00:39:49
hasta luego 00:39:51
Materias:
Imagen y Sonido
Niveles educativos:
▼ Mostrar / ocultar niveles
  • Formación Profesional
    • Ciclo formativo de grado superior
      • Segundo Curso
Subido por:
Daniel M.
Licencia:
Todos los derechos reservados
Visualizaciones:
3
Fecha:
21 de mayo de 2025 - 18:47
Visibilidad:
Clave
Centro:
IES CIFP a Distancia Ignacio Ellacuría
Duración:
39′ 54″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
339.85 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid