Kirino 的游戏宝藏
← Volver al número 022
Observación de juegos

Señales hacia arriba y la cola ante la puerta: cómo Ben (RNG) usó composition para clavar la pesadilla en solitario de *Memento Manor* en la siguiente ronda colaborativa

Si, a lo largo de la última década larga, el guion por defecto de un postmortem indie ha sido «yo solo cargué con programación, arte, música y diálogo, y cerré diciendo que la…

Mis guardados ↗

Si, a lo largo de la última década larga, el guion por defecto de un postmortem indie ha sido «yo solo cargué con programación, arte, música y diálogo, y cerré diciendo que la próxima vez no lo haga en solitario», entonces el 10 de septiembre de 2026 Ben (firmado RNG), en itch.io, casi reescribe cómo se liquida esa factura. El juego se llama *Memento Manor*: un RPG espeluznante en vista cenital, formato por misiones dentro de una mansión ocupada por Residents paranormales. Interpretas a Mara Kalina, investigadora de lo paranormal que busca Mementos robados dentro de pesadillas de casos pasados. El motor es Godot; los scripts pasaron del GDScript del proyecto anterior *Phantom Forest* a C# / .NET. Este texto no ha jugado el build final; las escenas y sistemas siguientes salen del postmortem público del autor y de la observación de la página del juego.

Las imágenes que atraviesan el texto son «señal hacia arriba» y «la cola ante la puerta». La primera suena a higiene del árbol de escenas; como ética de producción es una promesa verificable de desacoplamiento: un hijo puede hablar sin conocer al padre, y el padre toma referencias hacia abajo cuando las necesita al momento. La segunda suena a chiste de ingeniería —todo el mundo sabe que las puertas arrastran a los programadores al barro—, pero en el relato de Ben es el campo de batalla más honesto del trabajo en solitario: una misma puerta debe servir Open, Peek y Loud Knock, hacer cola a varios Residents y forzar la salida de Peek cuando un Resident abre la misma puerta. El peso del solo no es el eslogan de ser «todoterreno»; es clavar estos sistemas uno a uno hasta poder decir: la próxima ronda quiero colaborar.

Portada de Memento Manor: mansión e investigadora

1. Lógica por defecto: solo igual a omnipotencia; managers globales igual a comodidad

La lógica por defecto de la industria es limpia y, por eso, perezosa.

Cuando una sola persona publica un juego completo, los equipos suelen abrir un menú familiar: volcar todo el estado persistente en un Game Manager gigante; copiar árboles de nivel con herencia de escenas para que «añadir un nodo» se propague; colgar un solo «pulsa E para interactuar»; fijar rutas de NPC de A a B; dar por hecho el cenital cuando «parece sprites pegados a un fondo». Los jugadores aprenden el mismo vocabulario para leer solitarios: «con que se pueda jugar basta», «el arte de programador tiene gracia», «un tirón en la animación de la puerta da igual». Ese pacto convierte la rudeza del solo en gramática industrial perdonable.

*Memento Manor* cuesta encajar en esa gramática: la mansión parte render y colisión por habitación; los Residents llevan Routine / Search / Chase / Sleep / Wander / Stunned / Trapped; las misiones personalizan habitaciones, Residents, enlaces de puertas y pickups con structs Investigation; el jugador tiene Walk / Run / Idle / Busy / Peek / Faint. El objetivo era una experiencia completa, no una demo que arranca. Meter eso en el calendario de una persona empuja el instinto industrial casi automáticamente a «cortar sistemas, cortar puertas, cortar el segundo piso».

El postmortem público de Ben rechaza el consuelo de ese atajo. Es directo: el solo es mucho trabajo; lo sabía de antemano, pero necesitaba ver el *porqué* con sus manos. Es sobre todo programador; su mejor trabajo está en la funcionalidad tras bambalinas —pero elegir solo implica aprender también música, gráficos y diálogo. La línea más afilada no es autocompasión sino dirección: espera proyectos colaborativos a continuación, porque el solo le enseñó lo básico de otros oficios y así puede escribir su parte pensando en esos flujos. La bifurcación está aquí. Lo por defecto pregunta qué cortar cuando una persona no puede cargar. Él pregunta qué desacoplamiento, si se escribe bien mientras una persona *sí* puede cargar, evita que la siguiente ronda colaborativa arrastre el mismo acoplamiento al barro.

