forked from dcatanzaro/aoweb
-
Notifications
You must be signed in to change notification settings - Fork 41
Etapa 0: capa de persistencia de ediciones de mapa #3
Copy link
Copy link
Open
Labels
GrantFox OSSIssue tracked in GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardIssue may be eligible for a GrantFox rewardThird CampaignCampaign: Third CampaignCampaign: Third CampaignbountyIssue con recompensa asignadaIssue con recompensa asignadaenhancementNew feature or requestNew feature or requestetapa-0-baseEtapa 0 - persistencia y permisos (desbloquea el resto)Etapa 0 - persistencia y permisos (desbloquea el resto)grantfoxPublicada en la campana de GrantFoxPublicada en la campana de GrantFoxmodo-construccionModo construccion in-game: editor de mapas en el navegadorModo construccion in-game: editor de mapas en el navegadorreward-100-usdRecompensa 100 USD - complejidad alta o fundacionalRecompensa 100 USD - complejidad alta o fundacional
Description
Activity
Metadata
Metadata
Assignees
Labels
GrantFox OSSIssue tracked in GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardIssue may be eligible for a GrantFox rewardThird CampaignCampaign: Third CampaignCampaign: Third CampaignbountyIssue con recompensa asignadaIssue con recompensa asignadaenhancementNew feature or requestNew feature or requestetapa-0-baseEtapa 0 - persistencia y permisos (desbloquea el resto)Etapa 0 - persistencia y permisos (desbloquea el resto)grantfoxPublicada en la campana de GrantFoxPublicada en la campana de GrantFoxmodo-construccionModo construccion in-game: editor de mapas en el navegadorModo construccion in-game: editor de mapas en el navegadorreward-100-usdRecompensa 100 USD - complejidad alta o fundacionalRecompensa 100 USD - complejidad alta o fundacional
Parte de #2 (modo construcción). Esta issue desbloquea todas las demás.
Problema
Los mapas son archivos estáticos en disco.
api/src/lib/mapNpcStorage.tssólo expone lectura:No hay ninguna ruta de escritura de mapas en todo el repo. Sin una capa de persistencia, cualquier editor visual no tiene dónde guardar.
Enfoque propuesto
No inventar un mecanismo nuevo. Extender el que ya funciona para el resto del game data:
game_data_revisionscon columnaskind,entity_id,action,checksumapi/src/repositories/(vergameObjects.ts,gameNpcs.tscomo referencia)Los mapas serían un
kindmás dentro de ese esquema.Alcance
game_maps(metadata por mapa: id, nombre, terreno, zona, pk, etc.)game_map_tiles(grilla: mapa, x, y, entrada de paleta, bloqueado)game_map_palette(paleta por mapa: clave, capas de gráficos, bloqueado)api/src/mapas_source/a la DB, idempotente (se puede correr de nuevo sin duplicar).game_data_revisions.Criterios de aceptación
game_data_revisionscon su checksumapi/src/tests/(ya hay 11 ahí como referencia de estilo)Archivos relevantes
api/src/lib/mapNpcStorage.ts(hoy sólo lectura)api/src/mapas_source/mapa_<n>/(294 mapas:meta.json,terrain.json,npcs.json,specials.json)api/src/repositories/gameObjects.ts,gameNpcs.ts(patrón a seguir)api/schema.sqlNotas
Vale la pena decidir temprano si la grilla se guarda fila por fila o como documento JSON por mapa. Son 100x100 = 10.000 tiles por mapa y 294 mapas: 2,9 millones de filas si se hace tile por tile. Medir antes de comprometerse.