› Proyecto: Una Playa Oscura › Godot: Crónicas del Refugio en la Niebla (DevLog 5)
- Este debate está vacío.
-
AutorEntradas
-
-
7 de junio de 2026 a las 05:23 #103
Drk0027
Superadministrador::Como para no parezca proyecto abandonado, aquí comparto un montón de los cambios mas frescos que tengo:
Diario de avances
1. Mejoras de Legibilidad y UI :
-
- Contraste en Barras: Se agregaron
PanelContaineral fondo de la barra superior en las escenasmain.tscnymenuprincipal.tscn.
- Contraste en Barras: Se agregaron
-
- Control de Inventario: Se añadieron paneles detrás de los botones de Inventario y Cerrar Inventario.
-
- Resultado: Se logró claridad en elementos que antes se perdían debido al fondo dinámico del juego.
2. Atmósfera y Efectos Visuales (Hoy):
-
- Shader de Niebla Negra: Implementación de un shader de ruido en la pantalla inicial para dar ambiente de «peligro» desde el arranque.
-
- Efecto de Brillo (Glow/HDR): Configuración de los botones en modo Lineal (Intensidad I) para que resalten sobre la niebla negra, asegurando que el jugador siempre encuentre el camino.
3. Lógica del Inventario (Hoy):
-
- Control de Pestañas: Corrección del método
$TabContainer.set_tab_hidden(1, true)para gestionar correctamente la visibilidad de las secciones del inventario.
- Control de Pestañas: Corrección del método
4. Fijación del Sistema de Capas (Shaders): Se solucionó el conflicto del buffer gráfico envolviendo el shader de Glitch dentro de un nodo
BackBufferCopyaislado. El efecto ahora deforma violentamente el fondo pixelado, los textos y los botones en tiempo real sin congelar la pantalla ni bloquear la interactividad de la interfaz.5. Gestión Dinámica de la Fogata: Se implementó una variable oculta de control (
combustible_fogata) que maneja un rango de 0 a 100%. Esto permitió conservar la bandera original de 3 niveles de luz (fogata_luz) intacta, salvando todo el sistema de condicionales previo y permitiendo un declive orgánico turno a turno.El Dilema del MVP: El Incentivo de Escape
El balance actual permite resolver casi toda la exploración interna de la casa con un único leño. Al poder conseguir más leños en el bosque por puro azar, el jugador puede «atrincherarse» cómodamente dentro del refugio seguros, perdiendo el miedo y el incentivo para arriesgarse a salir o avanzar hacia el clímax.
Estructura del Clímax Pendiente:
-
- Hito Clave: Recoger la nota en la Habitación 2 (
hab2).
- Hito Clave: Recoger la nota en la Habitación 2 (
-
- Disparador Final: Activar la secuencia de «Escape» (Persecución en la niebla).
«El Asedio del Refugio» (Mecánica de Presión Coercitiva)
Para resolver el problema de la falta de incentivos sin importar cuántos leños tenga acumulados el jugador, se ha implementado un disparador obligatorio basado en el conocimiento, no en los recursos.
Narrativa e Integración de Diálogos: Se unificó, corrigió y pulió el bloque de diálogos clave para el nodo JSON del juego. El texto introduce de forma orgánica mecánicas de supervivencia (gestión de fogata, leños, cerillos) y un potente giro de terror psicológico con la lectura de la nota que rompe la cuarta pared.
-
- Optimización Visual en Godot 4:
-
Se eliminaron las itálicas para proteger la legibilidad de la fuente Roman Antique.Se usan actualmente italicas y bold gracias a que aprendi a usar un alternate font XD
-
- Se implementó con éxito un sistema de contorno (Outline) en el nodo
RichTextLabel, resolviendo el problema de contraste sobre fondos oscuros animados sin necesidad de una caja de texto opaca.
- Se implementó con éxito un sistema de contorno (Outline) en el nodo
-
- Optimización Visual en Godot 4:
Sistema de Metanarrativa implementado.
El juego cuenta con un sistema de presagios en las escenas que arroja mensajes únicos al caer en un Bad End (ej: «No sabía que eras de los que apostaban a lo inseguro»). Sin embargo, al estar aislados en las escenas, no había forma de medir cuántos logros totales existían, no había un contador global y faltaba una motivación de peso para que el jugador quisiera coleccionar sus fracasos narrativos.
Soluciones de Diseño Adoptadas
-
- Centralización de Datos (Autoload): Se definió un diccionario maestro en el
GameManager(Autoload) que contiene la ID de cada logro, su tipo (emoji), su estado (true/false) y su descripción literaria. El archivologros.savesolo registrará los cambios de estado, permitiendo calcular el progreso total matemáticamente de forma simple.
- Centralización de Datos (Autoload): Se definió un diccionario maestro en el
-
- Interfaz Reutilizable (Donde «Menos es Más»): Se diseñó la arquitectura para crear una única escena base de logros (
PantallaLogros.tscn). Gracias a la jerarquía de Godot, esta misma escena se incrustará tanto en la pestaña Info (dentro del menú del juego) como en una pantalla independiente accesible desde el menú principal. Cero duplicación de código. - Ubicación exacta de la muerte/hito.
- Jerarquía de la Tarjeta Individual: Cada logro es un contenedor que se empareja por nombre directo con el Autoload. Si está bloqueado, se muestra críptico (solo el título). Si está desbloqueado, revela tres bloques de datos sumamente útiles para la rejugabilidad:
- Tipo de logro (Final Trágico, Logro de Historia, etc.).
- Último presagio exacto recibido en la partida.
- Interfaz Reutilizable (Donde «Menos es Más»): Se diseñó la arquitectura para crear una única escena base de logros (
Al diseñar la pantalla de logros, nos enfrentamos al clásico cuello de botella del desarrollo de interfaces: la repetitividad. Teníamos 7 logros creados manualmente en la escena (
logro_1,logro_2, etc.) dentro de unScrollContainer.Hacer esto de forma tradicional implicaba un «suicidio técnico»:
-
- Conectar una señal
_gui_inputmanual en el editor para cada tarjeta. - Crear una función individual por cada logro para abrir el panel de descripción.
- Modificar manualmente los textos, estados y visibilidad de los nodos internos de cada tarjeta.
- Resultado esperado a largo plazo: Un script kilométrico, propenso a errores y horrible de mantener al escalar a 50 o 100 logros.
- Conectar una señal
Decidi implementar un enfoque Data-Driven (Guiado por Datos) centralizado en el script raíz del nodo de interfaz (
Control), utilizando el AutoloadGameManager.gdcomo la única «fuente de la verdad».1. Gestión de Datos Centralizada
En
GameManager, los logros se almacenan en un diccionario limpio. Cada logro contiene su estado (bloqueado/desbloqueado), tipo de icono y su descripción en formato BBCode:var logros = { "logro_1": { "tipo": "💀", "estado": true, "descripcion": "La niebla te alcanza..." }, "logro_2": { "tipo": "🔒", "estado": false, "descripcion": "" } }2. Automatización en la Inicialización (
_ready)En lugar de escribir código para cada nodo, el script raíz ahora ejecuta un bucle
forque recorre el diccionario delGameManager:- Búsqueda Dinámica: Encuentra el nodo en la escena usando
get_node_or_null(id_logro)emparejando el nombre de la clave del diccionario con el nombre del nodo físico. - Inyección Visual: Cambia automáticamente los emojis y activa/desactiva los contenedores internos de
BloqueadoyDesbloqueadosegún el estado booleano. - Conexión de Señales vía Código (Lambdas): Usamos funciones anónimas (
func(event):) para conectar el clic de todas las tarjetas a una sola función maestra, inyectándole directamente los datos del logro correspondiente.
3. UX y Validaciones Inteligentes
- El panel de descripción lateral (
PanelDescripcion) se actualiza dinámicamente con el texto BBCode. - Validación de Seguridad: Si un logro está bloqueado o su descripción está vacía, el código rompe el flujo de inmediato. Esto evita que la interfaz se abra vacía o muestre datos antes de tiempo.
- Alternancia inteligente: Si el jugador hace clic en un logro que ya está abierto, el panel se cierra automáticamente para no saturar la pantalla.
Barra de Progreso Dinámica
Implementamos un cálculo matemático en tiempo real que cuenta los estados
trueen el diccionario global y actualiza un nodoProgressBar(VBoxContainer/ProgressBar). El porcentaje se calcula automáticamente dividiendo los logros desbloqueados entre el total, asegurando que la barra funcione con 7 o con 500 logros sin tocar el código.Diario Visual
Bueno, a quien le importa las cosas técnicas. debido al gran avance que he tenido, estoy mas cerca de poder concentrarme solo en el apartado artístico, asi que podemos ir mostrando los cambios mas significativos de la interfaz.
la pantalla inicial ha tenido mejoras sustanciales como:
- Shader de niebla (ta lindo)
- Botones coloridos y con bordes redondeados
- Nuevos botones de logros y créditos
- Mejoras en la accesibilidad (el boton enfocado es iniciar y se puede navegar con el teclado y mouse y gamepad)

- Mejoras en la pantalla de lectura
- la parte superior no se pierde con el fondo
- agregada la fila de «presagio»
- el boton ya no se pierde con el fondo
- mejorada la accesibilidad (el boton de adelante ya tiene el focus por defecto)

- Una pantalla de logros modular
- la primera se accede desde el boton del trofeo en la pagina de inicio
- la segunda se accede desde el menu del juego durante la partida
- los logros se desbloquean por alcanzar un bad end o un checkpoint
- aun no se que poner de nombre a la ventana de inventario, temporalmente se llama Panel de control ;-;

Conclusiones
aun queda un montón de cosas por hacer, pero el motor esta prácticamente listo, siendo que lo mas importante es continuar con el apartado estético. Me queda pendiente terminar de llenar los pocos logros que ya tengo y si no me equivoco, empezar a crear los fondos estáticos y animados según corresponda. conforme voy aprendiendo, tambien voy viendo posible agregar música ambienta, y como ya esta implementado el sistema de fondos dinámicos, entonces la música ambiental puede modificarse a partir de los fondos, asi ya no tengo que preocuparme por crear una nueva mecanica.
Los logros por cierto, están implementados como se puede ver, pero están hardcodeados. voy a dejar para el final porque los logros se guardan permanentemente en el dispositivo del jugador, asi que si durante las pruebas completas todos los logros y hay novedades, no podrás volver a bloquear los logros para desbloquearlos segun las nuevas novedades. el sistema de logros entonces queda para el final, casi antes de la entrega del MVP
Aunque he ido apuntando mas o menos todo lo que he hecho, no se si se me queda pendiente algo, asi que pues… que mas da. Pero son un montón de avances. creo que es razón suficiente para estar satisfecho.
-
-
-
AutorEntradas
- Debes estar registrado para responder a este debate.