@jjlmoya/utils-tabletop 1.28.0 → 1.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +2 -0
  3. package/src/entries.ts +4 -0
  4. package/src/tests/locale_completeness.test.ts +2 -9
  5. package/src/tests/tool_validation.test.ts +1 -2
  6. package/src/tool/mus-scoreboard/component.astro +21 -11
  7. package/src/tool/rpg-settlement-exploration-map-generator/.keep +1 -0
  8. package/src/tool/rpg-settlement-exploration-map-generator/bibliography.astro +11 -0
  9. package/src/tool/rpg-settlement-exploration-map-generator/bibliography.ts +7 -0
  10. package/src/tool/rpg-settlement-exploration-map-generator/component.astro +66 -0
  11. package/src/tool/rpg-settlement-exploration-map-generator/controller.ts +231 -0
  12. package/src/tool/rpg-settlement-exploration-map-generator/dom-views.ts +174 -0
  13. package/src/tool/rpg-settlement-exploration-map-generator/editor.ts +85 -0
  14. package/src/tool/rpg-settlement-exploration-map-generator/entry.ts +27 -0
  15. package/src/tool/rpg-settlement-exploration-map-generator/evaluator.ts +8 -0
  16. package/src/tool/rpg-settlement-exploration-map-generator/i18n/de.ts +152 -0
  17. package/src/tool/rpg-settlement-exploration-map-generator/i18n/en.ts +63 -0
  18. package/src/tool/rpg-settlement-exploration-map-generator/i18n/es.ts +233 -0
  19. package/src/tool/rpg-settlement-exploration-map-generator/i18n/fr.ts +152 -0
  20. package/src/tool/rpg-settlement-exploration-map-generator/i18n/id.ts +152 -0
  21. package/src/tool/rpg-settlement-exploration-map-generator/i18n/it.ts +152 -0
  22. package/src/tool/rpg-settlement-exploration-map-generator/i18n/ja.ts +152 -0
  23. package/src/tool/rpg-settlement-exploration-map-generator/i18n/ko.ts +152 -0
  24. package/src/tool/rpg-settlement-exploration-map-generator/i18n/nl.ts +152 -0
  25. package/src/tool/rpg-settlement-exploration-map-generator/i18n/pl.ts +152 -0
  26. package/src/tool/rpg-settlement-exploration-map-generator/i18n/pt.ts +152 -0
  27. package/src/tool/rpg-settlement-exploration-map-generator/i18n/ru.ts +152 -0
  28. package/src/tool/rpg-settlement-exploration-map-generator/i18n/sv.ts +152 -0
  29. package/src/tool/rpg-settlement-exploration-map-generator/i18n/tr.ts +152 -0
  30. package/src/tool/rpg-settlement-exploration-map-generator/i18n/zh.ts +152 -0
  31. package/src/tool/rpg-settlement-exploration-map-generator/index.ts +4 -0
  32. package/src/tool/rpg-settlement-exploration-map-generator/logic.test.ts +65 -0
  33. package/src/tool/rpg-settlement-exploration-map-generator/logic.ts +288 -0
  34. package/src/tool/rpg-settlement-exploration-map-generator/rpg-settlement-exploration-map-generator.css +885 -0
  35. package/src/tool/rpg-settlement-exploration-map-generator/seo.astro +11 -0
  36. package/src/tool/rpg-settlement-exploration-map-generator/storage.test.ts +12 -0
  37. package/src/tool/rpg-settlement-exploration-map-generator/storage.ts +24 -0
  38. package/src/tool/rpg-settlement-exploration-map-generator/ui.ts +81 -0
  39. package/src/tools.ts +2 -0
