Defensa Proyecto Final - EJGP
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Defensa realizada el 18 de enero.
¿Compartimos la pantalla?
00:00:00
Espera, no, un segundo, que te doy la bienvenida
00:00:02
bueno, de que fuese bienvenido
00:00:05
a tu defensa del
00:00:08
módulo de proyecto final de Ciclo, ¿vale?
00:00:11
de los estudios de animación 3D, juegos e intornos interactivos
00:00:13
con parecida a la hora acordada
00:00:16
que era a las 6 menos cuarto del
00:00:19
jueves 18 de enero. Simplemente
00:00:22
bueno, a lo largo del proyecto hemos estado
00:00:25
viendo pues la evolución del proyecto
00:00:28
conociendo los criterios de calificación
00:00:31
y bueno, finalmente la
00:00:34
estoy yo solo en la presentación, pero se grabará esta
00:00:37
esta defensa para, bueno, pues para que
00:00:40
los compañeros evaluadores también lo puedan
00:00:43
ver si, vamos, cuando puedan
00:00:46
y esta grabación pues será alojada en el ámbito
00:00:49
de DucaMadrid, ¿vale? No saldrá de este ámbito
00:00:52
ya había sido informado de ello
00:00:55
el orden de la presentación de este proyecto es
00:00:58
15 minutos
00:01:01
sobre tu presentación, ¿vale?
00:01:04
si te pasas algún minuto no pasa nada
00:01:07
si superas los 20 seguro que te corto, ¿vale?
00:01:10
pero bueno, hasta 15 minutos sin problema
00:01:13
y si te excedes un poco no pasa nada
00:01:16
y posteriormente habrá una ronda de preguntas
00:01:19
según la respuesta y los temas, pues también se puede alargar un poco
00:01:22
por mi parte
00:01:25
si tú estás listo, pues podemos empezar
00:01:28
vale, sí, sí
00:01:31
pues apunto que empiezas a las 17.49
00:01:34
de mi reloj, así que cuando quieras
00:01:37
así vas preparando también la pantalla y todo
00:01:40
vale, sí, compro tu pantalla
00:01:43
y toda la pantalla, imagino
00:01:46
selecciona la miniatura de la pantalla que quieres compartir
00:01:49
si vas a compartir sonido hay un pequeño
00:01:52
toggle abajo de compartir
00:01:55
no sé si vas a compartir y le das a compartir
00:01:58
vale, no hace falta porque
00:02:01
la presentación no tiene sonido
00:02:04
perfecto, pues creo que veo tu pantalla
00:02:07
vale, pues yo he hecho
00:02:10
una especie de presentación
00:02:13
que es como un pequeño resumen de la memoria
00:02:17
en realidad
00:02:20
bueno, yo he hecho un videojuego en 3D
00:02:30
llamado
00:02:33
Steam Nexus
00:02:36
Steam Nexus es eso
00:02:39
un videojuego en 3D de acción
00:02:42
y con vista isométrica
00:02:45
es un twin-stick shooter por rondas
00:02:48
un juego que se juega con doble
00:02:51
doble joystick originalmente
00:02:54
el proyecto se enfoca en implementar
00:02:57
habilidades adquiridas durante el curso
00:03:00
además de aprender otras nuevas
00:03:03
y el proceso abarca desde
00:03:06
la programación de los scripts
00:03:09
a diseños de interfaces básicos
00:03:13
y eso
00:03:16
programación de mecánicas básicamente
00:03:19
aunque es un desafío desarrollar el juego solo
00:03:22
mi meta es conseguir una
00:03:25
base sólida de conocimientos y habilidades
00:03:28
en el ámbito de desarrollo de juegos
00:03:31
los objetivos clave en mi proyecto
00:03:36
eran adquirir experiencia en el desarrollo
00:03:39
de juegos, entender bases
00:03:42
de la programación, familiarizarme
00:03:45
con Blender aunque al final no haya podido
00:03:48
por tiempo
00:03:51
desarrollar habilidades de gestión de proyectos
00:03:54
y crear un portfolio
00:03:57
para introducir mis habilidades
00:04:00
y que la gente pueda ver lo que sé
00:04:03
aunque no acabase el juego
00:04:06
como tal, mi objetivo principal
00:04:09
era aprender
00:04:12
dentro de la inspiración que he cogido
00:04:17
se han encontrado juegos como Protatto
00:04:20
Vampire Survivors
00:04:23
Enter the Dungeon
00:04:26
Deep Rock Galactic Survivor
00:04:29
Dark Swarm
00:04:32
este juego tiene una temática steampunk
00:04:36
de ahí el nombre Steam Nexus
00:04:39
la narrativa y los personajes
00:04:42
los mencionaré más adelante
00:04:45
las herramientas que he utilizado
00:04:50
Visual Studio para el IDE
00:04:53
Unity como motor de videojuegos
00:04:58
aunque al principio quería usar
00:05:01
Unreal 5 pero finalmente
00:05:04
me decidí por Unity
00:05:07
y Blender aunque no haya modelado los AED finales
00:05:10
es lo que voy a usar
00:05:13
los prototipos y los placeholders
00:05:20
para el diseño de personajes enemigos
00:05:23
utilice placeholders en forma de gápsulas
00:05:26
el mapa lo creé con un plugin llamado
00:05:29
ProBuilder
00:05:32
mientras que la interfaz son elementos básicos
00:05:35
y también implementé un borde
00:05:39
para la barra de vida
00:05:42
que era un asset de la Unity
00:05:45
asset store
00:05:48
para resolver problemas en scripts
00:05:53
utilice debug log para identificar errores
00:05:56
busqué soluciones en internet
00:05:59
y en el Unity manual
00:06:02
consulté foros de Unity
00:06:05
aparte de foros como Stack Overflow
00:06:08
y GitHub
00:06:11
luego consulté a un programador
00:06:14
sobre resolución de errores
00:06:17
no sobre el juego en sí
00:06:20
y para algunos problemas utilice
00:06:23
inteligencia artificial
00:06:26
y también me he guiado a partir
00:06:29
de varios videos explicativos
00:06:32
tanto de resolución de errores
00:06:35
como para crear los enemigos
00:06:38
y el movimiento por ejemplo
00:06:41
aquí he puesto un poco la narrativa
00:06:47
aunque no se vea mucho esto en el juego
00:06:50
para que se vea que es lo que la tengo
00:06:59
y el estilo que le quiero dar
00:07:02
es una ciudad del estilo steampunk
00:07:05
el personaje principal
00:07:08
o sea el jugador sería Ava
00:07:11
una chica con una ex armadura avanzada
00:07:14
como Samus Zero
00:07:17
y combate contra la Syndicate
00:07:20
una organización corrupta
00:07:23
que controla a robots
00:07:26
y los enemigos se suposarían robots
00:07:29
dentro de los scripts que he creado
00:07:38
están el melee y el ranged
00:07:41
que son básicamente enemigos
00:07:44
el melee persigue al jugador
00:07:47
y el ataque cuando está cerca
00:07:50
colisiona con él
00:07:53
mientras que el ranged persigue al jugador
00:07:56
y cuando entra dentro de su rango
00:07:59
dispara
00:08:02
el script de movimiento
00:08:09
es Twin Stick Movement
00:08:12
que gestiona el movimiento del jugador
00:08:15
basado en la entrada de teclado y gamepad
00:08:18
permitiendo el movimiento y la rotación
00:08:21
según la orientación de la cámara
00:08:24
ya que no es lo mismo
00:08:27
un juego en tres dimensiones
00:08:30
con X, Y y Z de profundidad
00:08:33
que un juego con vista isométrica
00:08:36
Gun controla el disparo de armas
00:08:39
por parte del jugador
00:08:42
incluyendo la creación de proyectiles
00:08:45
y la gestión de cadencia de tiro
00:08:48
los scripts de proyectiles y la salud
00:08:51
Bullet y Enemy Bullet
00:08:54
definen el comportamiento
00:08:57
de los proyectiles disparados
00:09:00
tanto por el jugador
00:09:03
como por los enemigos
00:09:07
gestionan velocidad, daño, duración y vida
00:09:10
así como la lógica de colisión
00:09:13
cada uno discrimina
00:09:16
el de Bullet discrimina al jugador
00:09:19
y el de Enemy Bullet discrimina a los enemigos
00:09:22
Geass maneja la salud del jugador
00:09:30
y las de los enemigos
00:09:33
aparte de controlar la muerte
00:09:36
y actualiza la barra de salud
00:09:39
Health Pad
00:09:42
muestra la salud
00:09:45
mediante un slider
00:09:48
de forma dinámica
00:09:51
en la salud del jugador
00:09:54
solamente muestra la salud del jugador
00:09:57
El menú controller
00:10:04
gestiona la navegación y funcionalidades
00:10:07
del menú
00:10:10
y el Game Manager es el núcleo del juego
00:10:13
que maneja lógica rondas
00:10:16
generación de enemigos, pausa, renovación
00:10:19
y las condiciones de victoria o derrota
00:10:22
La conclusión a la que he llegado
00:10:29
haciendo este proyecto
00:10:32
yo estoy bastante contento con este juego
00:10:35
a pesar de que todavía me falta modelar
00:10:38
y optimizar scripts
00:10:41
sé que se pueden mejorar todavía los scripts
00:10:44
y quizá no son los más óptimos
00:10:47
ya sé que es complicado
00:10:50
pero cada paso hace una lección
00:10:53
me ha dado una buena experiencia
00:10:56
y una buena base
00:10:59
para futuros desarrollos de videojuegos
00:11:02
y este juego tampoco
00:11:05
lo he acabado
00:11:08
lo continuaré
00:11:11
más adelante
00:11:14
y ya estaría la presentación
00:11:17
Vale, sí
00:11:23
Has concluido, por tu parte
00:11:26
Vale, perfecto
00:11:29
Varias cosas que quiero comentar
00:11:32
deja compartida tu pantalla
00:11:35
que igual te pido que veamos alguna cosa
00:11:38
Vale, uno de los problemas
00:11:41
pero que tiene también
00:11:44
espero explicación, ahora me confirmas
00:11:47
que los plazos o las expectativas
00:11:50
no se han cubierto
00:11:53
el proyecto que has indicado varias veces
00:11:56
iba a tener un acabado visual más customizado
00:11:59
que no fueran placeholders
00:12:02
lo que sí que he visto
00:12:05
es que has intentado implementar
00:12:08
funciones que no son las más sencillas
00:12:11
por ejemplo, has integrado Cinemachine
00:12:14
también has usado el input system
00:12:17
en vez del clásico
00:12:20
bueno, pues sí que has cogido un camino
00:12:23
un poco exploratorio para no quedarte
00:12:26
con la solución más rápida
00:12:29
El input system
00:12:32
es que yo he leído
00:12:35
y he visto en foros y en vídeos
00:12:38
que va a ser el sistema que se usa
00:12:41
como tal
00:12:44
no veía el punto en usar el antiguo
00:12:47
si el que se va a usar a partir de ahora
00:12:50
hombre, sobre todo por los dispositivos
00:12:53
que de hecho hay una cosa que pones
00:12:56
que no sé si tú has llegado a usar
00:12:59
que es el twin stick
00:13:02
para teclado y ratón y para gamepad
00:13:05
en gamepad claro, no hay click
00:13:08
no hay forma de designar la ubicación
00:13:11
¿cómo resolverías eso?
00:13:14
¿con el joystick simplemente orientándolo?
00:13:17
¿a qué te refieres?
00:13:20
cuando el protagonista, ahora jugamos en ordenador
00:13:23
lo que vamos haciendo es orientar
00:13:26
en base al ratón
00:13:29
a medida que vamos moviendo el ratón
00:13:32
el personaje seguirá girando
00:13:35
pero digamos que es en función
00:13:38
del joystick derecho sería orientar al personaje
00:13:41
sería el de rotación
00:13:44
en teclado y ratón
00:13:47
lo que he hecho ha sido
00:13:50
que el jugador apunte
00:13:53
a la posición en la que haya tu ratón
00:13:56
y eso
00:13:59
mando en gamepad
00:14:02
apuntas con tu joystick derecho
00:14:05
sí que he hecho en falta
00:14:08
aunque hayas explorado
00:14:11
y por eso se te ha alargado el proceso
00:14:14
que hubiera un poco más de variedad en el juego
00:14:17
pasan 5 rondas si no me equivoco
00:14:20
y si en cada una hay más personajes
00:14:23
pero no hay una variación real
00:14:26
de personajes, siempre son los mismos enemigos
00:14:29
además uno de los dos enemigos no está funcionando
00:14:32
no quitan vida
00:14:35
en el ejecutable que me pasaste
00:14:38
por mucho que se me choquen, de hecho a veces tengo 7 alrededor
00:14:41
vale, pues sí, me molestan
00:14:44
a mí me funcionan
00:14:47
yo creo
00:14:50
antes de enviártelo
00:14:53
lo probé y funcionaba
00:14:56
¿le puedo dar aquí?
00:14:59
a lo mejor justo ha sido
00:15:03
algo
00:15:06
mandando, pero yo creo que funcionaba
00:15:09
a ver, por ejemplo
00:15:12
mira, me han quitado la mitad de la vida
00:15:15
pues en el ejecutable que a mí me llegó no
00:15:18
pero bueno, que entiendo que está configurado
00:15:21
pero algo pasa en ese ejecutable que no está funcionando
00:15:24
luego en la memoria me ponen que usas
00:15:27
Audisio, realmente entiendo que no lo has usado
00:15:31
no, en la Audisio no lo he dejado usar
00:15:34
porque no he metido sonido todavía
00:15:37
pero sí que lo usaría
00:15:40
cuando lo complete
00:15:43
sí, eso, se ha quedado un poco
00:15:46
por el camino el proyecto a nivel de acabar
00:15:49
es verdad que lo que tú dices, entiendo que te ha
00:15:52
contribuido a que avances
00:15:55
y consolides conocimientos, entiendo que eso
00:15:58
sí que lo has hecho
00:16:01
otro elemento que entiendo que
00:16:04
dame tú la explicación, ¿por qué has usado los navmes
00:16:07
para enemigos que sólo van hacia el jugador
00:16:10
y lo persiguen?
00:16:13
he usado los navmes
00:16:16
porque
00:16:19
querría ampliar el juego
00:16:22
a lo mejor hacer plataformas
00:16:25
algunos obstáculos
00:16:28
o sea, de momento no es lo más
00:16:31
óptimo, sería por ejemplo
00:16:34
sería más fácil
00:16:37
y por ahora haría lo mismo
00:16:40
pero si quiero
00:16:43
si quiero ampliarlo en un futuro
00:16:46
de momento creo que usar los navmes es lo mejor
00:16:49
y también lo
00:16:52
he leído que es mejor
00:16:55
sí, bueno, esto lo hablamos y por eso
00:16:58
que para, por ejemplo, si hay obstáculos
00:17:01
si pones un move towards o algo que calcule dónde está el personaje
00:17:04
vaya hacia ello, pues si hay algo en medio
00:17:07
pues se queda ahí atontado empujando
00:17:10
a no ser que pongas raycas para discriminar, para cosas ya más complejas
00:17:13
pero sí, actualmente es
00:17:16
desde luego no es lo más óptimo
00:17:19
pero bueno, entiendo que es como lo del input system
00:17:22
un poco por tener ya preparado el terreno para continuar
00:17:25
sí
00:17:28
pones también que has usado inteligencia
00:17:31
artificial para escribir código
00:17:34
cómo has hecho esta contribución de la inteligencia y cómo ha sido
00:17:37
pues si hay algún
00:17:40
método, es que ahorra mucho tiempo
00:17:43
a lo mejor le pregunto a una inteligencia artificial
00:17:46
o le dejo que me escribe
00:17:49
a un método en C Sharp
00:17:52
con X condición
00:17:55
simplemente para ahorrar tiempo
00:17:58
el escribir
00:18:01
algo de algún método
00:18:04
cuando hablamos de inteligencia artificial que no lo concretas
00:18:07
¿te refieres a chatGPT o has usado otras herramientas?
00:18:10
no solamente chatGPT
00:18:13
si, eso tiene la pega a nivel del proyecto
00:18:16
que desde luego la inteligencia artificial va a ser
00:18:19
fundamental en el futuro
00:18:22
es que claro, hasta qué punto
00:18:25
todo lo que iba escribiendo
00:18:28
esa chatGPT
00:18:31
tú lo ibas comprendiendo o simplemente
00:18:34
yo en chatGPT si he pedido que escriba algo
00:18:37
y no he entendido que ha hecho
00:18:40
siempre le he preguntado que ha hecho
00:18:43
en todo momento he entendido que estaba haciendo
00:18:46
o porque ha puesto este método
00:18:49
o porque ha sumado esta ronda
00:18:52
estos enemigos
00:18:55
porque ha multiplicado
00:18:58
¿tienes la memoria por ahí que me pudieras compartir un segundo?
00:19:01
si, la tengo aquí abierta
00:19:04
en la página 16
00:19:07
si puedes ir un segundo
00:19:10
hay un script que no he entendido muy bien
00:19:13
y de hecho la descripción que hay
00:19:16
es el de en medio
00:19:19
en el trigger enter no estás hablando de la bala
00:19:22
se forma
00:19:25
información de la colisión y si el objeto tiene
00:19:28
la etiqueta player se prepara para aplicar daño y se estruya bala
00:19:31
hasta aquí bien porque ha colisionado con el personaje
00:19:34
en teoría la bala también tendría que ignorar
00:19:37
a todos los objetos que no tengan etiqueta de player
00:19:40
y luego veo el código
00:19:43
y lo que veo es un compareTag
00:19:46
enemy si es diferente de enemigo no a player
00:19:49
entonces no entiendo muy bien
00:19:52
que quiere decir este
00:19:55
hitInfo con enemy
00:19:58
si toca al jugador se destruye la bala
00:20:01
y si no
00:20:04
si la etiqueta es diferente de enemigo
00:20:07
se destruye también
00:20:10
es por si hubiera paredes o por qué es esto
00:20:13
bueno yo
00:20:16
en parte no me he dado cuenta
00:20:19
la verdad
00:20:22
pero si hubiese paredes
00:20:25
que quiero que las haya
00:20:28
me vendría bien
00:20:31
pero en este momento no tengo mucha idea
00:20:34
vale será
00:20:37
lo leí luego vi el código y digo yo
00:20:40
hay algo que no me está cuadrando
00:20:43
y ya por último en el menú
00:20:46
pones unos ajustes que de momento no funcionan
00:20:49
al menos el de volumen pero el de dificultad
00:20:52
si el de dificultad
00:20:56
si me consta además que funciona
00:20:59
porque me costó un montón configurarlo
00:21:02
tuve que hacer mil cosas
00:21:05
meterme en mil foros
00:21:08
porque lo configuras con un playerprefs
00:21:11
si
00:21:14
y luego los estás recuperando
00:21:17
porque el problema que hay es que
00:21:20
cuando luego te vuelves a meter en ese menú
00:21:24
siempre está a nivel más básico
00:21:27
ahí faltaría que leyera los playerprefs
00:21:30
que no solo los guardara sino que también los recupere
00:21:33
por ejemplo
00:21:36
pero bueno
00:21:39
es una pena que no se haya llegado hasta más lejos
00:21:42
y ver aunque sea
00:21:45
el planteamiento visual más allá de lo narrativo
00:21:48
porque
00:21:52
una cosa que sí te pegué en el proceso es que a lo mejor me enseñaras
00:21:55
ejemplos de cómo iba a ser
00:21:58
me hablabas de ejemplos
00:22:01
en la memoria no se ven pero sí que lo habíamos hablado
00:22:04
pero bueno en ese sentido nos quedamos con que
00:22:07
lo que hemos hablado otra vez está centrado más en la programación
00:22:10
no pasa nada
00:22:13
pero bueno yo que sé
00:22:16
a esta sí que he echado de menos a lo mejor
00:22:19
lo que es pues que metieras algún otro tipo de bala
00:22:22
diferente que tampoco es algo tan complicado
00:22:25
o que entre rondas pues que a lo mejor todos los enemigos
00:22:28
los dos tipos que en la primera ronda se aparecieran
00:22:31
y luego que hubiera un poco de variación
00:22:34
para que no sea pues dar 5 rondas un poco lo mismo
00:22:37
porque en realidad
00:22:40
sí que tenía pensado añadir un par de cosas pero
00:22:43
es que no gestionaba el tiempo muy bien
00:22:46
no podía añadir todo lo que me gustaría
00:22:49
bueno yo eso
00:22:52
no me tranquiliza me gusta
00:22:55
que en parte este retraso en el proyecto y la previsión sea
00:22:58
porque también te has metido a indagar
00:23:01
o a usar funcionalidades más avanzadas
00:23:04
a nivel del proyecto para presentármelo no es lo mejor porque te ha retrasado más
00:23:07
que otras formas de hacerlo seguramente
00:23:10
por ejemplo el nummes ahora mismo no tiene sentido
00:23:13
sino a futuros el input system
00:23:16
pues tampoco pero bueno
00:23:19
sí que funciona pero el nummes se puede hacer
00:23:22
de formas más sencillas pero bueno eso también significa
00:23:25
que no te has quedado en lo básico entonces bueno por ese lado
00:23:28
lo que te quita un poco también te lo suma
00:23:31
por otro punto así que bueno
00:23:34
yo en parte haberme retrasado también
00:23:37
me ha servido bastante
00:23:40
me ha enseñado que hacer eso
00:23:43
hacer un juego no es más fácil
00:23:46
y sobre todo las expectativas de tiempo y de acabado
00:23:49
que siempre
00:23:52
te lo dije cuando empezamos
00:23:55
quieres abarcar muchas cosas sobre todo cuando me hablabas
00:23:58
de lo de hacer también la parte visual en blender
00:24:01
que luego también cuando te metieras en eso también
00:24:04
no sé tu dominio de blender pero también lleva bastante tiempo
00:24:07
bastante y luego meterlo en el motor
00:24:10
pero bueno
00:24:13
por supuesto en el proyecto lo importante es aprender
00:24:16
ya te digo me hubiera encantado a lo mejor que el juego hubiera sido
00:24:19
más acabado a nivel de mecánica y que no fuera todo el rato
00:24:22
un poco lo mismo que te acabo de comentar
00:24:25
pero bueno está entregado el proyecto
00:24:28
y veo que le ha servido para aprender
00:24:31
y además aprender cosas que habíamos visto en game por ejemplo
00:24:34
que seguramente algunas se quedan ahí en el tintero
00:24:37
y tú las has aplicado entonces bueno en ese sentido está bien
00:24:40
me ha servido varias
00:24:43
que hemos visto
00:24:46
pero y eso no solo que te ha servido de que las conocías sino que las has aplicado
00:24:49
entonces está bien
00:24:52
pues no sé si hay algo más que quieras aportar de conclusión
00:24:55
yo por mi parte
00:24:58
yo por mi parte creo que eso es todo
00:25:01
vale genial pues
00:25:04
pues gracias por la presentación
00:25:07
y lo que dice la tutoría que hasta el jueves que viene
00:25:10
que es la junta de evaluación nos compartiremos
00:25:13
casi con toda seguridad vuestra calificación
00:25:16
así que jueves, viernes o la semana que viene
00:25:19
pues si la tutorial vale
00:25:22
muchas gracias a ti
00:25:25
un saludo
00:25:28
- Subido por:
- Daniel M.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 5
- Fecha:
- 18 de enero de 2024 - 19:39
- Visibilidad:
- Clave
- Centro:
- IES CIFP a Distancia Ignacio Ellacuría
- Duración:
- 25′ 29″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 216.20 MBytes