CastleGenerator

Mise à jour de la page : 14 juillet 2018.
    
J.C. Tchang
 

Cet outil de Richard Firth permet de générer des châteaux-forts, à partir d'un fichier tableur Excel utilisant du Visual Basic et une bibliothèque de composants issus des ensembles 7946 King's Castle, 7947 Prison Tower Rescue, 70404 King's Castle, 9468 Vampyre Castle, 7573 Battle of Alamut (Prince of Persia), et des morceaux d'autres modèles.

 

Navigation rapide

 

Téléchargement

Aller sur le site : CastleGeneratorPublic, puis télécharger tout le dossier en cliquant sur le bouton "Clone or download" puis sur "Download ZIP".

 

Installation

Décompresser le fichier zip et placer le contenu du dossier résultant dans un dossier à votre convenance. Personnellement j'utilise le dossier : C:/LEGO/CastleGenerator.

Nota : Pour utiliser cet utilitaire le tableur Excel doit être présent sur l'ordinateur ou bien un programme compatible gérant le langage VBA.

 

Lancement

Exécuter le fichier CastleGenerate.xlsm

Si un message de sécurité s'affiche, cliquer sur le bouton "Options" à droite du message et cocher "Activer ce contenu", puis cliquer sur "OK" pour activer les macros.

Attention, cette opération ne doit être faite que si vous faites confiance à l'auteur du programme. En effet, il est dangereux d'exécuter des macros que vous ne connaissez pas, car ils peuvent exécuter du code malveillant.

Affichage du menu de la page principale :

Cette page comporte principalement 2 boutons :

 

Château-fort aléatoire

Cliquer sur "Spawn Random Castle" de la page principale.

Une boite de dialogue de configuration couleur s'affiche :

Le fichier LDraw généré est posé sur le bureau Windows. Exemple : SpawnCastle_I6886.ldr.

Actuellement le château généré est dans le style général et la disposition du Ensemble 70404-1 King's Castle (crénelage bleu de 2013) ou le Ensemble 7946-1 King's Castle (crénelage et toit rouge de 2011).

Exemples de génération :

 

Test de composant de Château-fort

Cliquer sur "Spawn_Test" de la page principale. Cela ouvre une boite de dialogue qui permet de tester à partir de divers ensembles d'instructions ou de sections de construction.

La boite de dialogue de sélection de composant s'affiche :

Ensuite, le panneau de configuration couleur s'affiche (voir chapitre précédent). Après sélection éventuelle des couleurs, cliquer sur "Go" pour générer le fichier.

Le fichier LDraw généré est posé sur le bureau Windows. Exemple : Spawn_RockTower.ldr ou DrumTowerLvL2.ldr.

Pour tester des permutations de petits ensembles, sélectionner dans le menu déroulant "Spawn From Instruction (TEST)" une des instructions suivantes :
SpawnDrawbridgeDefense.txt
Spawn_whitecap_bay.txt
SpwnAlamatGate.txt
Spawn_RockTower.txt

Mode de fonctionnement : Exemple des arbres

Pour que cela fonctionne, l'auteur à créé ses propres méta-commandes LDraw, incorporées dans de nombreux fichiers LDR. Castle Generator les prend en compte et exécute les méta-commandes pour modifier ces fichiers et générer en sortie un fichier LDraw (.ldr) traité.

Par exemple, dans le fichier pour les arbres (BuildSections/OuterArea/VillageTree.ldr), il y a une méta-commande de table et des méta-commandes de remplacement de couleur, que le programme sait prétraiter avant de générer l'arbre (voir les commentaires dans le code ci-dessous). Nota : En réalité le fichier actuel est légèrement différent, mais le principe est le même.

0 FILE main.ldr
0 SCMD_TABLE    // Dit à mon processeur que c'est une table, donc il va choisir l'un des arbres ci-dessous pour être l'arbre à générer.
1 25 0 0 260 1 0 0 0 1 0 0 0 1 VillageTree.ldr
1 25 0 0 0 1 0 0 0 1 0 0 0 1 Tree_A.ldr
1 25 300 0 240 1 0 0 0 1 0 0 0 1 Tree_C.ldr
1 25 300 0 10 1 0 0 0 1 0 0 0 1 Tree_E.ldr
0 FILE VillageTree.ldr
0 RNDCOLOR 25 "2,10,288" ONE // Remplace chaque élément de couleur 25 avec l'une des trois autres couleurs. Avec ONE, recolorer seulement une pièce et choisir une nouvelle couleur pour la pièce suivante.
0 REPCOLOR 11 "A_GroundColor" ALL // Remplace toutes les instances de la couleur 11 par l'une des couleurs "A_GroundColor" sélectionnée (fichier Config/ColorSets.txt).
1 15 40 -306.75 -40 -1 0 0 0 1 0 0 0 -1 3742.dat
1 25 0 -314.75 0 0 0 1 0 1 0 -1 0 0 2417.dat
1 70 0 -268 0 1 0 0 0 -1 0 0 0 -1 30374.dat
1 15 0 -306.75 40 -1 0 0 0 1 0 0 0 -1 3742.dat
1 70 10 -288 10 0 0 1 0 1 0 -1 0 0 2339.dat
1 25 0 -296 0 0 0 -1 0 1 0 1 0 0 2417.dat
1 70 0 -288 0 1 0 0 0 1 0 0 0 1 6143.dat

Types d'arbre de la bibliothèque

Affichage des 4 arbres de l'exemple source ci-dessus. L'orange est la couleur 25, de sorte qu'un arbre généré aura chaque élément orange remplacé par du vert, vert foncé ou vert clair, donnant à chaque arbre une coloration différente.

Exemples d'arbre générés

