Création d'un nouveau continent
Tutoriel en cours de rédaction/test/finalisation/mise en forme Cette page se base à l'origine sur une traduction de http://dev.ryzom.com/projects/ryzom/wiki/CreatingNewLand
Liens pouvant être utiles :
- http://web.archive.org/web/20130404162951/http://www.opennel.org/confluence/display/~mattr/Home (partie Building teleports)
- http://dev.ryzom.com/boards/17/topics/5661?r=5662#message-5662 (partie accès aux zones indoors)
Prérequis (indiqués avec des références Windows car le processus complet n'est possible pour l'heure que sous cet OS):
- avoir téléchargé et installé les assets graphiques de Ryzom dans le lecteur W:
- avoir téléchargé et installé le code source de Ryzom Core, dans le lecteur R:
- avoir monté le répertoire R:\code\ryzom\common\data_leveldesign dans le lecteur L:
- avoir téléchargé les assets graphiques de Newbieland et les avoir ajoutés à ceux de Ryzom
- avoir copié le contenu du paquetage des outils de leveldesign dans R:\code\ryzom\tools\leveldesign\install
- avoir appliqué les scripts Python de R:\code\nel\tools\build_gamedata dans le dépôt des assets graphiques de Ryzom
Créer le paysage en utilisant le World Editor
Mise en place
- Trouver un nom pour votre nouveau territoire, appelons-le ici “dispensaire01”
- Créer un sous-répertoire dans R:\code\ryzom\tools\leveldesign\install\continents qui porte ce nom, donc “dispensaire01” pour notre exemple
- Copier tout le contenu du répertoire “newbieland” dans ce nouveau répertoire, SAUF le répertoire “pacs” et le fichier “newbieland.land”
- Ouvrir L:\leveldesign\world_editor_files\world_editor_classes.xml avec un éditeur de texte et y chercher la section qui commence avec
<!-- **************************** LOCATIONS **************************** -->
et ajouter après
<PARAMETER NAME="id" TYPE="const_string" VISIBLE="true">
les lignes suivantes :
<COMBO_VALUES CONTEXT_NAME="default">
<CONTEXT_VALUE VALUE="dispensaire01"/>
</COMBO_VALUES>
Sauvegarder le fichier et le fermer.
Beaucoup de liens dans ce fichier sont absolus, et codés selon une hiérarchisation Windows (lettre l:
comme lecteur de disque).
Il faudrait les reprendre pour qu'ils soient compatibles avec une hiérarchie relative, pouvant fonctionner quel que soit le système.
- Lancer le World Editor (le binaire est dans R:\code\ryzom\tools\leveldesign\install )
- Clic gauche Project > New landscape
- Clic gauche File > Save
- Aller dans le répertoire R:\code\ryzom\tools\leveldesign\install\world_editor_continents et indiquer le nom de votre continent comme nom de fichier (“dispensaire01”) et taper <Entrée> (pour le fichier .worldedit)
- Aller dans R:\code\ryzom\tools\leveldesign\install\continents\, dans le répertoire du nom de votre projet et indiquer une nouvelle fois le nom de votre continent comme nom de fichier (“dispensaire01”) et taper <Entrée> (pour le fichier .land)
- Clic gauche sur Project > Settings, et :
- indiquer comme “data directory” le répertoire indiqué plus tôt, à savoir R:\code\ryzom\tools\leveldesign\install\continents\dispensaire01
- Indiquer le “context” sur “default”
- Cliquer sur <OK> pour valider le tout, attendre que World Editor charge les données trouvées là
- Sauvegarder de nouveau le projet
"Peinture"
- Clic gauche View > Zone
- Sélectionner “passable” et “no” comme premier filtre de catégorie, ce qui affichera toutes les briques LIGO disponibles sous ce type (dans le set de Newbieland, aucune brique n'est “passable”)
- Clic gauche Edit > Goto Position, indiquer “O,O” et cliquer sur <GoTo>, cela amènera le centre de l'écran à la valeur 0,0 1_AA, positionnez une brique “crevasse_1” pour la marquer
- Positionner cette brique en haut à gauche avec le bouton central de la souris, cela permettra de n'afficher à l'écran que des aires valides
- Peignez votre territoire avec les briques LIGO
- Sauvegardez le projet.
Il n'est pas obligatoire de placer sa carte en haut à gauche, qui sera donc au nord-ouest. Les zones valides pour placer ses terrains vont de 1_AA à 255_JV. Les placer correctement dès le départ permettra d'avoir les bonnes distances entre eux par la suite, voire de les connecter à l'avenir.
Cela veut dire que l'intégralité des cartes doit tenir dans un carré de 256x160m de côté, soit environ 41km.
Finaliser
- Copier le fichier .land de R:\code\ryzom\tools\leveldesign\install\continents\ vers W:\Database\Landscape\ligo\jungle\
- Clic gauche File > Export snapshot puis <OK>. Cela sera la carte en jeu, nous travaillerons dessus plus tard.
Créer les datasheets avec Georges Editor
Mise en place
- Aller dans L:\leveldesign\World
- Créer un nouveau sous-répertoire, avec le même nom que votre nouveau territoire (“dispensaire01” dans notre cas)
- Copier les fichiers de L:\leveldesign\World\newbieland dans ce nouveau sous-répertoire
- Renommer “newbieland.continent” en “<votre_territoire>.continent” où “<votre_territoire>” est le nomp de votre carte (“dispensaire01” dans notre cas)
- Ouvrir continent.cfg avec un éditeur de texte
- Changer le paramètre “LandFile” pour le chemin vers le .land que vous aviez copié précédemment ( W:\Database\Landscape\ligo\jungle\ )
Là encore, liens en dur avec hiérarchie et lettres de lecteurs Windows
Éditer les DataSheets du monde
- Ouvrir L:\leveldesign\World\Ryzom.world avec Georges
- Clic droit sur la dernière entrée dans la “continents list” et choisir “insert”
- Nommer cette nouvelle entrée avec le nom de votre territoire (“dispensaire01”)
- Revenir dans la fenêtre du World Editor
- Placer le pointeur de la souris d'abord tout en haut à gauche de la carte puis en bas à droite (image04.jpg), les points rouges sur l'image.
- Noter à chaque fois les informations entourées sur l'image, l'une d'elles est un identifiant de zone (1_AA) et l'autre une paire de coordonnées x et y (0,0)
- Retourner dans Georges Editor avec la DataSheet de votre territoire ouverte
- Remplir le “selection_name” et “continent_name” avec le nom du territoire (“dispensaire01”)
- Remplir les minx, maxx, miny et maxy en vous servant des données notées précédemment
- Une nouvelle fois, clic droit sur la dernière entrée dans la “maps list” et choisir de nouveau “insert”
- Nommer cette nouvelle DataSheet comme votre territoire, mais avec le préfixe “cont_” (“cont_dispensaire01”)
- Remettre les minx, maxx, miny et maxy en vous servant des mêmes données notées précédemment
- Indiquer le nom de la DataSheet dans le champ “name” (“cont_dispensaire01”), le nom de votre territoire dans “contname” (“dispensaire01”)
- Remplir le champ “bitmap” sous le format “<nom_territoire>.tga” où <landname> est le nom de votre territoire (“dispensaire01”) (cf. le snapshot fait plus haut)
- Sauvegarder le tout avec Georges Editor
Éditer les DataSheets du territoire
- Aller dans le répertoire L:\leveldesign\World\<votre_territoire> (“dispensaire01”)
- Ouvrir le fichier .continent avec Georges de façon à le modifier selon nos besoins (ce sont les données de Newbieland pour l'instant)
- Changer les champs “Name”, “PacsRBank”, “PacsGR”, “LandscapeIG”, “WorldMap”, changer le terme “Newbieland” pour celui de votre territoire (“dispensaire01”)
- Changer les valeurs de ZoneMin, ZoneMax pour rendre compte des données notées précédemment (ZoneMin=1_AA et ZoneMax=17_BK dans notre cas)
- Trouver la section “villages” dans la liste et tous les effacer sauf la partie “start_village_newbieland”
- Dans “start_village_newbieland”, effacer la iglist. Nous y reviendrons plus tard
- Chercher la section “ZCs” et effacer tous les “ZCs”
- Chercher la section “Landmarks” et tous les effacer
- Sauvegarder le tout
Créer les primitives de la région
Mise en place
- Aller dans L:\primitives et créer un sous-répertoire avec le nom de votre territoire (“dispensaire01”)
- Ouvrir le World Editor
- Clic gauche Project > New primitive
- Sauvegarder le projet, dans le répertoire L:\primitives\<nom_territoire> (“dispensaire01”) au nom de “region_<nom_territoire>” (“region_dispensaire01”)
- Aller dans L:\primitives et ouvrir le fichier file_index.cfg avec un éditeur de texte
- Ajouter le nom du fichier de primitive à la fin de cette liste, en respectant les conventions de mise en forme. Ne pas oublier que le nombre indiqué doit être unique. Dans notre cas, ajouter : “region_dispensaire01.primitive”, “768”,
- Dans le fichier
primitives.cfg
, au même endroit, ajouter une nouvelle fois le nouveau fichier de primitives avec les conventions de mise en forme. Dans notre cas, ajouter après le “MAPEND” final :
///////////////////////// // DISPENSAIRE 01 // ///////////////////////// "CONTINENT dispensaire01", "MAP dispensaire01", "MAP dispensaire01_all", "FILE region_dispensaire01.primitive", "MAPEND", "MAPEND",
Création de la région, du point de départ...
- Revenir au World Editor
- Clic droit sur la primitive et choisir “Add continent”
- Clic droit sur ce nouveau continent, choisir “properties”, indiquer le nom du territoire dans le champ de nom (“dispensaire01”), dans “id”, choisir le nom de votre territoire et dans “sheet” le nom également.
- De nouveau Clic droit sur le nouveau continent qui a désormais le nom du territoire, choisir “Add place”
- Clic droit sur la place, renommer en “starting_place”
- Clic droit sur la place, choisir “Add teleport_spawn_zone”
- Clic droit sur la zone d'arrivée de téléportation, sélectionner “properties” et changer son nom en “player_spawn_point”
- Cliquer de nouveau sur la zone d'arrivée de téléportation, une rectangle gris va s'illuminer dans la zone 10_AQ, clic droit dessus et sélectionner “move”
- Clic sur le rectangle et le placer à l'endroit approprié (14_BH dans notre exemple)
- Cliquer sur la place “starting_place”, appuyer sur <space> pour entrer dans le mode d'édition, puis appuyer sur F11 pour entrer dans le mode d'ajout de points
- Ajouter des points au rectangle de façon à créer une zone. Cela doit se faire dans le sens anti-horaire.
- Quand c'est fini, cliquer sur F5 pour revenir dans le mode de sélection
- Clic droit sur “start_villages”, choisir “Add start_village”, clic droit sur celui-ci et le renommer à votre goût (“dispensaire01_start_village”)
- Clic droit sur le village, choisir “Add start_point”
- Clic droit, choisir “properties” et le renommer à son choix “dispensaire01_start_point”
- Remplir le champ “spawn zone” avec le nom de la zone d'arrivée de téléportation créé plus tôt (“player_spawn_point”)
- Cliquer sur le continent et entrer de nouveau dans le mode d'édition de points (en cliquant sur <space>), puis ajouter quelques points autour du continent. Cela doit se faire dans le sens anti-horaire.
- Sauvegarder
Ajouter les informations de primitive aux DataSheets
- Retourner à la DataSheet sous Georges ( “L:\leveldesign\World\dispensaire01\dispensaire01.continent” )
- Sélectionner le seul village qui avait été laissé ( “start_village_newbieland” dans notre exemple )
- Le renommer selon le nom du village de départ ajouté dans le World Editor ( “dispensaire01_start_village” )
- Éditer le champ “zone” pour correspondre à la zone où ce village a été placé ( là où starting_place et player_spawn_point ont été placés, dans notre cas, c'est 14_BH )
- Sauvegarder
Fix du serveur AIS
Il faut éditer ai_service_default.cfg et commenter certaines lignes
StartCommandsWhenMirrorReadyNewbieland = { //"loadContinent newbieland", //"createStaticAIInstance newbieland", //"loadMapsFromCommon newbieland_all", };