1 00:00:01,389 --> 00:00:10,689 Buenos días, yo soy Marta Villena Arevalo, haciendo aquí la presentación de, bueno, el vídeo, la presentación de mi proyecto final. 2 00:00:11,029 --> 00:00:19,390 El proyecto final se llama Neverending Fight, y este es un proyecto estilo roguelike, que es de combate por turnos, 3 00:00:20,190 --> 00:00:30,089 y que bueno, tiene sus pequeños gimmicks, que digamos, tonos dinámicos, con algunas estrategias simples, también hay arquetipos y tal. 4 00:00:30,089 --> 00:00:34,429 A lo siguiente vamos a empezar primero con los objetivos 5 00:00:34,429 --> 00:00:39,170 Para entender por qué se han hecho ciertas cosas de la manera en la que están en el código 6 00:00:39,170 --> 00:00:44,429 Hay que tener en cuenta ciertos objetivos que he querido cumplir 7 00:00:44,429 --> 00:00:49,990 Principalmente es el KISS, Keep it simple, stupid 8 00:00:49,990 --> 00:00:55,390 Y el SOLID, mayormente por tema de mantenimiento de código 9 00:00:55,390 --> 00:00:59,250 Luego hay otras más que también he querido usar 10 00:00:59,250 --> 00:01:01,689 que es con la reusabilidad 11 00:01:01,689 --> 00:01:05,989 porque hay un sistema en concreto del juego 12 00:01:05,989 --> 00:01:08,269 que requiere de mucha flexibilidad 13 00:01:08,269 --> 00:01:10,890 y obviamente al querer mucha flexibilidad 14 00:01:10,890 --> 00:01:14,409 la reusabilidad es bastante útil 15 00:01:14,409 --> 00:01:17,230 antes de ir al siguiente punto 16 00:01:17,230 --> 00:01:19,390 estaría bien que sepáis 17 00:01:19,390 --> 00:01:22,109 que esto es un mínimo viable producto 18 00:01:22,109 --> 00:01:24,969 en otro sentido, tiene lo mínimo para funcionar 19 00:01:24,969 --> 00:01:29,090 no habrá cosas que sean demasiado pulidas 20 00:01:29,090 --> 00:01:32,829 Y es probable de que haya algún que otro bus que se me haya escapado 21 00:01:32,829 --> 00:01:38,849 Pero lo principal, la estrella del rostro, se supone de que funciona 22 00:01:38,849 --> 00:01:42,989 Bueno, ahora comenzamos con el aspecto de la dungeon 23 00:01:42,989 --> 00:01:45,549 Que es el aspecto roguelike que tiene este juego 24 00:01:45,549 --> 00:01:53,390 En este caso, las dungeons son una serie de salas interconectadas entre ellas 25 00:01:53,390 --> 00:01:57,849 Por las que el jugador puede ir hasta llegar al nodo final 26 00:01:57,849 --> 00:02:01,969 En este caso la forma en la que está estructurado es 27 00:02:01,969 --> 00:02:04,730 Tienes un nodo del principio, un nodo final 28 00:02:04,730 --> 00:02:10,509 Y luego en el medio tienes un montón de salas por las que el jugador puede ir 29 00:02:10,509 --> 00:02:16,169 Estas salas se dividen principalmente ahora mismo por ocurrencias y combate 30 00:02:16,169 --> 00:02:19,930 Las ocurrencias mayormente suelen ser diálogo 31 00:02:19,930 --> 00:02:24,349 Y el combate te lleva a un combate, como es de esperar 32 00:02:24,349 --> 00:02:44,310 Hablando sobre los eventos de las salas, ahora mismo la ocurrencia está un poco en desarrollo pero se puede más o menos intuir lo que se puede llegar a hacer con ellas teniendo en cuenta el sistema de eventos que he metido para ello. 33 00:02:44,310 --> 00:02:47,750 Con lo que voy a centrarme un poco más en el de combate 34 00:02:47,750 --> 00:02:50,770 En el nodo de combate o sala de combate 35 00:02:50,770 --> 00:02:56,990 Pues te mueve al sistema combate, como es de esperar 36 00:02:56,990 --> 00:03:01,689 Entonces, lo primero que hay que tener en cuenta con todo esto es 37 00:03:01,689 --> 00:03:03,889 ¿Qué es el sistema combate? 38 00:03:04,050 --> 00:03:05,650 ¿Qué es lo siguiente que vamos a hablar? 39 00:03:06,090 --> 00:03:08,650 El combate se puede dividir en varios aspectos 40 00:03:08,650 --> 00:03:11,689 Entre ellos están los turnos dinámicos 41 00:03:11,689 --> 00:03:13,689 El combate simple 42 00:03:13,689 --> 00:03:16,449 y las estrategias por equipos 43 00:03:16,449 --> 00:03:18,810 básicamente 44 00:03:18,810 --> 00:03:22,150 en el combate 45 00:03:22,150 --> 00:03:24,090 tienes un equipo 46 00:03:24,090 --> 00:03:26,030 de hasta 4 personajes 47 00:03:26,030 --> 00:03:27,490 mínimo uno 48 00:03:27,490 --> 00:03:29,590 en el que 49 00:03:29,590 --> 00:03:32,750 con ellos vas a enfrentarte a un enemigo 50 00:03:32,750 --> 00:03:36,750 como es turnos dinámicos 51 00:03:36,750 --> 00:03:38,870 la velocidad es calculada 52 00:03:38,870 --> 00:03:41,449 durante todo el combate 53 00:03:41,449 --> 00:03:43,090 para así 54 00:03:43,090 --> 00:03:50,330 Que si cambias la velocidad de un personaje o cambias la velocidad de un enemigo 55 00:03:50,330 --> 00:03:54,810 Este puede afectar a quienes van antes o después 56 00:03:54,810 --> 00:04:00,030 Pudiendo incluso en algunos casos surgir los llamados dobles turnos 57 00:04:00,030 --> 00:04:05,650 Todos los personajes se pueden dividir fácilmente en básico, habilidad y definitiva 58 00:04:05,650 --> 00:04:12,030 El básico puede ser usado siempre que quieras 59 00:04:12,030 --> 00:04:14,530 la habilidad, no siempre 60 00:04:14,530 --> 00:04:16,810 necesitas de algo llamado puntos de habilidad 61 00:04:16,810 --> 00:04:18,350 que se consiguen con el básico 62 00:04:18,350 --> 00:04:20,129 y luego 63 00:04:20,129 --> 00:04:22,230 tienes la definitiva que esto 64 00:04:22,230 --> 00:04:24,269 puedes activarlo en cualquier momento y 65 00:04:24,269 --> 00:04:26,329 recibes lo que se llama un turno 66 00:04:26,329 --> 00:04:27,389 de definitiva 67 00:04:27,389 --> 00:04:30,490 esto es lo que viene siendo 68 00:04:30,490 --> 00:04:32,370 el kit básico, luego 69 00:04:32,370 --> 00:04:34,230 ya tienes otras cosas como 70 00:04:34,230 --> 00:04:36,670 son las pasivas, las pasivas iniciales 71 00:04:36,670 --> 00:04:37,730 que añaden 72 00:04:37,730 --> 00:04:40,769 una estrategia 73 00:04:40,769 --> 00:04:53,399 más al personaje para enriquecerlos como son. Los enemigos tienen más o menos lo mismo, 74 00:04:53,399 --> 00:04:59,680 la mayor diferencia es que estos son controlados automáticamente por el juego. Estos tienen 75 00:04:59,680 --> 00:05:05,300 también ataques básicos, habilidades, definitivas, como los personajes normales y pueden llegar 76 00:05:05,300 --> 00:05:12,339 a tener pasivas, pasivas iniciales y del estilo. No siempre, pero puede pasar. 77 00:05:12,339 --> 00:05:27,139 Y luego hay otro aspecto que se llama las arquitecturas de equipos, que lo que mayormente cambia es en qué equipos formas, con qué personajes y cuál es tu gimmick. 78 00:05:27,139 --> 00:05:31,160 Qué gimmick viene siendo la estrategia principal. 79 00:05:32,040 --> 00:05:36,339 Ahora vamos a hablar del guardado de la información. 80 00:05:36,339 --> 00:05:56,000 La forma en la que se hace con la base de datos es que Unity tiene httpclient que hace una llamada al servidor, el servidor luego va a la base de datos, la base de datos devuelve los datos y el servidor devuelve a httpclient lo que está pidiendo. 81 00:05:56,000 --> 00:06:02,300 Es mayormente eso, allí en la base de datos lo que mayormente se guarda son los datos de la partida 82 00:06:02,300 --> 00:06:09,660 Debido a que estos son mayormente muy fluctuables y suelen cambiar bastante 83 00:06:09,660 --> 00:06:18,319 En los scriptable objects he optado por meter las configuraciones iniciales de todo lo que viene siendo configuración 84 00:06:18,500 --> 00:06:22,660 En este caso uno de los ejemplos que se me ocurren es el de los kits 85 00:06:22,660 --> 00:06:27,839 Los que de los personajes como son estables no cambian a lo largo del tiempo 86 00:06:27,839 --> 00:06:32,300 Pues es un ejemplo perfecto para meterlo con los scriptable objects 87 00:06:32,300 --> 00:06:35,680 Al igual que la configuración inicial de un personaje 88 00:06:35,680 --> 00:06:38,199 Las estadísticas con las que él comienza 89 00:06:38,199 --> 00:06:41,500 Obviamente todas basadas en que están en nivel 1 90 00:06:41,500 --> 00:06:47,980 Cualquier cosa que sea estable, que no cambie con el tiempo 91 00:06:47,980 --> 00:06:50,699 Se usa el scriptable objects 92 00:06:50,699 --> 00:06:55,740 Al contrario de la base de datos, que es aquello que siempre va cambiando, como son las partidas 93 00:06:55,740 --> 00:06:59,699 A continuación vamos a hablar sobre los personajes 94 00:06:59,699 --> 00:07:02,240 Los personajes están divididos en componentes 95 00:07:02,240 --> 00:07:05,740 Los componentes cada uno representan una función en sí 96 00:07:05,740 --> 00:07:14,500 Hay componente que es del kit que se encarga de todo lo que tenga que ver con las habilidades de los personajes 97 00:07:14,500 --> 00:07:25,579 Hay otro en concreto que se llama Data, personaje Data, que se encarga de todo lo que tenga que ver con la información que cambia desde los personajes 98 00:07:25,579 --> 00:07:29,579 A continuación vamos a hablar sobre las habilidades 99 00:07:29,579 --> 00:07:35,579 Las habilidades hay que decir que tienen un mayor problema llamado de que tienen que ser demasiado flexibles 100 00:07:35,579 --> 00:07:49,819 Para lidiar con el tema de la flexibilidad de las habilidades de un personaje y las arquitecturas que éste puede proporcionar, he decidido dividir las habilidades en efectos. 101 00:07:49,819 --> 00:08:11,819 Cada efecto hace una cosa. Existen efectos de daño a un solo enemigo, daño a múltiples enemigos, meter bufos a múltiples enemigos, tal vez meter un tipo de estatus a uno mismo, incluso cosas como pedir una definitiva, un turno extra o adicionales. 102 00:08:11,819 --> 00:08:19,740 luego se habla un poco más con ello ya luego hablaremos en concreto de qué hace alguno de 103 00:08:19,740 --> 00:08:25,699 los kits de los personajes que hay y haré una pequeña demostración de lo sencillo que pueden 104 00:08:25,699 --> 00:08:31,819 ser crearlos a continuación os voy a dejar aquí un vídeo muy bonito de cómo he estado haciendo 105 00:08:31,819 --> 00:08:39,000 ciertos personajes vale en este caso voy a hacerlo de dos personajes dingo noodle y janoris cada uno 106 00:08:39,000 --> 00:08:45,360 tiene su propio vídeo dejaré aquí y aquí con sus repetidos timers que están dentro del vídeo 107 00:08:45,360 --> 00:08:53,720 luego los los hago más grandes y el de abajo lo mismo de esta forma podemos demostrar cómo 108 00:08:53,720 --> 00:09:01,259 de rápido y fácil puede hacerse un personaje y de mientras tanto voy a explicar los personajes sino 109 00:09:01,259 --> 00:09:07,000 la creación en sí de los personajes empezando por la creación de los personajes en resumen 110 00:09:07,000 --> 00:09:13,059 También los scriptable objects se pueden crear a través de este menú yendo hacia personajes 111 00:09:13,059 --> 00:09:17,820 o characters en este caso y dentro de ahí cogiendo las ability data. 112 00:09:17,820 --> 00:09:25,519 En ability data te saldrá una buena pantalla en el inspector donde te ponen todos los campos 113 00:09:25,519 --> 00:09:30,960 que puedas rellenar sobre dicha habilidad. 114 00:09:30,960 --> 00:09:35,559 En estos casos puedes hacer cosas tan simples como poner el scriptable object de amaje y 115 00:09:35,559 --> 00:09:44,179 Y en otros casos puedes llegar a hacer cosas más complejas como meter una habilidad data que se llama cada vez que hace cierto evento 116 00:09:44,179 --> 00:09:51,360 y que esta habilidad data pueda cambiar una habilidad o haga ciertas cosas como un ataque adicional. 117 00:09:52,159 --> 00:09:55,019 Mayormente se basa en eso y así de simple es. 118 00:09:55,019 --> 00:09:59,940 Ya luego puedes meterle condiciones o efectos 119 00:09:59,940 --> 00:10:02,639 Depende de lo que quieras 120 00:10:02,639 --> 00:10:08,240 Y todos estos de aquí son configurables con el orden que quieras 121 00:10:08,240 --> 00:10:12,460 El orden puede importar mucho dependiendo de lo que estés haciendo 122 00:10:12,460 --> 00:10:15,200 Y no hay mucho misterio de esto 123 00:10:15,200 --> 00:10:17,159 Ya que los vídeos ya se han terminado 124 00:10:17,159 --> 00:10:20,779 Vamos a mirar el tiempo con el que he tardado en hacer los personajes 125 00:10:20,779 --> 00:10:24,379 Sin tener que tocar ni una sola línea de código 126 00:10:24,379 --> 00:10:32,759 he podido crear aquí unos personajes en unos tiempos bastante asumibles no son los mejores 127 00:10:32,759 --> 00:10:41,559 debido a la dificultad de estos kits pero sí que es bastante asequible digamos después de esto os 128 00:10:41,559 --> 00:13:33,419 voy a mostrar un pequeño clip de cómo es en el combate tras haber completado todo esto os 129 00:13:33,419 --> 00:13:37,899 hablaré también un poco de algunas mejoras que se pueden llegar a hacer debido a la facilidad 130 00:13:37,899 --> 00:13:40,519 con la que esto se puede implementar 131 00:13:40,519 --> 00:13:43,379 sobre todo porque ya están casi implementados en el juego 132 00:13:43,379 --> 00:13:45,720 el primero de todos es el de los escudos 133 00:13:45,720 --> 00:13:51,000 es tan sencillo como meter un nuevo tipo de efecto 134 00:13:51,000 --> 00:13:53,519 y que este efecto sea de escudos 135 00:13:53,519 --> 00:13:55,659 lo tengo implementado en otro código 136 00:13:55,659 --> 00:13:58,679 y por eso no lo tengo en el principal 137 00:13:58,679 --> 00:14:03,379 debido a que no es funcional 100% 138 00:14:03,379 --> 00:14:06,919 otra cosa que se puede llegar a meter son los estados 139 00:14:06,919 --> 00:14:10,179 usando un state machine 140 00:14:10,179 --> 00:14:14,379 ya que esto ya está casi implementado completamente en el juego 141 00:14:14,379 --> 00:14:17,320 lo siguiente sería el behavior tree 142 00:14:17,320 --> 00:14:23,860 que es mayormente para poder darle cierto comportamiento a los enemigos 143 00:14:23,860 --> 00:14:28,259 en vez de que el automático simplemente haga una habilidad en concreto 144 00:14:28,259 --> 00:14:30,080 esto está casi implementado 145 00:14:30,080 --> 00:14:34,120 y muy probablemente en el futuro se vaya a implementar 146 00:14:34,120 --> 00:14:44,700 Después de todo esto y de este pequeño salmón, os puedo decir que esta es mi presentación del videojuego que he estado haciendo, Neverending Fight. 147 00:14:45,600 --> 00:14:56,399 No es tan extensivo como me hubiese gustado que fuese, pero es trabajo honesto y el trabajo honesto es valorable. 148 00:14:56,399 --> 00:15:07,740 Con todo esto os diré muchas gracias por vuestra atención y con esto me voy pirando a volver a jugar y mejorar este código.