Síntoma
Se despliega el juego con Docker siguiendo el repo, el jugador entra, y el mundo no se dibuja. El personaje y el HUD aparecen, pero el terreno queda vacío. En la consola del navegador:
404 /maps_optimized/mapa_1.json
404 /maps_optimized/mapa_5.json
404 /maps_optimized/mapa_8.json
...
Causa
frontend/public/maps_optimized/ no está en el repo (está en .gitignore). Se genera con:
cd server && pnpm export-frontend-maps
Ese script lee los 294 mapas de server/mapas_source/ y escribe los optimizados en frontend/public/maps_optimized/.
El problema es que el Dockerfile del frontend no ejecuta ese paso. Hace pnpm build de Next, que copia public/ tal como esté. Si la carpeta no fue generada antes, la imagen queda sin los mapas y el cliente pide archivos que no existen.
Es un fallo silencioso: el build termina bien, el contenedor arranca bien, la página carga bien. Falla recién cuando un jugador entra al mundo.
Cómo reproducir
Clonar limpio y construir el frontend con Docker sin generar los mapas antes. Entrar al juego y mirar la consola.
Propuesta
Cualquiera de estas, en orden de preferencia:
- Que el Dockerfile del frontend genere los mapas antes del
pnpm build. Requiere que server/mapas_source/ esté disponible en el contexto de build, así que hay que pensar el contexto o hacerlo multi stage.
- Un script de setup documentado en el README que haya que correr antes de cualquier build, y que el propio build falle con un mensaje claro si la carpeta no está.
- Versionar los mapas optimizados. Son 20 MB, lo cual no es ideal en git, pero elimina el paso y el modo de fallo.
Mínimo aceptable: que el build falle ruidosamente en vez de producir una imagen rota.
Criterios de aceptación
Archivos relevantes
frontend/Dockerfile
server/src/scripts/exportFrontendOptimizedMaps.ts
frontend/.gitignore (excluye maps_optimized)
Síntoma
Se despliega el juego con Docker siguiendo el repo, el jugador entra, y el mundo no se dibuja. El personaje y el HUD aparecen, pero el terreno queda vacío. En la consola del navegador:
Causa
frontend/public/maps_optimized/no está en el repo (está en.gitignore). Se genera con:Ese script lee los 294 mapas de
server/mapas_source/y escribe los optimizados enfrontend/public/maps_optimized/.El problema es que el Dockerfile del frontend no ejecuta ese paso. Hace
pnpm buildde Next, que copiapublic/tal como esté. Si la carpeta no fue generada antes, la imagen queda sin los mapas y el cliente pide archivos que no existen.Es un fallo silencioso: el build termina bien, el contenedor arranca bien, la página carga bien. Falla recién cuando un jugador entra al mundo.
Cómo reproducir
Clonar limpio y construir el frontend con Docker sin generar los mapas antes. Entrar al juego y mirar la consola.
Propuesta
Cualquiera de estas, en orden de preferencia:
pnpm build. Requiere queserver/mapas_source/esté disponible en el contexto de build, así que hay que pensar el contexto o hacerlo multi stage.Mínimo aceptable: que el build falle ruidosamente en vez de producir una imagen rota.
Criterios de aceptación
Archivos relevantes
frontend/Dockerfileserver/src/scripts/exportFrontendOptimizedMaps.tsfrontend/.gitignore(excluyemaps_optimized)