Skip to content

Refactoriza Level 0 y modulariza los sistemas principales del juego#79

Open
fonixgm wants to merge 4 commits into
AgenteMaxo:mainfrom
fonixgm:feat/level-0-fiel
Open

Refactoriza Level 0 y modulariza los sistemas principales del juego#79
fonixgm wants to merge 4 commits into
AgenteMaxo:mainfrom
fonixgm:feat/level-0-fiel

Conversation

@fonixgm

@fonixgm fonixgm commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Resumen

Esta PR reorganiza la arquitectura del juego para separar Level 0 y reducir el código duplicado o concentrado en
archivos demasiado grandes haciendo que este partido el codigo y sea mas entendible y buscable dentro.

También incorpora mejoras de rendimiento, carga de recursos y mantenimiento, conservando los cambios actuales de
main v30.12.

Cambios principales

  • Level 0 separado en game/js/levels/level-0/.
  • Registro común de niveles para añadir futuros niveles sin modificar el núcleo.
  • Extracción de responsabilidades de main.js:
    • configuración e identidad;
    • controles táctiles, teclado, cámara y mando;
    • perfiles y partidas guardadas;
    • interfaz, códice, ajustes y modales;
    • autopruebas.
  • Reglas compartidas entre navegador y servidor para evitar implementaciones duplicadas.
  • Construcción del mundo compartida mediante una única fuente de verdad.
  • Carga del bloque 3D bajo demanda al entrar en partida.
  • Texturas exclusivas y recursos adicionales de Level 0.
  • Conversión de varios audios pesados a OGG.
  • Reutilización de objetos temporales y materiales en el render 3D.
  • Reducción del trabajo innecesario al representar salas concurridas.
  • Interpolación estable de jugadores remotos.
  • Simulación del servidor a 20 Hz con posiciones agrupadas a 10 Hz para reducir tráfico.
  • Integración de los cambios recientes de main, incluyendo:
    • equilibrio del agua de almendras en Level 0;
    • aire contaminado de Level 11;
    • mejoras de cámara y jugadores remotos;
    • aforo de 60 jugadores.

@jaime-gaming jaime-gaming left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Me quemaste 1.97€ y 17 minutos de review, pero parece que esta bien

@jaime-gaming

Copy link
Copy Markdown

Un cambio que no he detectado, es que no cambia a ninguna versión mucho menos actualiza el changelog

@AgenteMaxo

Copy link
Copy Markdown
Owner

¡Gracias @fonixgm! La parte de refactor es de mucha calidad, como siempre: la modularización de main.js, los tests unitarios con pipeline/test-unit.js, la carga diferida del bloque 3D (721 KB fuera de la portada), la actualización cuidadosa de CLAUDE.md y el sim/mundo.js dual son exactamente la dirección que queremos. Pero el PR no puede entrar como está, por dos bloques de motivos:

1. Mete mecánicas de juego nuevas que la descripción no menciona. Revisando el diff aparecen:

  • Un sistema de agotamiento (estamina): stat nueva a 100, se drena al caminar en todos los niveles, hace daño a 0, se recupera en reposo, con campo en estado/bienvenida y HUD.
  • Apagones de la Sala Manila como evento de sala cada 40-90 s (mensaje apagon).
  • Texturas nuevas de Level 0 (assets/levels/level-0/textures/).

Las tres son decisiones de diseño de AgenteMaxo (igual que en su día se retiró la Sintonía por decisión suya, y la dirección de arte de los niveles tiene un plan pendiente de su aprobación). No es un no a las ideas — el agotamiento puede gustarle y las texturas pintan bien — pero tienen que ir en PRs propios donde se vean y se decidan, no dentro de un refactor de 85 archivos.

2. Ha quedado desactualizado con lo que acaba de entrar en main (v30.13):

  • El PR Añade apagones globales al Level 1 y ajusta la sed #77 de josealmon ya ocupa el mensaje apagon (apagones globales de Level 1, con fases pre/oscuro/vuelve) y el protocolo ya es v9. El apagón de la Manila necesitaría otro nombre de mensaje y el protocolo pasaría a v10.
  • El PR Sfx v1.1 #80 añadió level-13/14/45.wav en assets/sounds/niveles/ — recolocar/convertir audios necesita rebase sobre eso.
  • La numeración («v31», protocolo v9) la asigna el mantenedor al mergear; mejor dejar la versión sin tocar en el PR.

Propuesta: trocearlo en tres PRs — (a) el refactor puro + tests + chunk 3D + conversión a OGG (eso lo revisamos y mergeamos rápido, es bienvenido); (b) agotamiento como propuesta de mecánica con su explicación para que AgenteMaxo decida; (c) texturas/fidelidad visual de Level 0 con capturas, que encaja con la dirección de arte que está definiendo. Si prefieres que el troceo lo hagamos nosotros a partir de tu rama, dilo y lo coordinamos. ¡Gracias de nuevo por el trabajazo!

@AgenteMaxo

Copy link
Copy Markdown
Owner

Actualización: AgenteMaxo ha revisado las tres incorporaciones y aprueba las tres — el sistema de agotamiento, los apagones de la Sala Manila y las texturas de Level 0. Así que ya no hace falta trocear el PR: puede entrar todo junto. 🎉

Lo que sí necesita antes del merge es un rebase sobre main v30.13 (tag v30.13), porque han entrado los PRs #77 y #80 y hay choques semánticos además de los de git:

  1. El mensaje apagon ya existe (apagones globales de Level 1 del Añade apagones globales al Level 1 y ajusta la sed #77, formato {t:'apagon', fase:'pre'|'oscuro'|'vuelve', duracion, restante, secuencia} + snapshot en estadoDinamico). El apagón de la Manila necesita su propio nombre — sugerencia: {t:'apagonManila', ms} — o integrarse en el sistema de fases si te encaja mejor.
  2. El protocolo ya es v9 en main. Tu PR pasaría a v10, subiendo el v: en cliente.js, bots.js y TODOS los server/test-*.js (son 6).
  3. assets-manifest.js cambió: el Sfx v1.1 #80 añadió level-13/14/45.wav a assets/sounds/niveles/. Tras el rebase, regenera con node pipeline/build-assets-manifest.js (el CI lo vigila).
  4. No fijes VERSION_JUEGO ni ?v= — los asigna el mantenedor al mergear (el siguiente ?v= libre es 296). Si los dejas como están en main, mejor.
  5. Con el rebase hecho: node pipeline/test-unit.js, node server/test-integracion.js y node pipeline/level0-audit.js en verde, y lo pasamos por el arnés e2e antes del merge.

En cuanto esté rebasado lo revisamos a fondo y lo mergeamos. Si prefieres que el rebase lo hagamos nosotros desde tu rama, dilo sin problema. ¡Gracias por el trabajazo, va a ser una versión muy gorda!

@fonixgm
fonixgm force-pushed the feat/level-0-fiel branch from ba0d0b8 to 321ae9f Compare July 17, 2026 19:16
@fonixgm

fonixgm commented Jul 17, 2026

Copy link
Copy Markdown
Contributor Author

ya esta hecho @AgenteMaxo , al final hice el rebase directamente sobre main v30.14, separe los apagones para que el de level 1 siga usando apagon (aunque no estoy del todo favor debería ser igual apagon-1 o algo referente) y el de la sala manila utilice apagonManila. tambien subí el protocolo a v10 en cliente, bots y todos los tests, regenere el manifest y mantuve la versión y el ?v=296 como están en main.
Tambien adapte el nuevo menu, la pantalla de caida y el noclip sin perder la modularizacion ni la carga diferida del 3D.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants