PULSA AQUÍ para leer una entrada ALEATORIA.

miércoles, 4 de marzo de 2026

FotoMuseo 3D - OPTIMIZANDO niveles para la Versión 5.0

Las tardes/noches de estas últimas semanas están siendo totalmente provechosas. Estoy plenamente enfocado en el desarrollo los añadidos de la Versión 5.0 de FotoMuseo 3D que quiero publicar lo antes posible este 2026. Versión que no solo tiene importantes adiciones de contenido, sino también un gran punto de Optimización. Ya que tras varios años desde que publicara las Versiones 1.0 y 2.0, he descubierto que el mayor problema de rendimiento que enfrentaban algunos de los mapas del juego, NO eran por los modelos 3D y quizá una excesiva carga poligonal acompañándoles, no.
 
Este es uno de los 4 Niveles Secretos desbloqueables a golpe de deseo al Dragón Mágico Rhexon...
No...
Una idea ahora mismo 200% descartada, porque una de las pruebas de fuego realizada en un duplicado del nivel que más problemas de rendimiento presentaba me llevó a descubrir que el problema radicaba en los cálculos de luces y sombras de ese nivel concreto y no la carga poligonal como he pensado durante varios años:
  • Sustituí todos los modelos 3D de ese nivel, por modelos 3D LOW POLY optimizados para tener una mínima carga poligonal. Y sin embargo, el nivel seguía funcionando fatal.
Mi lógica me llevó a deducir que el problema tenía que estar relacionado con la iluminación y las sombras dinámicas. Así que realizando una nueva COPIA del nivel conflictivo, procedí a ocultar TODAS las entidades relacionadas con luces, compilé... ¡¡Y VOILÁAAAA!!
 
De pronto el nivel funcionaba FINO FINO como si mi ordenador fuera un equipo de última generación con una gráfica monstruosa para moverlo...
 
Un nivel basado en la nostalgia de uno de mis primeros juegos de coches en PC... Speed Demons.
Sí...
Llegados a este punto restaba revisar el tipo de SOMBRAS que proyectaba cada luz de ese nivel y con ello tratar de descubrir cual era la entidad LUZ responsable de que el nivel se convirtiera en una cámara de fotos/diapositivas.
 
Lo bueno de este proceso, es que me permitió DESACTIVAR el cálculo de sombras para todas esas LUCES puramente testimoniales donde nuestro avatar/personaje controlable no va a transitar físicamente. Y solamente con este paso ya conseguí rascar algunos FPS (que teniendo en cuenta que sigo currando con mi viejo equipo, son más que bienvenidos).
 
El siguiente punto consistió en revisar las luces que SÍ calculan las sombras, y en todas ellas revisar si necesitaban proyectar SOMBRAS ESTÁTICAS o DINÁMICAS. Es decir, que las sombras se muevan o no en función de si el elemento que proyecta sombra se mueve o no... Y parece que no, pero aquí también conseguí rascar un mejor rendimiento al nivel, ya que había muchas luces interiores que tenían activada la opción de SOMBRA DINÁMICA para objetos inanimados que jamás se moverían del sitio. Desactivando la sombra dinámica y dejándola con la estática esas zonas empezaron a mejorar en fluidez a nivel de FPS.
 
Todavía está en fase de desarrollo y estoy decidiendo si le pongo límite temporal para completarlo...
A pesar de todas estas optimizaciones, el nivel aún seguía yendo bastante mal, y había repasado todas las luces artificiales. Y con esta denominación caí en la luz más importante del nivel que no había augurado...
 
¡¡La LUZ del SOL!!
 
La luz del Sol estipulada en una única entidad "Directional Light" que te está calculando iluminación y sombras todo el rato y en todo el mapeado. Esta entidad puñetera se come todos los recursos de la gráfica y de la CPU solamente por el hecho de existir en el nivel más de 20-30 objetos complejos decorándolo. Y como todos estos cálculos los sigue realizando incluso aunque nuestro avatar/personaje controlable no esté pasando por la zona iluminada por dicha luz, pues imaginaos si tenéis un nivel abierto lleno de árboles, edificios, vehículos e incluso escaparates con decenas de pequeños modelos 3D decorándolos. Aunque no estéis insitu para verlo, se están calculando en todo momento las sombras y reflejos de dichos objetos.
 
¿Cuál ha sido mi solución OPTIMIZADA para esta problemática?
Sustituir la "Directional Light" del Sol por una luz artificial imitando la iluminación natural. ¡¡Y funcionó!!
Alguien aquí me dirá: "¡Joder! ¿Pero la luz artificial no calcula también sombras?"
Mi respuesta sería: "Sí claro, pero calcula la iluminación y sombras únicamente donde se encuentra nuestro avatar o dentro de su rango de vista."
 
Es decir, aunque ilumine todo el nivel/mapa, el cálculo para visualizarlo mientras jugamos lo hace únicamente en el área que nos encontremos. Con lo cual conseguimos un rendimiento pleno al no tener que calcular las sombras del 100% del mapa, sino únicamente de la zona en la que nos encontremos. Toda esa carga gráfica de GPU y de procesador CPU de nuestro equipo quedaría disponible para concentrarse en las áreas visibles por nuestro personaje a medida que nos desplazemos.

