Parte de #2 (modo construcción). Depende de la capa de persistencia. Primera pieza del objetivo final: que cualquier jugador pueda construir su mapa.
El problema
Si cualquiera puede crear mapas, hacen falta dos garantías:
- Que un mapa de usuario no pueda romper el mundo oficial. Ni por error ni a propósito.
- Que un usuario entusiasta no tire abajo el servidor. Sin cuotas, el primero que suba 500 mapas con mil NPCs cada uno arruina la fiesta para todos.
Lo que ya existe y hay que aprovechar
El motor ya tiene convención de rangos de ID de mapa, y el cliente rutea según el rango:
| Rango |
Uso actual |
| 1 a ~500 |
Mundo oficial |
| 500 a 599 |
Mapas locales estáticos |
| 2.000 a 29.999 |
Retos |
| 30.000 en adelante |
Instancias dinámicas |
Los mapas de usuario deberían tener su propio rango reservado. Así el aislamiento es estructural, no una regla que hay que recordar aplicar.
Alcance
- Rango de IDs reservado para mapas de usuario, documentado, sin solapamiento con los existentes.
- Propiedad: cada mapa tiene un dueño (la cuenta que lo creó) y sólo esa cuenta lo puede editar.
- Cuotas por cuenta, configurables:
- cantidad de mapas
- peso total de assets subidos
- cantidad de NPCs y objetos por mapa
- Estados del mapa: borrador (sólo lo ve el dueño), propuesto (en cola de revisión), publicado (visible para todos), archivado.
- Aislamiento de economía: definir explícitamente qué se puede colocar en un mapa de usuario. Poder poner pilas de oro o ítems valiosos sería una fábrica de dinero infinito.
Decisiones a resolver en la issue
- ¿Los mapas de usuario cuelgan del mundo oficial mediante portales, o viven en un espacio aparte al que se entra desde un menú? Lo segundo es mucho más simple y aísla mejor.
- ¿Se puede combatir y ganar experiencia en un mapa de usuario? Si sí, es explotable. Sugerencia para la primera versión: no.
- ¿Qué pasa con el mapa cuando el dueño borra su cuenta?
Criterios de aceptación
Archivos relevantes
frontend/utils/gameLoader.ts (constantes de rango y ruteo por rango)
api/src/mapas_source/ (estructura de los mapas)
Parte de #2 (modo construcción). Depende de la capa de persistencia. Primera pieza del objetivo final: que cualquier jugador pueda construir su mapa.
El problema
Si cualquiera puede crear mapas, hacen falta dos garantías:
Lo que ya existe y hay que aprovechar
El motor ya tiene convención de rangos de ID de mapa, y el cliente rutea según el rango:
Los mapas de usuario deberían tener su propio rango reservado. Así el aislamiento es estructural, no una regla que hay que recordar aplicar.
Alcance
Decisiones a resolver en la issue
Criterios de aceptación
Archivos relevantes
frontend/utils/gameLoader.ts(constantes de rango y ruteo por rango)api/src/mapas_source/(estructura de los mapas)