Voici les résultats de la génération de deux arbres différents avec les couleurs définitives.

Génération de grands modèles

Question : Y a-t-il quelque chose qui empêche d'augmenter la génération et de travailler avec des modèles beaucoup plus gros (en supposant que vous ayez des morceaux plus gros préconstruits, pour que ça fonctionne) ?

Réponse : Je suppose qu'en fin de compte ça va planter si vous essayez de le rendre super-super-énorme. Il va aussi y avoir des répétitions. Par exemple, voici un château beaucoup plus grand avec plusieurs salles du trône :

Grand château, avec divers engins de siège devant le château. Remarquer que les roues de la catapulte ont les mêmes couleurs que les drapeaux. Bientôt les catapultes auront une facture différente :

Evolution du donjon, avec le toit de l'ensemble 7946 sur la première image :

La protection du pont-levis :

Gamme de tourelles de défense :

J'ai ajouté (dixit l'auteur) quelques façons de générer des parois rocheuses automatisées. Ma difficulté actuelle à les développer est que cela devient vite fastidieux de créer des tables de variations pour différentes permutations de choses différentes, puisque les règles de construction fonctionnent par substitution :

Table de variation pour des rochers 2x2x3. Chaque rocher 2x2x3 est remplacé par un élément aléatoire du tableau ci-dessous, puis chaque couleur verte est remplacée par une couleur de rocher. (ceci est un fichier .ldr) :

 

Pour aller plus loin

Le code est (d'après l'auteur) encore en désordre et trop compliqué, avec certaines exceptions qui sont codées en dur, et des objets qui font des trucs bizarres, des variables globales, des noms d'objets qui sont aussi bizarres, etc...

Dossier BuildSections (Sections de construction)

Les sections de construction représentent l'assemblage d'une partie du château. Cela peut être quelque chose comme un mur, une tour, une porte, un toit, un arbre ou une autre section reconnaissable d'un château. Celles-ci sont engendrées à partir des "SpawnInstructions". Toutes les sections de construction ont leur assemblage principal dans le premier sous-modèle nommé "main.ldr". S'il y a la méta-commande "0 SCMD_TABLE" dans le fichier, cela signifie que la section de construction utilise un tableau, et l'un des autres sous-modèles sera sélectionné lors de la création.

Voir le fichier 8x8_Sloped_Roof_Table comme un bon exemple d'une section de construction par tableau.

Le but est que tous les éléments appelés par le tableau aient les mêmes dimensions à tous les points de jonctions qui peuvent s'accoupler avec d'autres sections.

Dossier Components (composants)

Les composants représentent une seule chose, comme un drapeau, une partie de mur, une torche, un pilier. Les composants sont utilisés dans les sections de construction. Le but des composants est de faire en sorte qu'une certaine chose se comporte de la même manière dans toutes les sections. Par exemple, tous les drapeaux du château doivent être de la même couleur.

Les sections de construction peuvent être mises à jour pour contenir la dernière version de chaque composant.

Méta-commandes des sections et composants LDraw

Chaque fichier des sections de construction peut contenir des méta-commandes spécifiques utilisées par la macro pour déterminer ses couleurs et les éléments finaux. Les méta-commandes sont les suivantes :

Le dernier élément de la méta-commande sera "ALL" ou "ONE". S'il s'agit de "ALL", alors la sélection aléatoire est la même dans tous les cas. Si c'est "ONE", alors la sélection aléatoire sera différente pour chaque cas.

La clé (key) est utilisée pour rendre la sélection aléatoire identique dans tous les cas comportant la même clé. Par exemple, si nous voulons que tous les créneaux aient le même style d'assemblage, nous pouvons utiliser une clé pour synchroniser cela.

Dossier Config (configuration)

Cela contient les divers paramètres de configuration que le générateur doit utiliser, comme par exemple une liste de toutes les définitions de couleur.

Dossier Layouts (implantations)

Cela contient des implantations qui sont utilisées actuellement par le générateur pour développer la construction d'un château. Le but ultime est de rendre ces implantations aléatoires et non plus manuelles.

Dossier Lookups (tables de recherche)

Lorsque des composants sont redirigés pour effectuer un remplacement, la table de recherche du nouveau composant se trouve dans ce dossier.

Dossier SpawnInstruction (instructions de génération)

Cela contient des instructions qui engendreront une "structure" particulière dans la construction du château. La syntaxe est la suivante :

Exemple 1 :

10x10_Extended_OctTower.ldr@A_rot0, 0, 0, 0
%A,A,B
:A
DrumTowerLvL2.ldr@A_rot0, 0, 19, 0
$OctTowerTop.txt@A_rot0, 0, 38, 0
:B
10x10_Oct_Battlement_Corner_Table.ldr@A_rot0, 0, 19, 0

Exemple 2 :

8x8_TowerBase@A_rot0, 0, 0, 0
!8x8_TowerUpper@A_rot0, 0, 19, 0
%A,B
:A
!8x8_TowerSections@A_rot0, 0, 38, 0
!8x8_TowerSections@A_rot0, 0, 60, 0
!8x8_Sloped_Roof_Table@A_rot0, 0, 82, 0
:B
!8x8_TowerSections@A_rot0, 0, 38, 0
!8x8_TowerSections@A_rot0, 0, 60, 0
8_to_10@A_rot0, 0, 82, 0
!10x10_Crennelation@A_rot0, 0, 86, 0

 

Droits et Copyright

Le programme CastleGenerator est développé par Richard Firth.

Cette page en français est basée sur la page : Computer Generated Castles du Forum Eurobricks (en Anglais), et sur la page : CastleGeneratorPublic de l'auteur.

Traduction et Adaptation : J.C. Tchang.