Bueno, pensabais que os ibais a librar de mí tan fácilmente? NOOOOO!!
A pesar de que este hilo puede que lo visiten 3 personas, quizá 4 como mucho, a mí me sirve mucho para ordenar mis ideas y lo uso a modo de diario personal
Bueno, he abandonado todo y por eso no he actualizado el hilo?? nada de eso. El caso es que la nena que estaba malita, motivo por el que empecé el proyecto paralelo, está mucho mejor (menos mal) y ya era necesario el posible dinero de las ventas del juego.
Por supuesto, la noticia es buenísima, aunque me dejaba con la duda de qué hacer con el juego. Un proyecto que, realmente, no me entusiasmaba demasiado, pero que estaba bastante avanzado.
Pues decidí terminarlo en condiciones, ya sin prisas, y darle un poco más de "cariñito" a las diferentes aulas. Antes todo eran aulas, muy parecidas entre sí (vamos, lo que viene siendo un colegio) y he aprovechado para incluir algo más de variedad en el piso superior. Luego os lo enseño.
Pero antes, también he aprovechado para grabar y lanzar un curso en Udemy de más de 50 horas de desarrollo de videojuegos en Unreal Engine.
Hace un par de semanas lo actualicé con casi 4 horas más de contenido ampliando materiales y mecánicas, y justo este fin de semana he grabado una nueva actualización de casi 3 horas hablando de optimización de texturas y cómo texturizar modelos propios usando una variedad de programas como Blender, Substance Painter, Quixel Mixer etc. porque siempre es necesario saber hacer ciertas cosas, sobre todo cuando uno compra assets de terceros y se da cuenta que están optimizados con el ojete y hay que meterles mano.
La experiencia de haber hecho el curso ha sido positiva, y para finales de año tengo planteado uno con contenido más avanzado.
En fin, también me he tomado un par de semanas de vacaciones después de fin de curso en las escuelas, que para un maestro siempre es un periodo de muchísimo estrés, pero enseguida volví a ponerme manos a la obra con el juego del colegio, añadiendo nuevas localizaciones como la cocina:
El comedor:
Un sótano que es donde se invocó al demonio que recorre los pasillos:
El cual aquí está:
Un gimnasio:
Hay una amplia biblioteca (que falta por terminar de detallar:
También una sala con cadenas colgando because I can:
Un aula del futuro con croma y todo:
Aquí se cambian los chiquillos para hacer gimnasia:
Un laboratorio:
Una de las salidas por el techo:
Almacenes varios:
También hay un falso puzzle de fusibles en el que, como en todos los juegos de terror siempre hay uno, aquí simplemente rompo la cuarta pared haciendo que el juego diga que como soy un incompetente me he olvidado de completarlo. Hay más de 40 frases diferentes metiéndose conmigo llamándome flojo, incompetente etc:
Aquí una de las salidas (aunque hay un error y no es la salida del párking, es la salida del comedor, por donde la furgoneta de reparto con su mensaje correspondiente:
También están terminados los mensajes de tutorial:
Y cómo no, no podía faltar el grafitti más importante de todo el juego:
En definitiva, he pasado mucho tiempo optimizando el juego, que ha pasado de unos 70 fps a correr a más de 144, aunque según donde esté, tiene algunos bajones.
No ayuda que, tal y como veis en la imagen inferior, el colegio sea un enorme pasillo, lo que me deja con muy pocas opciones de ocultar geometría, dividir el nivel en otros subniveles etc.
Todo por ceñirme al diseño original del colegio. Lo cual, me ha ayudado mucho al tener tantas referencias, pero, por otro lado, me ha limitado a nivel técnico.
He tenido que llenar todo el nivel de geometría que, al pasar por ella ocultase elementos de aulas tales como luces que fuesen caras de renderizar, o incluso crear subniveles para cada aula pero únicamente para los objetos interactuables, ya que éstos generaban un "pulso" constante. Para que nos entendamos, si el juego corría a 60 frames por segundo, un elemento interactuable estaba, en cada frame comparando la posición del jugador con la suya propia para actualizar la rotación de la manita que indica que puede interactuar.
Hay que tener en cuenta que en el nivel hay cientos de esos objetos, por lo que había que limitar cuántos estaban activos en cada ocasión. Unreal Engine tiene nodos específicos para controlar eso, peeeero, esa función en particular, la tenía puesta en lo que se denomina Widget, que es el HUD de ese elemento interactuable. Y mira tú por donde, que en esos widgets no se puede desactivar ese "pulso" y volver a activar a voluntad, por lo que tuve que hacer niveles invisibles donde sólo estuviesen esos elementos, y cuando el jugador pasase por un cubo invisible puesto a la entrada de ese aula, hacer aparecer ese nivel, que como sólo tiene esos elementos, se puede superponer al nivel jugable en el que estoy, dando la ilusión de que los elementos interactuables están ahí y han estado siempre.
De ese modo, en vez de tener un par de cientos de elemetnos de esos dando por saco, tengo 3 o 4 a la vez como mucho.
También he tenido que optimizar materiales como un loco de assets de terceros.
Veréis, aquí se puede ver una silla, y a la derecha sus 5 materiales. Cada uno corresponde a un elemento concreto, un material de madera, uno de acero, uno de goma, uno para los tornillitos, e incluso uno para una chapita minúscula que tiene a la espalda:
Teniendo en cuenta que esto sucede en las sillas y en las mesas, y que en cada aula hay al menos 25 de cada, tengo varios centenares en el juego. El que cada modelo tenga más de un material es algo carísimo. Una vez leí una analogía que me gustó mucho, el tener un modelo con una única textura es como ir al banco a ingresar quinientos euros y dar un billete, y tener modelos con varias texturas, es como ingresar esos quinientos euros con monedas de euro (consumiendo lo que se conoce como Draw Calls), y hay que evitarlo, por lo que es preciso exportar cada modelo al que le suceda esto y hacer un proceso que detallo a continuación:
Tal y como se ve en la imagen superior, hay que exportar ese modelo, importarlo a un programa de edición 3d (yo uso Blender) y quitarle los materiales. Una vez quitados, hay que comprobar las UVs, que estaban hechas una mierda también, y es simplemente cómo las caras del modelo se proyectan sobre un plano. En ese plano estará la futura textura que usará el modelo, por lo que tiene que estar lo mejor posible. La imagen de arriba es el resultado final (aunque no es muy bueno, puesto que hay mucho espacio sin usar, pero aproveché para grabar la actualización del curso mientras hacía ese proceso y no quería alargarme mucho).
Luego, en substance Painter texturicé los elementos usando máscaras para evitar que se pintasen los elementos que no quería, y salió este resultado (que mejoraba el original a mi parecer):
También hice una variación en Quixel Mixer para grabarlo para el curso que mantendré para el juego:
Aquí podéis comprobar cómo la silla ahora está importada en el motor con el nuevo material, y cómo a la derecha sólo tiene un único slot:
He estado haciendo esto para el resto de elementos problemáticos del juego, y evidentemente, poco a poco he ido ganando en rendimiento, acercándome mucho al deseado para el lanzamiento.
También he implementado DLSS 3 y me he pasado días y días solucionando bugs que iban apareciendo, y cuando solucionaba uno tocando algo, rompía otra cosa inesperada donde menos lo pensaba.
En definitiva, todo va según lo previsto. El juego ahora mismo es jugable, pero, dado que el tiempo no apremia, quiero mejorar ciertas cosas, como las animaciones del demonio, y quedarían por crear el resto de objetos que pueden salir de los objetos interactuables. Ahora mismo puede salir todo lo necesario para escapar, pero hace falta crear objetos sin interés ninguno, sacapuntas etc. con todo lo que conlleva, su malla, textura, su icono, que aparezca en el inventario y que tenga una descripción etc.
Y luego, por supuesto, traducir a los idiomas seleccionados y una ronda de testeo antes del lanzamiento.
Sinceramente, estoy deseando lanzarlo para volver a ponerme con Souls Alive: Origins
Por mi parte, también estoy estudiando algo más de modelado con el curso de Oliver Villar (cosa seria) que debe poderme permitir hacer mejores cosas y mejorar las que ya hago y tengo pendiente mejorar mis conocimientos de Shading, pero poco a poco y mientras llevo mis proyectos a buen término.
En definitiva, espero poder postear por aquí el lanzamiento del juego y mis avances con Souls Alive