Este pasillo se desbloquea en una de las Salas de FotoMuseo previo Deseo pedido a Rhexon...
Como último punto para la optimización, me quedaba pendiente hacer uso de la capacidad "Occlusion Culling" que tiene el motor gráfico Leadwerks para todos los elementos de un nivel/mapa.
 
¿Qué es el Occlusion Culling?  
El poder ahorrar potencia gráfica al desactivar el renderizado de objetos (con sus luces, sombras y reflejos) que se encuentran ocultos tras otros objetos y que nuestro personaje no pueda ver dependiendo de donde nos encontremos.
 
En la primeras versiones de FotoMuseo 3D, no hacía uso de esta capacidad, por lo que independientemente de que nos encontráramos, en interiores con 3 o 4 paredes bloqueándonos la vista del exterior, a nivel gráfico se estaban renderizando todos los objetos, haciendo que la carga gráfica del nivel subiera muchísimo. Incluso se renderizaban objetos lejanos aún sin que nuestro avatar/personaje estuviera presente o pudiera verlos directamente.
 
Al haberlo activado ahora, la renderización de estos objetos va igual de fino que con la luz artificial imitando el sol, solamente se realiza por donde pasa nuestro personaje y esté mirando. Es decir, nuestra gráfica o nuestra CPU se ahorra todo el trabajo de renderizado de objetos de los lugares que no pasamos y que no estén a la vista, o que no estemos mirando directamente. Consiguiendo así que la optimización de vistas sea mucho más satisfactoria sin sacrificar calidad gráfica, ni diseño de niveles.
 
Este pequeño Diorama tiene una gran carga nostálgica por mi parte. Pero ya no carga gráfica...
Ahora sí que funcionan fluidos los niveles problemáticos que no quería descartar por la gran carga de trabajo que ha habido tras ellos.
 
A nivel optimización, he conseguido el mismo efecto de Luz y presencia de objetos cercanos sin sacrificar nada en la estética original del nivel. Al contrario, ahora funcionan mucho mejor que antes.
 
Y esto parecerá una estupidez, pero en 2 de los 4 Niveles Secretos que estoy creando para la Versión 5.0, el conseguir una buena estética sin sacrificar efectos, ni la iluminación era crucial para los trasfondos que trato a nivel personal en ellos.
 
Por ejemplo, que el nivel en Blanco y Negro del Cementerio sea fluido durante nuestro tránsito por el explorando los secretos y desbloqueando zonas es primordial.
 
Pocas cosas dejo al azar en todo lo que hago. Las 4 cuadernas de este nivel son un ejemplo de ello...
Teniendo en cuenta que el blanco y negro funciona muchísimo en el nivel por varias razones:
  • Le da tono de “recuerdo”, como si el nivel ya fuese una memoria.
  • Refuerza la idea de arte dentro del concepto Museo + Cementerio en este nivel.
  • El efecto de iluminación conjugado con la niebla está bien medid. No satura la vista, pero sí crea profundidad y misterio.
Y aunque la Torre Central existe en la vida real sin ser una torre, necesitaba diseñarla así por las siguientes razones:
  • Es un ancla visual perfecta para orientarnos en todo momento por el nivel.
  • Rompe la horizontalidad del cementerio, ya que no he jugado con DISPLACEMENTS en el suelo y va a estar bastante llano.
  • Genera jerarquía clara en la composición de las 4 cuadernas Hobbits de Hobbiton del Cementerio.
  • Es perfecta para que sea un punto narrativo con secreto desbloqueable. Ya veremos...
En el nivel del circuito donde conducimos al majestuoso KODDY, la iluminación es clave junto a la niebla semidensa que he insertado para darle carga dramática al hecho de salir al exterior con el vehículo recién descubierto en el FotoMuseo. Añadamos que con los efectos de poder ver los reflejos del mundo en los cristales del mismo como parte de la experiencia, nos aseguramos que enganche al usuario como para motivar la exploración del circuito o la necesidad de completarlo a ver que sucede tras cruzar el Earthgate conduciéndolo.
 
En fin, muy orgulloso del resultado obtenido y feliz por haber solucionado una gran problemática como era la optimización de niveles. Con muchas ganas de seguir avanzando para publicar la Versión 5.0 de FotoMuseo 3D.
 
 



CONTINUAR leyendo el post...

viernes, 13 de febrero de 2026

Star Wars - Conversaciones entre padre e hijo posteriores al Episodio VI...

¡¡Buarnssss!!
El otro día publiqué una entrada compartiendo un vídeo FANMADE de Star Wars hecho con IA brutalísimo, mostrándonos lo que muchos queríamos haber visto en el canon de la pantalla grande... (CLICK aquí para leerlo)
 
Pues hoy entre varias recomendaciones, me ha salido este otro vídeo que me parece otra verdadera maravilla. Los diálogos me parecen impecables, y el hecho de que están hechos con IA y a pesar de eso parecen tener más vida y facciones más expresivas que otros vídeos que he visto, hacen que este vídeo sea por méritos propios candidato a otro de esos favoritos que te pondrías como interludio entre Episodio y Episodio:
 



CONTINUAR leyendo el post...