Skip to content

fix(docker): ensure optimized maps are generated in frontend build (closes #19) - #370

Open
dev-vishalmaurya wants to merge 1 commit into
Bitcoindefi:mainfrom
dev-vishalmaurya:fix/docker-frontend-maps
Open

fix(docker): ensure optimized maps are generated in frontend build (closes #19)#370
dev-vishalmaurya wants to merge 1 commit into
Bitcoindefi:mainfrom
dev-vishalmaurya:fix/docker-frontend-maps

Conversation

@dev-vishalmaurya

Copy link
Copy Markdown

Descripción del problema

En un clon limpio, frontend/public/maps_optimized/ no existe porque está ignorado en .gitignore. El frontend/Dockerfile realizaba pnpm build copiando únicamente frontend y packages/protocol, por lo que la imagen resultante no contenía los 294 mapas optimizados del juego. Al iniciar el contenedor y acceder desde el navegador, el cliente recibía errores 404 (ej. /maps_optimized/mapa_1.json) y el terreno del mundo no se dibujaba.

Solución implementada

  1. Script de validación y generación autónomo (frontend/scripts/ensure-maps.mjs):
    • Comprueba si los mapas optimizados ya existen (294 mapas). Si están presentes, omite la generación inmediatamente (< 1 ms).
    • Si faltan, busca el origen en server/mapas_source/ y los genera automáticamente en public/maps_optimized/ (~2 s).
    • Si faltan y el directorio fuente no está disponible, el build falla ruidosamente con código de salida 1 y muestra un mensaje claro con el comando a ejecutar:
      cd server && pnpm export-frontend-maps.
  2. Integración en ciclo de vida del frontend (frontend/package.json):
    • Agregado a predev y prebuild (pnpm run protocol:build && node scripts/ensure-maps.mjs).
    • Agregados comandos útiles pnpm run maps:ensure y pnpm run maps:export.
  3. Soporte en Docker (frontend/Dockerfile):
    • Se copia server/mapas_source en la etapa build (COPY server/mapas_source /app/server/mapas_source), de modo que pnpm build genera los 294 mapas antes de que la etapa final runtime copie public/. La carpeta de origen no se incluye en el runtime, manteniendo la imagen ligera.
  4. Documentación (README.md):
    • Se documentó el requisito de mapas optimizados y los comandos de generación manual tanto en el paso 4 del frontend como en la sección de Docker.

Criterios de aceptación verificados

  • Un clon limpio y un build de Docker producen un frontend con los 294 mapas que dibuja el mundo correctamente.
  • Si faltan los mapas y no hay origen, el build falla con código 1 y explica qué comando correr.
  • El README documenta el paso y los comandos disponibles.

Closes #19

@gitar-bot

gitar-bot Bot commented Sep 9, 2026

Copy link
Copy Markdown

Important

You are using the Gitar free plan. Upgrade to unlock code review, CI analysis, auto-apply, custom automations, and more.

Gitar

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.

El build de Docker produce un frontend sin mapas: el mundo no se dibuja

1 participant