Map Generator - Générateur de Cartes
Description
Génère des prompts enrichis pour cartes 2D fantasy avec validation world-keeper. Permet de créer des cartes de villes, régions, donjons et combats tactiques cohérents avec l'univers BFRPG.
Usage
Cette skill permet à Claude de créer des prompts de cartes géographiques cohérentes avec l'univers établi, en validant les noms de lieux et en appliquant les styles architecturaux appropriés pour chaque royaume.
Commands
# Générer un prompt de carte
sw-map generate <type> <name> [options]
# Valider un lieu
sw-map validate <name> [options]
# Lister les ressources
sw-map list [category]
# Afficher les types de cartes
sw-map types
Types de Cartes
City (Carte de Ville)
Vue aérienne détaillée d'une ville avec quartiers, POIs et infrastructure.
Options:
--scale: small, medium (défaut), large
--features: POIs additionnels (séparés par virgules)
--style: illustrated (défaut), dark_fantasy
Exemple:
sw-map generate city Cordova --features="Villa de Valorian"
Region (Carte Régionale)
Carte bird's eye view montrant multiple settlements, routes et terrain.
Options:
--scale: small, medium, large (défaut)
--terrain: Override du type de terrain
Exemple:
sw-map generate region "Côte Occidentale" --scale=large
Dungeon (Plan de Donjon)
Plan top-down avec salles, couloirs, pièges et grille.
Options:
--level: Niveau du donjon (1, 2, 3, etc.)
--features: Salles spéciales (séparées par virgules)
Exemple:
sw-map generate dungeon "La Crypte des Ombres" --level=1 --features="Salle du trône,Crypte"
Tactical (Carte Tactique)
Grille de combat avec terrain, couverture et élévation.
Options:
--terrain: forêt, montagne, plaine, marais, etc.
--scene: Description de la scène de combat
--features: Éléments spéciaux (ruisseau, pont, etc.)
Exemple:
sw-map generate tactical "Embuscade" --terrain=forêt --scene="Combat en forêt dense" --features="Ruisseau,Pont"
Options Communes
--kingdom=
Valide que le lieu appartient au royaume spécifié.
Royaumes valides: valdorine, karvath, lumenciel, astrene
--style=<style></h3>
<p>Style visuel de la carte.</p>
<p>Styles: illustrated (défaut), dark_fantasy</p>
<h3>--output=<file></h3>
<p>Sauvegarde le prompt dans un fichier JSON spécifique.</p>
<h3>--dry-run</h3>
<p>Prévisualise le prompt de base sans appeler l'API Claude.</p>
<h3>--generate-image</h3>
<p>Génère aussi l'image via fal.ai flux-2 (nécessite FAL_KEY).</p>
<h3>--image-size=<size></h3>
<p>Taille de l'image générée.</p>
<p>Tailles: square_hd, landscape_16_9 (défaut), portrait_16_9</p>
<h3>--no-cache</h3>
<p>Force la régénération du prompt en ignorant le cache.</p>
<h2>Validation de Lieux</h2>
<pre><code class="language-bash" data-language="bash"># Valider un lieu existant
sw-map validate Cordova
# Valider avec royaume attendu
sw-map validate "Port-Nouveau" --kingdom=valdorine
# Obtenir des suggestions si le lieu n'existe pas
sw-map validate "Cordov" --suggest</code></pre><h2>Lister les Ressources</h2>
<pre><code class="language-bash" data-language="bash"># Types de cartes disponibles
sw-map list types
# Royaumes disponibles
sw-map list kingdoms
# Tous les lieux documentés
sw-map list locations
# Cités seulement
sw-map list cities
# Cités d'un royaume spécifique
sw-map list cities --kingdom=valdorine</code></pre><h2>Styles Architecturaux par Royaume</h2>
<h3>Valdorine</h3>
<ul>
<li>Style: Maritime, influences italiennes</li>
<li>Couleurs: Bleu et or</li>
<li>Architecture: Ports, toits en tuiles colorées</li>
</ul>
<h3>Karvath</h3>
<ul>
<li>Style: Militariste, influences germaniques</li>
<li>Couleurs: Rouge et noir</li>
<li>Architecture: Forteresses, murailles épaisses</li>
</ul>
<h3>Lumenciel</h3>
<ul>
<li>Style: Religieux, influences latines</li>
<li>Couleurs: Blanc et or</li>
<li>Architecture: Cathédrales, monastères</li>
</ul>
<h3>Astrène</h3>
<ul>
<li>Style: Mélancolique, influences nordiques</li>
<li>Couleurs: Gris et argent</li>
<li>Architecture: Pierre météorisée, simplicité</li>
</ul>
<h2>Cache et Performance</h2>
<p>Les prompts enrichis sont automatiquement mis en cache dans:</p>
<pre><code class="language-plaintext" data-language="plaintext">data/maps/<nom>_<type>_<scale>_prompt.json</code></pre><p>Le cache réduit significativement les appels API. Utilisez <code>--no-cache</code> pour forcer la régénération.</p>
<h2>Génération d'Images</h2>
<p>Avec <code>--generate-image</code>, la skill génère aussi l'image via fal.ai:</p>
<pre><code class="language-bash" data-language="bash">sw-map generate city Cordova --generate-image --image-size=landscape_16_9</code></pre><p>Images sauvegardées dans:</p>
<pre><code class="language-plaintext" data-language="plaintext">data/maps/<nom>_<type>_<scale>_<model>.png</code></pre><p>Modèle utilisé: <code>fal-ai/flux-2</code> (haute qualité pour cartes détaillées)</p>
<h2>Prérequis</h2>
<ul>
<li><strong>ANTHROPIC_API_KEY</strong>: Requis pour enrichissement AI (Claude Haiku 3.5)</li>
<li><strong>FAL_KEY</strong>: Requis pour génération d'images (optionnel)</li>
</ul>
<h2>Exemples d'Utilisation</h2>
<h3>Workflow Typique: Carte de Ville</h3>
<pre><code class="language-bash" data-language="bash"># 1. Valider que le lieu existe
sw-map validate Cordova
# 2. Générer le prompt (avec cache)
sw-map generate city Cordova --features="Taverne du Voile Écarlate,Docks"
# 3. Générer l'image
sw-map generate city Cordova --generate-image</code></pre><h3>Workflow: Plan de Donjon</h3>
<pre><code class="language-bash" data-language="bash"># 1. Générer prompt niveau 1
sw-map generate dungeon "La Crypte des Ombres" --level=1 --dry-run
# 2. Générer avec image
sw-map generate dungeon "La Crypte des Ombres" --level=1 --generate-image</code></pre><h3>Workflow: Carte Tactique</h3>
<pre><code class="language-bash" data-language="bash"># 1. Générer avec scène
sw-map generate tactical "Embuscade" \
--terrain=forêt \
--scene="Combat contre des bandits en forêt dense" \
--features="Ruisseau,Pont de bois,Rochers" \
--generate-image --image-size=square_hd</code></pre><h2>Intégration avec Agents</h2>
<h3>dungeon-master</h3>
<p>Le dungeon-master peut invoquer cette skill pour:</p>
<ul>
<li>Créer des cartes de lieux visités</li>
<li>Illustrer des donjons explorés</li>
<li>Générer des cartes tactiques pour combats importants</li>
</ul>
<h3>world-keeper</h3>
<p>Le world-keeper valide automatiquement:</p>
<ul>
<li>Existence des lieux dans geography.json</li>
<li>Cohérence des noms avec les conventions du royaume</li>
<li>Styles architecturaux appropriés</li>
</ul>
<h2>Formats de Sortie</h2>
<h3>Prompt JSON</h3>
<pre><code class="language-json" data-language="json">{
"prompt": "Cette carte montre la ville portuaire de Cordova...",
"map_type": "city",
"location_name": "Cordova",
"kingdom": "valdorine",
"features": ["Taverne du Voile Écarlate"],
"style_hints": "aerial view, maritime Italian style, blue/gold colors",
"enriched_at": "2025-01-15T10:30:00Z"
}</code></pre><h3>Métadonnées Image</h3>
<ul>
<li>URL: Lien temporaire fal.ai</li>
<li>LocalPath: Chemin fichier local</li>
<li>Dimensions: Largeur x hauteur</li>
<li>Prompt: Prompt utilisé</li>
</ul>
<h2>Notes d'Implémentation</h2>
<ul>
<li><strong>Validation automatique</strong>: Tous les noms de lieux sont vérifiés contre geography.json</li>
<li><strong>Fuzzy matching</strong>: Suggestions basées sur similarité Levenshtein</li>
<li><strong>Enrichissement AI</strong>: Claude Haiku 3.5 enrichit les prompts de base avec détails visuels</li>
<li><strong>Guidelines</strong>: 400+ lignes de directives pour prompts optimaux</li>
<li><strong>Longueur cible</strong>: 100-200 mots (sweet spot: 150)</li>
</ul>
<h2>Troubleshooting</h2>
<h3>Lieu non trouvé</h3>
<pre><code class="language-bash" data-language="bash">✗ Lieu "Cordov" non trouvé dans geography.json
Vouliez-vous dire ?
- Cordova (Valdorine)
- Port-de-Lune (Valdorine)</code></pre><p><strong>Solution</strong>: Utilisez <code>--suggest</code> pour voir les suggestions complètes.</p>
<h3>API Key manquante</h3>
<pre><code class="language-plaintext" data-language="plaintext">Error: creating enricher: ANTHROPIC_API_KEY environment variable not set</code></pre><p><strong>Solution</strong>: Définissez <code>export ANTHROPIC_API_KEY="votre_clé"</code></p>
<h3>Prompt trop court/long</h3>
<p>Le système valide automatiquement que les prompts font 80-250 mots et régénère si nécessaire.</p>
<h2>Voir Aussi</h2>
<ul>
<li><strong>image-generator</strong>: Génération d'illustrations fantasy</li>
<li><strong>name-location-generator</strong>: Génération de noms de lieux cohérents</li>
<li><strong>world-keeper</strong>: Agent de cohérence géographique</li>
</ul>