2. Romper el guion: señal arriba, referencia abajo, y máquinas de estados que hacen explícito lo «Busy»

El desacoplamiento es fácil de afirmar y difícil de demostrar. La idea «segura» suele ser convertir todo en singleton global, o tratar la herencia de escenas como duplicación gratis. Ben llega con experiencia previa: *Phantom Forest* ya usaba GDScript; pasar a C# no era solo «saber otro lenguaje», sino temer que quedarse solo en GDScript limitara motores e IDE futuros, mientras Godot .NET enchufa Visual Studio y le permite seguir con el C# de la universidad. El postmortem lista tablas hash, estáticos, lambdas, enums, interfaces, structs, herencia, polimorfismo, asignación null-condicional, async y un assert propio. La intención es dura: si usas C#, no lo uses como piel de GDScript.

C# también pasa factura. A diferencia del vaciado casi inmediato de GDScript, el GC limpia a granel y con poca frecuencia, así que refs recién borradas aún pueden tocarse; los managers globales no deben guardar refs a objetos no globales o el cambio de escena filtra; las listas estáticas deben duplicarse antes de mutar o se contaminan diccionarios compartidos de Residents; los nodos locales conectados a señales globales deben desconectarse en `_ExitTree` —GDScript suele limpiar al cambiar de escena, C# no. No es pedantería abstracta; son los «pequeños quirks» que explotan en el mes tres del solo.

Lo que realmente rompe el guion por defecto es composition y la disciplina **signal up, reference down**. Los hijos reportan hacia arriba con señales sin conocer al padre; el padre guarda referencias hacia abajo cuando necesita datos al instante. Un hijo estilo HealthComponent puede colgarse del jugador o del enemigo; un Interact Area como hijo Area2D puede adherirse a cualquier interactuable, y el padre solo conecta la señal de «alguien en rango». El riesgo está en el mismo párrafo: componentes mal documentados ciegan sistemas; la solución es nombres que digan el propósito (p. ej. HealthComponent), componentes cortos, una sola responsabilidad. La flexibilidad no es gratis: compra reutilizar sistemas pequeños bajo padres distintos y paga con interfaces que se lean como contratos para otros humanos.

Aquí las máquinas de estados no son sustantivos de manual; clavan «¿puede moverse este personaje ahora?» en una tabla de métodos heredable. Lado jugador: Walk / Run / Idle manejan movimiento e interacción; Busy quita el movimiento durante interacciones; Peek además mueve luces del hueco de la puerta y sale al instante con input del jugador, otro personaje usando la puerta o ser visto —y avisa a la puerta para resetear; Faint espera la animación de desmayo y el salto de tiempo en la mansión tras ser atrapado, ocultando la UI. El Residents por defecto es Routine por tiempo y lugar; NoiseArea o antorcha en rango de escucha / detección entra Search; línea de visión por raycast entra Chase; al destino, Sleep o Wander; debilidades y trampas entran Stunned / Trapped y a menudo sueltan un Memento. Move / Turn sobrescribibles en State base permiten que Busy no haga nada mientras Walk debe responder al input: la complejidad queda dentro del nuevo estado, no en un `if` de tres mil líneas.

Interior cenital de la mansión: habitaciones, luz e investigables

3. Puertas, rutas, Investigations: escribir el sistema más duro como misiones personalizables

Más allá del presupuesto de frames, el coste más caro del solo suele ser «una puerta». Ben lo dice claro: entre todos los diseños, las puertas acumularon más reescrituras, ajustes y compromisos; los Residents quizá sean el objeto más complejo, pero las puertas siguieron siendo feroces. La razón es terrosa y exacta: las puertas rara vez son solo transiciones de nivel; son interactuables, divisores del entorno, usables por varios tipos de personaje, bloqueables, espiables, con golpe fuerte. Cada uso quiere cambio de estado, reset limpio y aviso a otros de que «esta puerta no está disponible ahora».