@@ -0,0 +1,233 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { SettlementMapLocaleContent, SettlementMapUI } from '../entry';
4
+
5
+ const ui: SettlementMapUI = {
6
+ intro: 'Diseña un mapa de exploración de asentamiento para tus partidas. Elige el paisaje, el tipo de poblado y el estilo arquitectónico, y ajusta celdas con clic derecho o pulsación prolongada.',
7
+ seedLabel: 'Semilla y nombre de la aldea',
8
+ seedHint: 'La semilla genera un patrón determinista único para la distribución de caminos y edificios.',
9
+ randomSeed: 'Generar nuevo nombre',
10
+ environmentLabel: 'Paisaje circundante',
11
+ forest: 'Bosque',
12
+ plains: 'Llanura',
13
+ coast: 'Costa',
14
+ river: 'Río',
15
+ mountain: 'Montaña',
16
+ styleLabel: 'Estilo arquitectónico',
17
+ styleHint: 'Cambia la identidad estética: tejados, materiales, estructuras y vegetación regional.',
18
+ styleTimber: 'Entramado',
19
+ styleStone: 'Piedra',
20
+ styleCoastal: 'Costero',
21
+ styleHighland: 'Alta montaña',
22
+ styleMedieval: 'Medieval',
23
+ styleEdo: 'Edo',
24
+ styleSahelian: 'Saheliano',
25
+ sizeLabel: 'Tamaño del asentamiento',
26
+ hamlet: 'Aldea',
27
+ hamletHint: 'Poblado pequeño',
28
+ village: 'Pueblo',
29
+ villageHint: 'Base local',
30
+ town: 'Villa',
31
+ townHint: 'Núcleo urbano',
32
+ homesLabel: 'Viviendas',
33
+ homesHint: 'Ajusta la cantidad de casas respetando el tamaño y espacio disponible.',
34
+ servicesLabel: 'Servicios e hitos',
35
+ serviceListHint: 'Elige servicios predefinidos o añade puntos de interés personalizados.',
36
+ newServicePlaceholder: 'Añadir servicio o lugar',
37
+ addService: 'Añadir',
38
+ removeService: 'Eliminar',
39
+ serviceTavern: 'Taberna',
40
+ serviceSmithy: 'Herrería',
41
+ serviceTemple: 'Templo',
42
+ serviceMarket: 'Mercado',
43
+ serviceStable: 'Establo',
44
+ serviceHall: 'Ayuntamiento',
45
+ generate: 'Regenerar mapa',
46
+ mapRegionLabel: 'Mapa de asentamiento ROL editable',
47
+ mapSummary: 'Plano del poblado',
48
+ buildings: 'Edificios',
49
+ paths: 'Caminos',
50
+ services: 'Servicios',
51
+ terrain: 'Agua',
52
+ legendLabel: 'Leyenda del mapa',
53
+ legendHome: 'Casa',
54
+ legendService: 'Servicio',
55
+ legendPath: 'Camino',
56
+ legendWater: 'Agua',
57
+ legendWild: 'Bosque',
58
+ editLabel: 'Edición directa de mapa',
59
+ toolSelect: 'Inspeccionar',
60
+ toolBuilding: 'Edificio',
61
+ toolPath: 'Camino',
62
+ toolWater: 'Agua',
63
+ toolTree: 'Árbol',
64
+ toolErase: 'Borrar',
65
+ serviceSelectLabel: 'Nueva marca de servicio',
66
+ clickHint: 'Clic derecho o pulsación prolongada para editar una celda.',
67
+ selectedHint: 'Celda seleccionada en',
68
+ shareLink: 'Copiar enlace',
69
+ linkCopied: 'Enlace copiado al portapapeles',
70
+ exportPng: 'PNG',
71
+ exportSvg: 'SVG',
72
+ exportJson: 'Guardar JSON',
73
+ importJson: 'Abrir JSON',
74
+ importError: 'El archivo no es un mapa válido.',
75
+ mapData: 'Datos del mapa',
76
+ readyBadge: 'Listo para explorar',
77
+ serviceNone: 'Sin marca',
78
+ contextMenuLabel: 'Acciones de celda',
79
+ contextInspect: 'Inspeccionar celda',
80
+ contextBuilding: 'Añadir edificio',
81
+ contextPath: 'Añadir camino',
82
+ contextWater: 'Añadir agua',
83
+ contextTree: 'Añadir árbol',
84
+ contextErase: 'Borrar celda',
85
+ };
86
+
87
+ const faq = [
88
+ {
89
+ question: '¿Qué genera este generador de mapas de asentamientos para ROL?',
90
+ answer: 'Crea mapas cenitales interactivos y reproducibles para aldeas, pueblos y villas en juegos de rol. Genera viviendas, caminos conectados, fuentes de agua, vegetación y servicios con lógica urbanística.',
91
+ },
92
+ {
93
+ question: '¿La semilla modifica realmente el diseño del mapa?',
94
+ answer: 'Sí. La semilla genera una distribución determinista de calles, casas y servicios. Utilizar la misma semilla y configuración reconstruirá exactamente el mismo mapa.',
95
+ },
96
+ {
97
+ question: '¿Qué tamaños de asentamiento están disponibles?',
98
+ answer: 'Aldea, pueblo y villa. Cada uno amplía la escala del mapa, la densidad de caminos y la capacidad de viviendas.',
99
+ },
100
+ {
101
+ question: '¿Se puede cambiar el estilo arquitectónico?',
102
+ answer: 'Sí. Incluye estilos Medieval, Edo, Saheliano, Entramado, Piedra, Costero y Alta montaña, adaptando tejados, paredes y árboles al entorno.',
103
+ },
104
+ {
105
+ question: '¿Es posible elegir el entorno natural?',
106
+ answer: 'Sí. Puedes seleccionar bosque, llanura, costa, río o montaña para enmarcar el poblado en la geografía deseada.',
107
+ },
108
+ {
109
+ question: '¿Cómo se distribuyen los servicios en el poblado?',
110
+ answer: 'Los servicios predefinidos como taberna, herrería, templo, mercado, establo y ayuntamiento se ubican con pesos lógicos: el ayuntamiento hacia el centro y los establos o herrerías hacia los bordes.',
111
+ },
112
+ {
113
+ question: '¿Puedo añadir mis propios puntos de interés?',
114
+ answer: 'Sí. Puedes añadir lugares de interés personalizados que se guardan en el navegador y se incluyen en los enlaces compartidos y archivos JSON.',
115
+ },
116
+ {
117
+ question: '¿Se puede editar el mapa celda por celda?',
118
+ answer: 'Sí. Al hacer clic derecho o pulsación prolongada sobre cualquier celda puedes cambiar su contenido entre edificio, camino, agua, árbol o borrarla.',
119
+ },
120
+ {
121
+ question: '¿Cómo reaccionan los caminos y el agua al editar?',
122
+ answer: 'Los caminos conectan automáticamente las cruces e intersecciones adyacentes, y las celdas de agua se unen formando ríos, estanques o lagos.',
123
+ },
124
+ {
125
+ question: '¿Cómo comparto un asentamiento con mis jugadores?',
126
+ answer: 'Copia el enlace compartido o exporta el mapa en JSON. Ambos métodos conservan la configuración y todas las ediciones manuales.',
127
+ },
128
+ {
129
+ question: '¿Qué formato de exportación es el más adecuado?',
130
+ answer: 'PNG para imágenes rápidas, SVG para impresión y edición vectorial, y JSON para guardar el estado editable completo.',
131
+ },
132
+ ];
133
+
134
+ const howTo = [
135
+ {
136
+ name: 'Elige una semilla',
137
+ text: 'Usa el nombre generado o escribe una semilla propia para controlar la distribución inicial del poblado.',
138
+ },
139
+ {
140
+ name: 'Selecciona entorno y estilo',
141
+ text: 'Ajusta el paisaje entre bosque, llanura, costa, río o montaña, y elige una arquitectura como Medieval, Edo o Saheliano.',
142
+ },
143
+ {
144
+ name: 'Define la escala',
145
+ text: 'Selecciona aldea, pueblo o villa y ajusta el número de viviendas deseadas.',
146
+ },
147
+ {
148
+ name: 'Añade servicios e hitos',
149
+ text: 'Activa servicios clave como taberna o herrería, o crea tus propios nombres de lugares de interés.',
150
+ },
151
+ {
152
+ name: 'Edita el plano celda a celda',
153
+ text: 'Haz clic derecho o mantén pulsado sobre el mapa para modificar caminos, agua, edificios o árboles.',
154
+ },
155
+ {
156
+ name: 'Exporta y comparte',
157
+ text: 'Obtén el enlace compartido, guarda en JSON o descarga el mapa en PNG o SVG para tus sesiones.',
158
+ },
159
+ ];
160
+
161
+ const faqSchema: WithContext<FAQPage> = {
162
+ '@context': 'https://schema.org',
163
+ '@type': 'FAQPage',
164
+ mainEntity: faq.map((item) => ({
165
+ '@type': 'Question',
166
+ name: item.question,
167
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
168
+ })),
169
+ };
170
+
171
+ const appSchema: WithContext<SoftwareApplication> = {
172
+ '@context': 'https://schema.org',
173
+ '@type': 'SoftwareApplication',
174
+ name: 'Generador de Mapas de Asentamientos ROL',
175
+ operatingSystem: 'All',
176
+ applicationCategory: 'GameApplication',
177
+ description: 'Generador de mapas de exploración de poblados para juegos de rol con semillas deterministas, estilos arquitectónicos y edición directa.',
178
+ };
179
+
180
+ const howToSchema: WithContext<HowTo> = {
181
+ '@context': 'https://schema.org',
182
+ '@type': 'HowTo',
183
+ name: 'Cómo crear un mapa de asentamiento para ROL',
184
+ step: howTo.map((item) => ({
185
+ '@type': 'HowToStep',
186
+ name: item.name,
187
+ text: item.text,
188
+ })),
189
+ };
190
+
191
+ const schemas: WithContext<SoftwareApplication | FAQPage | HowTo>[] = [
192
+ faqSchema,
193
+ appSchema,
194
+ howToSchema,
195
+ ];
196
+
197
+ export const content: SettlementMapLocaleContent = {
198
+ slug: 'generador-mapas-asentamientos-rol-exploracion',
199
+ title: 'Generador de Mapas de Asentamientos para ROL',
200
+ description: 'Genera mapas de exploración de aldeas, pueblos y villas para ROL con semillas deterministas, 7 estilos arquitectónicos, servicios e interacción celda a celda.',
201
+ ui,
202
+ seo: [
203
+ { type: 'title', text: 'Crea Asentamientos Vivos para tus Partidas de ROL', level: 2 },
204
+ { type: 'paragraph', html: 'Diseña poblados completos que ofrezcan a tus jugadores un lugar real que explorar, en lugar de una simple acumulación de casas sin contexto. Este generador de mapas de rol para navegador crea planos cenitales donde viviendas, caminos, plazas, fuentes de agua, vegetación y terreno abierto trabajan juntos como un espacio coherente con estructura y propósito. Utilízalo para un alto rápido en el camino, una villa llena de facciones, una aldea remota o el primer borrador de una ubicación clave en tu campaña.' },
205
+ { type: 'title', text: 'Semillas Deterministas para Mapas Reproducibles', level: 2 },
206
+ { type: 'paragraph', html: 'Cada poblado generado parte de una semilla basada en un nombre compuesto y memorable. La semilla no solo nombra el plano: selecciona una variante determinista de la distribución, incluyendo el ritmo de los caminos, el espacio entre viviendas, la asignación de servicios e hitos, y la densidad del bosque circundante. Cambiar la semilla genera una nueva ordenación, y reutilizar la misma combinación en el futuro reconstruye de forma exacta el mismo mapa de inicio.' },
207
+ { type: 'list', items: ['Diferentes semillas crean patrones propios para cada tipo de asentamiento.', 'Los mapas son 100% reproducibles para tus notas de campaña o futuras partidas.', 'Mantiene la coherencia urbanística en aldeas, pueblos y villas.', 'Permite compartir semillas exactas con otros directores de juego para la preparación de campañas.'] },
208
+ { type: 'title', text: 'Escala Adaptable de Aldea a Villa', level: 2 },
209
+ { type: 'paragraph', html: 'La selección de tamaño no es un mero cambio cosmético. Aldeas, pueblos y villas emplean patrones de construcción, distancias, capacidades de viviendas y expectativas de servicios diferentes. Una aldea puede mantenerse por debajo de diez casas sin parecer una villa encogida, mientras que una villa dispone de espacio para rutas más largas, mayor número de destinos y una estructura central marcada. El contador de viviendas reacciona al tamaño elegido para asegurar la escala adecuada.' },
210
+ { type: 'table', headers: ['Escala', 'Viviendas', 'Carácter', 'Uso en campaña'], rows: [['Aldea', '3 a 18', 'Pequeña, dispersa y fácil de abarcar a simple vista', 'Alto en el camino, comunidad aislada o borde del poblado'], ['Pueblo', '4 a 28', 'Centro local con varios caminos e hitos destacados', 'Base recurrente, lugar de misterio o núcleo de facción'], ['Villa', '6 a 42', 'Red amplia con múltiples servicios, rutas y desvíos', 'Centro comercial regional, lugar de investigación o poblado inicial']] },
211
+ { type: 'title', text: 'Siete Estilos Arquitectónicos', level: 2 },
212
+ { type: 'paragraph', html: 'Otorga una identidad visual propia al poblado antes de colocar los detalles. Los estilos Medieval, Edo, Saheliano, Entramado, Piedra, Costero y Alta montaña modifican las casas con diferentes pérfiles de tejados, tonos de pared, puertas, ventanas, texturas y detalles decorativos. La vegetación también se adapta al entorno, desde palmeras costeras hasta coníferas de montaña o copas redondeadas de inspiración oriental.' },
213
+ { type: 'list', items: ['Medieval y Entramado para fantasía clásica, poblados fronterizos y comunidades del bosque.', 'Piedra y Alta montaña para entornos rocosos, fortificados o expuestos al clima.', 'Costero para una identidad marítima luminosa con vegetación propia de litoral.', 'Edo para una silueta histórica y regional reconocible en calles, tejados y vegetación.', 'Saheliano para comunidades de clima seco con una arquitectura y paleta propias.'] },
214
+ { type: 'title', text: 'Ubicación Inteligente de Servicios', level: 2 },
215
+ { type: 'paragraph', html: 'Los servicios son anclas narrativas con lógica espacial. Tabernas, herrerías, templos, mercados, establos y ayuntamientos no se asignan a ciegas a las primeras casas. Pesos algorítmicos situán los edificios cívicos hacia el centro del asentamiento, mientras que establos y herrerías tienden hacia los caminos exteriores. Puedes añadir nombres personalizados para puestos de guardia, boticarios, santuarios o gremios, apareciendo en carteles sobre los tejados para ser perfectamente legibles.' },
216
+ { type: 'title', text: 'Integración en el Entorno Natural', level: 2 },
217
+ { type: 'paragraph', html: 'Selecciona entornos de bosque, llanura, costa, río o montaña para integrar el poblado en su entorno geográfico. El mapa otorga al paisaje espacio para respirar, permitiendo que la vegetación silvestre y la topografía enmarquen la zona habitada en lugar de convertir el mapa en un único bloque de casas.' },
218
+ { type: 'title', text: 'Edición Directa Celda a Celda', level: 2 },
219
+ { type: 'paragraph', html: 'El plano generado es un excelente punto de partida, pero el editor contextual lo transforma en tu ubicación concreta. Haz clic derecho en ordenador o mantén pulsado en dispositivos táctiles para abrir el menú de acciones directamente en la celda donde estás trabajando. Inspecciona celdas, añade viviendas, dibuja caminos, pinta agua, planta árboles o borra elementos indeseados.' },
220
+ { type: 'list', items: ['Añade casas faltantes, accesos a puentes, santuarios o puestos de guardia.', 'Modifica rutas sin necesidad de herramientas de dibujo externas.', 'Conserva todas las ediciones manuales en el mismo estado del mapa.', 'Misma interacción intuitiva en ordenadores y dispositivos táctiles.'] },
221
+ { type: 'title', text: 'Caminos y Agua Dinámicos', level: 2 },
222
+ { type: 'paragraph', html: 'Los caminos se generan como rutas conectadas y sus cruces se dibujan de forma limpia cuando se cruzan tres o cuatro vías. El pintado de agua reacciona al entorno: celdas adyacentes se unen formando ríos, estanques o lagos más amplios a medida que expandes el área de agua.' },
223
+ { type: 'title', text: 'Guarda y Comparte tus Mapas', level: 2 },
224
+ { type: 'paragraph', html: 'Genera enlaces para compartir la versión editable completa con tus jugadores o con otro director de juego. Se conserva la semilla, el tamaño, el estilo arquitectónico, la lista de servicios, los caminos, las celdas de agua y todas las modificaciones manuales realizadas. También puedes exportar el mapa completo como archivo JSON.' },
225
+ { type: 'title', text: 'Formatos de Exportación Adaptados', level: 2 },
226
+ { type: 'table', headers: ['Formato', 'Uso recomendado', 'Contenido conservado'], rows: [['PNG', 'Mesas virtuales y notas rápidas', 'Imagen lista del plano actual'], ['SVG', 'Impresión y diseño vectorial', 'Gráficos escalables de alta definición'], ['JSON', 'Archivo y edición futura', 'Estado editable completo del mapa']] },
227
+ { type: 'tip', title: 'Flujo Recomendado para Sesiones', html: 'Empieza eligiendo semilla, tamaño y estilo. Añade los servicios narrativos clave y utiliza el editor contextual para dar el toque final a los caminos o edificios antes de la partida.' },
228
+ ],
229
+ faq,
230
+ bibliography,
231
+ howTo,
232
+ schemas,
233
+ };
@@ -0,0 +1,152 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { SettlementMapLocaleContent, SettlementMapUI } from '../entry';
4
+
5
+ const ui: SettlementMapUI = {
6
+ intro: 'Concevez une carte de colonie explorable pour vos jeux de rôle. Choisissez le paysage, la taille et le style architectural, puis ajustez les cases par clic droit ou appui long.',
7
+ seedLabel: 'Graine et nom du village',
8
+ seedHint: 'La graine génère un tracé déterministe unique pour les rues et bâtiments.',
9
+ randomSeed: 'Nouveau nom',
10
+ environmentLabel: 'Paysage environnant',
11
+ forest: 'Forêt',
12
+ plains: 'Plaine',
13
+ coast: 'Côte',
14
+ river: 'Rivière',
15
+ mountain: 'Montagne',
16
+ styleLabel: 'Style architectural',
17
+ styleHint: 'Modifie l\'identité visuelle: toitures, matériaux, détails et végétation.',
18
+ styleTimber: 'Colombages',
19
+ styleStone: 'Pierre',
20
+ styleCoastal: 'Côtier',
21
+ styleHighland: 'Hautes terres',
22
+ styleMedieval: 'Médiéval',
23
+ styleEdo: 'Edo',
24
+ styleSahelian: 'Sahélien',
25
+ sizeLabel: 'Taille de la colonie',
26
+ hamlet: 'Hameau',
27
+ hamletHint: 'Petit relais',
28
+ village: 'Village',
29
+ villageHint: 'Base locale',
30
+ town: 'Bourg',
31
+ townHint: 'Centre animé',
32
+ homesLabel: 'Habitations',
33
+ homesHint: 'Ajustez le nombre de maisons selon la taille sélectionnée.',
34
+ servicesLabel: 'Services et points d\'intérêt',
35
+ serviceListHint: 'Choisissez des prédéfinis ou ajoutez vos propres lieux.',
36
+ newServicePlaceholder: 'Ajouter un lieu ou service',
37
+ addService: 'Ajouter',
38
+ removeService: 'Supprimer',
39
+ serviceTavern: 'Taverne',
40
+ serviceSmithy: 'Forge',
41
+ serviceTemple: 'Temple',
42
+ serviceMarket: 'Marché',
43
+ serviceStable: 'Écurie',
44
+ serviceHall: 'Mairie',
45
+ generate: 'Régénérer la carte',
46
+ mapRegionLabel: 'Carte de colonie JDR éditable',
47
+ mapSummary: 'Plan du village',
48
+ buildings: 'Bâtiments',
49
+ paths: 'Chemins',
50
+ services: 'Services',
51
+ terrain: 'Eau',
52
+ legendLabel: 'Légende de la carte',
53
+ legendHome: 'Maison',
54
+ legendService: 'Service',
55
+ legendPath: 'Chemin',
56
+ legendWater: 'Eau',
57
+ legendWild: 'Forêt',
58
+ editLabel: 'Édition directe',
59
+ toolSelect: 'Inspecter',
60
+ toolBuilding: 'Bâtiment',
61
+ toolPath: 'Chemin',
62
+ toolWater: 'Eau',
63
+ toolTree: 'Arbre',
64
+ toolErase: 'Effacer',
65
+ serviceSelectLabel: 'Marqueur de bâtiment',
66
+ clickHint: 'Clic droit ou appui long pour modifier une case.',
67
+ selectedHint: 'Case sélectionnée à',
68
+ shareLink: 'Copier le lien',
69
+ linkCopied: 'Lien copié dans le presse-papier',
70
+ exportPng: 'PNG',
71
+ exportSvg: 'SVG',
72
+ exportJson: 'Sauvegarder JSON',
73
+ importJson: 'Ouvrir JSON',
74
+ importError: 'Fichier de carte non valide.',
75
+ mapData: 'Données de la carte',
76
+ readyBadge: 'Prêt à explorer',
77
+ serviceNone: 'Sans marqueur',
78
+ contextMenuLabel: 'Actions de case',
79
+ contextInspect: 'Inspecter la case',
80
+ contextBuilding: 'Ajouter bâtiment',
81
+ contextPath: 'Ajouter chemin',
82
+ contextWater: 'Ajouter eau',
83
+ contextTree: 'Ajouter arbre',
84
+ contextErase: 'Vider la case',
85
+ };
86
+
87
+ const faq = [
88
+ { question: 'Que crée ce générateur de cartes de colonie JDR?', answer: 'Il génère des plans vus du ciel interactifs et reproductibles pour hameaux, villages et bourgs en jeu de rôle.' },
89
+ { question: 'La graine modifie-t-elle réellement la disposition?', answer: 'Oui. La graine détermine le tracé des rues et l\'emplacement des habitations de manière constante.' },
90
+ { question: 'Quelles tailles de colonies sont disponibles?', answer: 'Hameau, village et bourg.' },
91
+ { question: 'Peut-on choisir le style architectural?', answer: 'Oui: Médiéval, Edo, Sahélien, Colombages, Pierre, Côtier et Hautes terres.' },
92
+ { question: 'Peut-on définir le paysage environnant?', answer: 'Oui: forêt, plaine, côte, rivière ou montagne.' },
93
+ { question: 'Comment sont placés les services?', answer: 'Les tavernes, forges et mairies sont placées selon une logique de proximité du centre ou de la périphérie.' },
94
+ { question: 'Puis-je ajouter mes propres points d\'intérêt?', answer: 'Oui, vous pouvez créer des lieux personnalisés enregistrés localement.' },
95
+ { question: 'La carte est-elle éditable case par case?', answer: 'Oui, par clic droit ou appui long sur n\'importe quelle case.' },
96
+ { question: 'Comment réagissent les chemins et l\'eau?', answer: 'Les chemins relient les intersections et les cases d\'eau s\'assemblent en cours d\'eau ou lacs.' },
97
+ { question: 'Comment partager ma création?', answer: 'Via le lien de partage ou en exportant le fichier JSON.' },
98
+ { question: 'Quels formats d\'exportation sont proposés?', answer: 'PNG pour les images, SVG pour l\'impression et JSON pour l\'édition ultérieure.' },
99
+ ];
100
+
101
+ const howTo = [
102
+ { name: 'Choisissez une graine', text: 'Utilisez le nom généré ou entrez votre propre texte.' },
103
+ { name: 'Définissez le style et l\'environnement', text: 'Ajustez le paysage et l\'architecture selon votre univers.' },
104
+ { name: 'Réglez la taille', text: 'Choisissez entre hameau, village ou bourg.' },
105
+ { name: 'Placez les lieux clés', text: 'Activez les services principaux ou créez des marqueurs personnalisés.' },
106
+ { name: 'Éditez le plan', text: 'Modifiez directement les cases via le menu contextuel.' },
107
+ { name: 'Exportez et partagez', text: 'Copiez le lien ou téléchargez les fichiers PNG, SVG ou JSON.' },
108
+ ];
109
+
110
+ const faqSchema: WithContext<FAQPage> = { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
111
+ const appSchema: WithContext<SoftwareApplication> = { '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Générateur de Cartes de Colonie JDR', operatingSystem: 'All', applicationCategory: 'GameApplication', description: 'Générateur de cartes de colonies et villages pour jeu de rôle avec graines déterministes et édition case par case.' };
112
+ const howToSchema: WithContext<HowTo> = { '@context': 'https://schema.org', '@type': 'HowTo', name: 'Comment créer une carte de colonie JDR', step: howTo.map((item) => ({ '@type': 'HowToStep', name: item.name, text: item.text })) };
113
+
114
+ const schemas: WithContext<SoftwareApplication | FAQPage | HowTo>[] = [faqSchema, appSchema, howToSchema];
115
+
116
+ export const content: SettlementMapLocaleContent = {
117
+ slug: 'generateur-de-cartes-de-colonie-jdr-exploration',
118
+ title: 'Générateur de Cartes de Colonie JDR et Exploration',
119
+ description: 'Générez des cartes de villages et bourgs pour JDR avec graines déterministes, 7 styles architecturaux et édition case par case.',
120
+ ui,
121
+ seo: [
122
+ { type: 'title', text: 'Créez des Villages Vivants pour vos Parties de JDR', level: 2 },
123
+ { type: 'paragraph', html: 'Concevez des colonies complètes offrant à vos joueurs un espace réel à explorer plutôt qu\'une simple superposition de maisons sans cohérence. Ce générateur de cartes pour jeu de rôle en navigateur crée des cartes vues du ciel où habitations, ruelles, places centrales, cours d\'eau et végétation forment un ensemble urbain fluide et logique. Utilisez-le pour une halte rapide le long de la route, une cité florissante pleine de factions rivales, un hameau isolé dans les montagnes ou le premier croquis détaillé d\'un lieu récurrent de votre campagne de jeu de rôle.' },
124
+ { type: 'title', text: 'Des Graines Déterministes pour des Cartes Reproductibles', level: 2 },
125
+ { type: 'paragraph', html: 'Chaque colonie générée provient d\'une graine basée sur un nom composé mémorable et évocateur. La graine ne fait pas que nommer le plan: elle sélectionne une variante déterministe de l\'agencement, incluant la densité des rues, l\'espacement des maisons, la répartition des services et la végétation environnante. Changer la graine produit un nouveau modèle tout à fait unique, et réutiliser la même graine avec les mêmes options régénère exactement la même carte d\'origine pour votre table de jeu.' },
126
+ { type: 'list', items: ['Des graines différentes génèrent des structures uniques selon la taille choisie.', 'Le résultat reste parfaitement reproductible pour les notes du meneur de jeu.', 'Le plan conserve la logique urbanistique d\'un hameau, village ou bourg.', 'La même graine peut être partagée comme base de travail collaborative.'] },
127
+ { type: 'title', text: 'Une Échelle Adaptable du Hameau au Bourg', level: 2 },
128
+ { type: 'paragraph', html: 'Le choix de la taille n\'est pas un simple changement d\'échelle visuel. Hameaux, villages et bourgs utilisent des règles de construction, des densités et des attentes de services distinctes. Un hameau peut rester sous la barre des dix maisons sans ressembler à une ville miniature, tandis qu\'un bourg dispose de grands axes, d\'une place marchande et de nombreux commerces.' },
129
+ { type: 'table', headers: ['Taille', 'Nombre de maisons', 'Caractère', 'Usage en campagne'], rows: [['Hameau', '3 à 18', 'Petit, dispersé et immédiatement lisible', 'Halte de voyage ou communauté isolée'], ['Village', '4 à 28', 'Centre local avec rues et lieux remarquables', 'Base principale ou foyer de quête'], ['Bourg', '6 à 42', 'Réseau dense avec services et voies multiples', 'Centre commercial régional ou lieu d\'enquête']] },
130
+ { type: 'title', text: 'Sept Styles Architecturaux Distincts', level: 2 },
131
+ { type: 'paragraph', html: 'Donnez à la colonie une vraie personnalité avant de placer les détails. Les styles Médiéval, Edo, Sahélien, Colombages, Pierre, Côtier et Hautes terres modifient les toitures, la couleur des façades, les portes, fenêtres et textures. Les arbres s\'adaptent également à la région, des palmiers côtiers aux conifères de montagne.' },
132
+ { type: 'list', items: ['Médiéval et Colombages pour la fantasy classique et les communautés forestières.', 'Pierre et Hautes terres pour les environnements escarpés et fortifiés.', 'Côtier pour une ambiance maritime avec végétation littorale.', 'Edo pour une silhouette d\'inspiration orientale.', 'Sahélien pour les régions arides et désertiques.'] },
133
+ { type: 'title', text: 'Emplacement Intelligent des Services', level: 2 },
134
+ { type: 'paragraph', html: 'Les services sont des points d\'ancrage narratifs disposés avec logique. Tavernes, forges, temples, marchés, écuries et mairies sont positionnés selon des règles de proximité du centre ou des voies d\'accès. Vous pouvez ajouter vos propres lieux personnalisés qui apparaissent sur des panneaux lisibles au-dessus des bâtiments.' },
135
+ { type: 'title', text: 'Une Intégration Naturelle au Paysage', level: 2 },
136
+ { type: 'paragraph', html: 'Choisissez forêt, plaine, côte, rivière ou montagne pour intégrer la colonie dans son environnement naturel. Le paysage encadre la zone habitée de façon harmonieuse en laissant respirer la nature environnante.' },
137
+ { type: 'title', text: 'Édition Directe Case par Case', level: 2 },
138
+ { type: 'paragraph', html: 'Le plan généré sert de base solide que vous pouvez ajuster directement via le menu contextuel par clic droit ou appui long. Ajoutez des maisons, tracez des routes, peignez des étendues d\'eau, plantez des arbres ou effacez des éléments.' },
139
+ { type: 'list', items: ['Ajout de bâtiments ou postes de garde spécifiques.', 'Modification des routes sans logiciel externe.', 'Conservation des retouches manuelles dans les données de carte.', 'Fonctionnement fluide sur ordinateur et écrans tactiles.'] },
140
+ { type: 'title', text: 'Réseaux Routiers et Cours d\'Eau Dynamiques', level: 2 },
141
+ { type: 'paragraph', html: 'Les chemins forment des intersections propres lorsqu\'ils se croisent. Les cases d\'eau ajoutées manuellement se raccordent automatiquement pour former des rivières, étangs ou lacs.' },
142
+ { type: 'title', text: 'Sauvegarde et Partage de Vos Cartes', level: 2 },
143
+ { type: 'paragraph', html: 'Générez un lien de partage pour envoyer la carte éditable complète à vos joueurs ou à d\'autres meneurs. Toutes les options et modifications sont préservées, et l\'état complet peut être sauvegardé en fichier JSON.' },
144
+ { type: 'title', text: 'Formats d\'Exportation Adaptés', level: 2 },
145
+ { type: 'table', headers: ['Format', 'Usage recommandé', 'Contenu conservé'], rows: [['PNG', 'Tables virtuelles et notes rapides', 'Image haute résolution du plan actuel'], ['SVG', 'Impression et dessin vectoriel', 'Graphiques vectoriels nets pour grands formats'], ['JSON', 'Archives et édition ultérieure', 'État éditable complet de la colonie']] },
146
+ { type: 'tip', title: 'Conseil de Préparation', html: 'Commencez par la graine et le style, ajoutez vos lieux clés puis ajustez le plan case par case avant la session.' },
147
+ ],
148
+ faq,
149
+ bibliography,
150
+ howTo,
151
+ schemas,
152
+ };
@@ -0,0 +1,152 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { SettlementMapLocaleContent, SettlementMapUI } from '../entry';
4
+
5
+ const ui: SettlementMapUI = {
6
+ intro: 'Rancang peta pemukiman untuk penjelajahan RPG. Pilih lanskap, ukuran, dan gaya arsitektur, lalu ubah petak peta dengan klik kanan atau tekan lama.',
7
+ seedLabel: 'Benih dan nama desa',
8
+ seedHint: 'Benih menentukan pola tata letak jalan dan bangunan secara konsisten.',
9
+ randomSeed: 'Buat nama baru',
10
+ environmentLabel: 'Lanskap sekitar',
11
+ forest: 'Hutan',
12
+ plains: 'Dataran',
13
+ coast: 'Pesisir',
14
+ river: 'Sungai',
15
+ mountain: 'Pegunungan',
16
+ styleLabel: 'Gaya arsitektur',
17
+ styleHint: 'Mengubah identitas visual: atap, dinding, tekstur, dan vegetasi khas.',
18
+ styleTimber: 'Kayu',
19
+ styleStone: 'Batu',
20
+ styleCoastal: 'Pesisir',
21
+ styleHighland: 'Dataran Tinggi',
22
+ styleMedieval: 'Abad Pertengahan',
23
+ styleEdo: 'Edo',
24
+ styleSahelian: 'Sahel',
25
+ sizeLabel: 'Ukuran pemukiman',
26
+ hamlet: 'Dusun',
27
+ hamletHint: 'Persinggahan kecil',
28
+ village: 'Desa',
29
+ villageHint: 'Basis lokal',
30
+ town: 'Kota',
31
+ townHint: 'Pusat ramai',
32
+ homesLabel: 'Rumah',
33
+ homesHint: 'Sesuaikan jumlah rumah sesuai ukuran pemukiman yang dipilih.',
34
+ servicesLabel: 'Layanan dan landmark',
35
+ serviceListHint: 'Pilih opsi bawaan atau tambahkan nama tempat khusus.',
36
+ newServicePlaceholder: 'Tambah tempat atau layanan',
37
+ addService: 'Tambah',
38
+ removeService: 'Hapus',
39
+ serviceTavern: 'Kedai',
40
+ serviceSmithy: 'Bengkel Besi',
41
+ serviceTemple: 'Kuil',
42
+ serviceMarket: 'Pasar',
43
+ serviceStable: 'Kandang Kuda',
44
+ serviceHall: 'Balai Desa',
45
+ generate: 'Buat ulang peta',
46
+ mapRegionLabel: 'Peta pemukiman RPG interaktif',
47
+ mapSummary: 'Denah pemukiman',
48
+ buildings: 'Bangunan',
49
+ paths: 'Jalan',
50
+ services: 'Layanan',
51
+ terrain: 'Air',
52
+ legendLabel: 'Legenda peta',
53
+ legendHome: 'Rumah',
54
+ legendService: 'Layanan',
55
+ legendPath: 'Jalan',
56
+ legendWater: 'Air',
57
+ legendWild: 'Hutan',
58
+ editLabel: 'Edit peta langsung',
59
+ toolSelect: 'Inspeksi',
60
+ toolBuilding: 'Bangunan',
61
+ toolPath: 'Jalan',
62
+ toolWater: 'Air',
63
+ toolTree: 'Pohon',
64
+ toolErase: 'Hapus',
65
+ serviceSelectLabel: 'Tanda bangunan',
66
+ clickHint: 'Klik kanan atau tekan lama petak untuk mengedit.',
67
+ selectedHint: 'Petak dipilih pada',
68
+ shareLink: 'Salin tautan',
69
+ linkCopied: 'Tautan berhasil disalin',
70
+ exportPng: 'PNG',
71
+ exportSvg: 'SVG',
72
+ exportJson: 'Simpan JSON',
73
+ importJson: 'Buka JSON',
74
+ importError: 'Berkas peta tidak valid.',
75
+ mapData: 'Data peta',
76
+ readyBadge: 'Siap dijelajahi',
77
+ serviceNone: 'Tanpa tanda',
78
+ contextMenuLabel: 'Aksi petak',
79
+ contextInspect: 'Inspeksi petak',
80
+ contextBuilding: 'Tambah bangunan',
81
+ contextPath: 'Tambah jalan',
82
+ contextWater: 'Tambah air',
83
+ contextTree: 'Tambah pohon',
84
+ contextErase: 'Kosongkan petak',
85
+ };
86
+
87
+ const faq = [
88
+ { question: 'Apa yang dihasilkan oleh generator peta pemukiman RPG ini?', answer: 'Alat ini membuat peta denah tampak atas untuk dusun, desa, atau kota yang dapat direproduksi dan diedit untuk permainan RPG.' },
89
+ { question: 'Apakah benih benar-benar mengubah tata letak?', answer: 'Ya. Benih menentukan pola susunan jalan, rumah, dan layanan secara deterministik.' },
90
+ { question: 'Apa saja pilihan ukuran pemukiman?', answer: 'Dusun, desa, dan kota.' },
91
+ { question: 'Dapatkah memilih gaya arsitektur?', answer: 'Ya, tersedia gaya Abad Pertengahan, Edo, Sahel, Kayu, Batu, Pesisir, dan Dataran Tinggi.' },
92
+ { question: 'Dapatkah memilih lanskap sekitar?', answer: 'Ya, tersedia lanskap hutan, dataran, pesisir, sungai, atau pegunungan.' },
93
+ { question: 'Bagaimana penempatan layanan publik?', answer: 'Layanan seperti kedai, pasar, atau kuil ditempatkan berdasarkan logika jarak dari pusat atau pinggiran.' },
94
+ { question: 'Bisakah menambahkan landmark buatan sendiri?', answer: 'Bisa. Tempat khusus disimpan di peramban dan ikut terbawa saat berbagi tautan atau JSON.' },
95
+ { question: 'Apakah peta dapat diedit per petak?', answer: 'Ya, melalui klik kanan atau tekan lama pada petak peta.' },
96
+ { question: 'Bagaimana perilaku jalan dan air saat diedit?', answer: 'Jalan menyambung otomatis di persimpangan dan petak air bergabung membentuk sungai atau danau.' },
97
+ { question: 'Bagaimana cara membagikan peta?', answer: 'Salin tautan bagikan atau simpan berkas peta dalam format JSON.' },
98
+ { question: 'Format ekspor apa yang tersedia?', answer: 'PNG untuk gambar cepat, SVG untuk cetak, dan JSON untuk pengeditan penuh.' },
99
+ ];
100
+
101
+ const howTo = [
102
+ { name: 'Pilih benih', text: 'Gunakan benih acak atau ketik kata pilihan Anda.' },
103
+ { name: 'Atur lanskap dan gaya', text: 'Pilih lingkungan dan arsitektur yang sesuai dengan tema penjelajahan.' },
104
+ { name: 'Tentukan ukuran', text: 'Pilih antara dusun, desa, atau kota.' },
105
+ { name: 'Tambahkan landmark', text: 'Pilih layanan standar atau buat nama tempat baru.' },
106
+ { name: 'Edit denah', text: 'Gunakan menu konteks petak untuk menambah atau menghapus elemen.' },
107
+ { name: 'Simpan dan bagikan', text: 'Salin tautan atau unduh berkas peta dalam format PNG, SVG, atau JSON.' },
108
+ ];
109
+
110
+ const faqSchema: WithContext<FAQPage> = { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
111
+ const appSchema: WithContext<SoftwareApplication> = { '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Generator Peta Pemukiman RPG', operatingSystem: 'All', applicationCategory: 'GameApplication', description: 'Pembuat peta denah desa dan pemukiman RPG dengan benih teratur dan editor petak.' };
112
+ const howToSchema: WithContext<HowTo> = { '@context': 'https://schema.org', '@type': 'HowTo', name: 'Cara membuat peta pemukiman RPG', step: howTo.map((item) => ({ '@type': 'HowToStep', name: item.name, text: item.text })) };
113
+
114
+ const schemas: WithContext<SoftwareApplication | FAQPage | HowTo>[] = [faqSchema, appSchema, howToSchema];
115
+
116
+ export const content: SettlementMapLocaleContent = {
117
+ slug: 'pembuat-peta-pemukiman-dan-jelajah-rpg',
118
+ title: 'Generator Peta Pemukiman RPG dan Penjelajahan',
119
+ description: 'Buat peta pemukiman RPG interaktif untuk dusun, desa, dan kota dengan benih konsisten, 7 gaya bangunan, dan editor petak.',
120
+ ui,
121
+ seo: [
122
+ { type: 'title', text: 'Buat Pemukiman Hidup untuk Sesi RPG Anda', level: 2 },
123
+ { type: 'paragraph', html: 'Rancang denah pemukiman yang memberikan para pemain tempat nyata untuk dijelajahi, bukan sekadar tumpukan rumah tanpa alur yang jelas. Generator peta RPG berbasis peramban ini membuat peta denah tampak atas di mana rumah, jalan, alun-alun, wilayah perairan, vegetasi, dan lanskap alam saling melengkapi membentuk lokasi yang hidup dan memiliki tujuan cerita yang mendalam. Gunakan alat ini untuk persinggahan di tengah jalan, kota sibuk yang dipenuhi faksi, dusun terpencil, atau draf pertama lokasi yang akan terus berkembang dalam sesi kampanye RPG Anda.' },
124
+ { type: 'title', text: 'Benih Konsisten dan Terukur', level: 2 },
125
+ { type: 'paragraph', html: 'Setiap pemukiman yang dibuat berasal dari benih nama gabungan yang mudah diingat. Benih tidak hanya memberikan nama pada peta: benih ini memilih variasi tata letak deterministik yang mengatur irama jalan, jarak antarrumah, penempatan layanan, serta vegetasi liar di sekitarnya. Mengubah benih akan menghasilkan pola susunan baru, dan menggunakan kembali benih yang sama dengan pengaturan serupa akan selalu merekonstruksi peta awal yang identik secara akurat.' },
126
+ { type: 'list', items: ['Pola unik untuk tiap jenis pemukiman berkat benih deterministik.', 'Mudah direproduksi untuk catatan Game Master atau sesi lanjutan.', 'Menjaga tata ruang tetap realistis dan mudah dipahami.', 'Dapat dibagikan secara akurat ke pemain lain sebagai titik awal kampanye.'] },
127
+ { type: 'title', text: 'Ukuran dari Dusun hingga Kota', level: 2 },
128
+ { type: 'paragraph', html: 'Pilihan ukuran pemukiman bukan sekadar pengubahan skala gambar. Dusun, desa, dan kota menggunakan aturan tata ruang, kepadatan bangunan, serta jenis layanan publik yang berbeda secara mendasar. Dusun tetap berukuran kecil di bawah sepuluh rumah tanpa terlihat seperti kota yang menciut, sementara kota memiliki ruang untuk jalur jalan yang lebih panjang, lebih banyak titik tujuan, serta struktur pusat kota yang luas dan ramai.' },
129
+ { type: 'table', headers: ['Ukuran', 'Rumah', 'Karakter', 'Kegunaan dalam kampanye'], rows: [['Dusun', '3 hingga 18', 'Kecil, renggang, dan mudah dipahami sekilas', 'Persinggahan di jalan atau komunitas terisolasi'], ['Desa', '4 hingga 28', 'Pusat lokal dengan beberapa rula dan landmark', 'Markas utama petualang atau pusat misteri'], ['Kota', '6 hingga 42', 'Padat dan memiliki jaringan layanan yang luas', 'Pusat perdagangan wilayah atau lokasi penyelidikan']] },
130
+ { type: 'title', text: 'Tujuh Gaya Arsitektur Khas', level: 2 },
131
+ { type: 'paragraph', html: 'Berikan identitas visual yang unik pada pemukiman sebelum Anda menempatkan detail cerita. Gaya Abad Pertengahan, Edo, Sahel, Kayu, Batu, Pesisir, dan Dataran Tinggi mengubah bentuk atap, warna dinding, pintu, jendela, tekstur, serta detail dekoratif secara menyeluruh. Tumbuhan dan pohon juga disesuaikan dengan wilayah geografi, dari pohon kelapa pesisir hingga pohon cemara di pegunungan tinggi.' },
132
+ { type: 'list', items: ['Gaya Kayu dan Abad Pertengahan untuk narasi fantasi klasik dan pemukiman hutan.', 'Batu dan Dataran Tinggi untuk wilayah pegunungan yang tangguh dan berbatu.', 'Pesisir memberikan suasana maritim yang cerah dengan vegetación khas pantai.', 'Edo memberikan silueta arsitektur dan vegetasi bernuansa oriental.', 'Sahel cocok untuk pemukiman di wilayah kering dan padang pasir.'] },
133
+ { type: 'title', text: 'Penempatan Layanan Cerdas dengan Logika Spasial', level: 2 },
134
+ { type: 'paragraph', html: 'Fasilitas umum seperti kedai, pasar, kuil, establo, dan balai desa ditempatkan dengan logika ruang yang matang dan realistis. Algoritma khusus menempatkan bangunan umum utama di dekat pusat kota atau persimpangan utama, sementara bengkel besi dan kandang kuda ditempatkan di dekat jalan luar untuk kemudahan akses perbatasan dan kenyamanan warga pemukiman.' },
135
+ { type: 'title', text: 'Lanskap Alam Sekitar yang Menyatu', level: 2 },
136
+ { type: 'paragraph', html: 'Bingkai pemukiman dengan lingkungan hutan, dataran, pantai, sungai, atau gunung agar lokasi terasa menjadi bagian dari peta wilayah yang lebih luas dan alami. Elemen alam ini memberi konteks geografi yang sangat kaya dan mendalam pada petualangan para pemain.' },
137
+ { type: 'title', text: 'Editor Petak Langsung yang Khas', level: 2 },
138
+ { type: 'paragraph', html: 'Gunakan klik kanan di komputer atau tekan lama di layar sentuh untuk membuka menu aksi petak secara langsung di lokasi yang diinginkan. Anda dapat menambahkan rumah baru, membuat rute jalan tambahan, menggambarkan perairan, menanam pohon, atau menghapus elemen secara langsung tanpa kesulitan.' },
139
+ { type: 'list', items: ['Tambah lokasi penting khusus seperti pos penjaga atau kuil.', 'Edit jalan dan rute tanpa butuh aplikasi gambar terpisah.', 'Disimpan langsung dalam data peta.', 'Dapat digunakan dengan nyaman di HP dan komputer.'] },
140
+ { type: 'title', text: 'Jalan dan Air Otomatis', level: 2 },
141
+ { type: 'paragraph', html: 'Jalan yang saling bersilangan akan membentuk persimpangan yang rapi, dan petak air yang bersebelahan akan bergabung secara alami membentuk sungai atau danau.' },
142
+ { type: 'title', text: 'Simpan dan Bagikan Tautan', level: 2 },
143
+ { type: 'paragraph', html: 'Bagikan tautan peta interaktif lengkap atau simpan data dalam berkas JSON untuk diisi kembali di sesi berikutnya.' },
144
+ { type: 'title', text: 'Pilihan Format Ekspor', level: 2 },
145
+ { type: 'table', headers: ['Format', 'Kegunaan', 'Isi Data'], rows: [['PNG', 'Tampilan cepat & VTT', 'Gambar peta resolusi tinggi'], ['SVG', 'Cetak berkualitas', 'Grafik vektor tajam tanpa pecah'], ['JSON', 'Pengeditan ulang', 'Data peta lengkap yang bisa diedit']] },
146
+ { type: 'tip', title: 'Saran Penggunaan', html: 'Tentukan gaya dan lanskap terlebih dahulu, tambahkan tempat penting Anda, lalu sempurnakan denah dengan editor petak sebelum sesi permainan dimulai.' },
147
+ ],
148
+ faq,
149
+ bibliography,
150
+ howTo,
151
+ schemas,
152
+ };