Las puertas de *Memento Manor* eligen una transición por fundido al estilo Pokémon, no caminar por el vano: abrir sprite, fundir al personaje, mover al marcador de la puerta opuesta, fundir de vuelta, cerrar. Los interactuables comparten un sistema Action; las puertas cuelgan tres ranuras estándar: Open, Peek, Loud Knock. Solo un personaje abre a la vez, con prioridad sobre Peek; si el jugador espía mientras un Resident abre, Peek se fuerza a salir hasta que el Resident llega y pasa un breve retraso; varios Residents hacen cola, reintentan tras un retraso corto hasta un límite y luego unstuck a la posición de rutina. La animación planeada de «entrar, ocultarse tras el muro, salir» fue demasiado lenta, difícil y de poco ganancia: se cortó. No es romanticismo de terminarlo todo; es la honestidad cara del solo: la transición solo necesita decir «cambio de habitación», no interpretarlo.

La navegación fija «los NPC pueden caminar» con estructuras concretas. Cada habitación tiene un NavigationRegion2D; muebles y muros usan NavigationObstacle2D; las puertas enlazan con NavigationLink2D. Los Residents llevan un nodo goal que avanza hacia marcadores de puerta o el final. Un struct Route guarda inicio, lista de habitaciones, marcadores y funciones filtro de pasos; un diccionario connections precargado da rutas más cortas y admite enlaces de habitación personalizados. La máquina de estados decide cuándo recalcular: Routine quizá una o dos veces por habitación; Chase / Search refrescan a menudo con objetivos móviles. Las habitaciones gestionan render, colisión, luces y sonido ambiental: la entrada del jugador enciende capas; Residents en otras habitaciones siguen con nav pero saltan lo visual; la colisión puede apagarse si están vacías. El truco más elaborado son los «projectors»: SubViewports a medida proyectan una habitación en vivo «debajo» de otra para profundidad de planta —Lobby desde el Balcón, Jardín desde el Puente. La intención se lee en el material; este texto no ha medido la sensación en juego.

El corazón del formato por misiones es el struct Investigation. Tras elegir en el escritorio, la mansión lo lee: habitaciones oscuras / cerradas / desactivadas, remap de puertas, tipos de Residents, rutinas, dificultad, diálogo y ubicación de NPC, probabilidades y orden de pickups, habitación de inicio del jugador, objetos, cordura. La dificultad no es un multiplicar lineal: valoraciones 1–10 de Residents muestrean un recurso Curve de forma no lineal hacia velocidad, daño de cordura, radio de detección, etc. El mundo vive en un SubViewport 960×540 estirado ×2 para alinear con UI 1920×1080, filtro Nearest para píxeles; Tween frente a AnimationPlayer es una filosofía ejecutable: «Usa tweens cuando el valor final es desconocido; si no, usa un AnimationPlayer». La herencia de escenas se degrada explícitamente: las escenas base que imponen nodos desperdician y atan; prefiere componer escenas y dejar la herencia de scripts dentro de los objetos.

El cenital «no plano» también es lista ejecutable, no adjetivos de atmósfera. Sombras a los pies según tamaño y altura; polvo CPUParticles2D al moverse da peso; Y-sorting sostiene delante/detrás con NPC y props; muros y barandillas cercanos se desvanecen al acercarse, habitaciones exteriores pueden desactivar el fade para conservar el encierro, habitaciones oscuras desvanecen el primer plano por defecto para que la oscuridad sea el obstáculo principal. Los interactuables heredan una base, hasta tres ranuras Action reescribibles en caliente (puerta cerrada, entrar/salir del armario), con nombres de action state para que el jugador pase al Busy o al estado adecuado; un Interaction Manager global hace de intermediario, valida, mutualiza y llama clear al terminar. En singletons: Game / Save / UI / Player / Audio / Item / Time / Interaction cada uno un trozo —y el autor nombra Item y Time como mejores locales a la mansión hoy que singletons tocables desde todas partes. No es humildad tardía; es el veto raro del postmortem en solitario: los globales de más se vuelven agujeros negros que nadie se atreve a tocar en la siguiente ronda colaborativa.

UI de Investigation y personalización de misión

4. Cierre: indie es querer convertir el solo en el manual de la siguiente colaboración

Devuelve este relato del 10 de septiembre al otoño de 2026 en la escena Godot en solitario, y lo primero que golpea es una inercia de producción oculta. La gente convierte el solo en mito de omnipotencia, más singletons globales en comodidad, «la puerta funciona» en suficiente, y rara vez pregunta: ¿tu desacoplamiento ahorra la próxima semana de una persona, o deja interfaces para el próximo proyecto de varias? Ben abre otro camino. Señal arriba / referencia abajo puede ser disciplina. Las máquinas de estados pueden encerrar Busy / Peek / Faint y Chase / Search en sus tablas de métodos. Los structs Investigation pueden convertir «otra misión» en rellenar un formulario, no clonar un árbol de nivel. Las puertas pueden admitir que son pesadillas y aún así dejar colas y salidas forzadas de Peek. Incluso se autocritica en Item y Time Managers: hoy tendería a lo local. En un postmortem en solitario, «sobredimensioné globales» sirve más que «lo hice todo».

Para equipos pequeños el paquete es afilado y útil. Puede que no tengas la tabla completa de estados de Residents ni projectors SubViewport. Seguro tienes una lista de «los defaults bastan». Una sola tecla de interactuar. Una puerta sin cola donde el segundo NPC atraviesa. Un manager global que guarda refs que deberían morir con la escena. Un paso de GDScript a C# que olvidó desconectar en `_ExitTree`. Un cenital solo con placa de fondo —sin sombra a los pies, polvo, Y-sort ni fade cercano. Dificultad lineal que «de pronto es injusta» en el rango diez. La tarea pública de Ben escribe el coste en tierra: el solo fue para conocer otros oficios; los prototipos pueden seguir en solitario; los juegos completos los quiere colaborativos; las inspiraciones incluyen *Luigi’s Mansion*, *Gregory Horror Show*, *Amnesia: The Dark Descent*, *Pokémon Platinum* —citas de fuente, no sustituto de jugar. La página de itch lista Windows / Linux, v1.0.0 y «No generative AI was used».

Indicaciones ejecutables, breves:

  • Antes del primer commit de «manager global», escribe una línea de disciplina: qué actualizaciones van señal arriba, qué datos van referencia abajo; si nodos temporales conectan señales globales, escribe las desconexiones `_ExitTree` en el mismo cambio.
  • Cuando las decisiones del personaje superen tres comportamientos mutuamente excluyentes, extrae primero un State base y un componente de máquina de estados; haz explícitos Busy / inmóviles, no bools dispersos.
  • En puertas, teletransportes e interactuables compartidos por varios personajes, diseña cola, exclusión mutua y condiciones de salida forzada antes de debatir animaciones de cruzar el vano.
  • Personaliza variantes de misión con structs (o datos equivalentes), no árboles de escena clonados; muestrea dificultad en curvas, no explotes linealmente en el rango diez.
  • Si la salida del solo es «aprender a colaborar», convierte el oficio que no es tu fuerte en interfaces y nombres entregables, no en números mágicos que solo tú editas.

Señal arriba, cola ante la puerta, Investigation como formularios, y la frase «solo development is a lot of work». Mientras el postmortem siga público y el juego descargable en itch, el autor ya fijó el criterio de auditoría: no «¿puede una persona terminarlo?», sino «después de terminarlo, ¿dejaste en el repo el desacoplamiento que necesita la siguiente ronda colaborativa?».

小光

Fuentes y lectura adicional

Ben (RNG) (2026-09-10) Memento Manor - A Paranormal Postmortem Introspection

Página del juego Memento Manor (Windows / Linux, v1.0.0; indica No generative AI was used)

Accede para guardar tus lecturas.

Consulta tus Me gusta y artículos guardados en cualquier dispositivo.

Acceder