Création de la faune herbivore
Tutoriel en cours de création
Nous ne traitons ici que l'aspect Datasheet. La création graphique et l'implémentation dans un fichier de Primitives pour l'instanciation dans le monde seront traités à part.
Nous allons cette fois partir du principe que nous développons une faune complète, et allons donc envisager notre système de datasheet de façon à avoir des héritages qui soient pratiques.
Organiser les héritages
Le but est de créer un type de petits crabes inoffensifs (ou presque), les tupa. Nous allons créer un modèle adulte, simple, que l'on croisera dans le Delta.
Étude de l'existant
Nous allons déjà étudier comment cela se combine pour l'exemple fourni par Ryzom Core et son Yubo, avec le fichier chdfa1.creature.
On trouve le fichier dans /leveldesign/game_elem/creature/fauna/bestiary/forest
1) et il contient comme héritages imbriqués:
- chdfa1.creature → Le yubo de bas niveau (il peut être décliné en différentes puissances)
- _dag_for.creature → Yubo des forêts
- _dag.creature → Yubo
- _formuli.creature → Éléments de base des créatures animées
- _medium_slashing_armor_set.creature → Éléments de protection moyenne contre les armes tranchantes
- _ai_herbivore_craintif.creature → Éléments d'Intelligence Artificielle pour des herbivores craintifs
- _formuli.creature → Redondant avec ci-dessus, c'est un appel vers le même fichier
- dag_attack.creature → Attaques du Yubo
- _chdfa1_mp.creature → Matières Premières récupérables sur le Yubo de bas niveau
Définition de notre architecture de fichiers
Nous voyons tout de suite que les fichiers _formuli.creature et _ai_herbivore_craintif.creature peuvent nous être utiles. Nous verrons par la suite si nous voulons créer un fichier spécial d'IA pour nos tupas, auquel cas nous générerons un fichier distinct que nous appellerons en remplacement de celuic-i.
Nous ne prévoyons pas de niveaux très variés, mais envisageons tout de même plusieurs types de tupa à l'avenir, selon leur âge, par exemple, ou peut-être de subtiles variations de variété. On peut donc définir pour l'instant que nous créerons donc les fichiers suivants :
- tupa1.creature → Notre tupa final ;
- _tupa_delta.creature → Sa variété, où nous définirons par exemple une texture, et peut-être certains détails liés à son écosystème ;
- _tupa.creature → Le tupa générique ;
- _formuli.creature → Pour avoir les éléments de base des créatures animées ;
- _ai_herbivore_craintif.creature → L'IA de notre tupa ;
- _heavy_slashing_armor_set.creature → Les éléments de protection de notre tupa, très efficaces contre les armes tranchantes ;
- _tupa_attack.creature → Les techniques d'attaque du tupa ;
- _tupa1_mp.creature → Les matières premières qu'on pourra récolter sur ce tupa.
Nous allons créer nos fichiers dans l'ordre de descente des héritages, en partant du plus élevé dans la hiérarchie. Nous procéderons donc comme suit, si l'on indique où chacun des fichiers ira, afin de pouvoir le réutiliser pour d'autres créatures, le but de l'héritage étant la mutualisation pour économiser le système.
- _formuli.creature → /leveldesign/game_elem/creature - Existe déjà ;
- _ai_herbivore_craintif.creature → /leveldesign/game_elem/creature/fauna/ai_parent - Existe déjà ;
- _heavy_slashing_armor_set.creature → /leveldesign/game_elem/creature/fauna/set_armure ;_
- _tupa.creature → /leveldesign/game_elem/creature/fauna/parent_creature_prototype ;
- _tupa_delta.creature → /leveldesign/game_elem/creature/fauna/ecosystem/delta ;
- _tupa_attack.creature → /leveldesign/game_elem/creature/npc/bestiary/creature/_attack_type_parents ;
- _tupa1_mp.creature → /leveldesign/game_elem/creature/raw_material_assignment.
- tupa1.creature → /leveldesign/game_elem/creature/fauna/bestiary/delta ;
Tuto pour faire un pop un herbi rapidement
Nous allons prendre les datasheets du pendo comme base de travail pour faire un poper un autre herbivore : arma
Dans les data-serveurs :
Copier les creature
Copier :
$leveldesign$/Game_elem/Creature/fauna/bestiary/forest/chdfa1.creature
Changer en arma01.creature
Ouvrir le fichier : arma01.creature
remplace <PARENT Filename="_dag_for.creature"/> avec <PARENT Filename="_arma_for.creature"/>
Copier :
$leveldesign$/Game_elem/Creature/fauna/Ecosystem/forest/_dag_for.creature
Changer en _arma_for.creature
Ouvrir le fichier : _arma_for.creature
Remplace <PARENT Filename="_dag.creature"/> Avec <PARENT Filename="_arma.creature"/>
Copier :
$leveldesign$/Game_elem/Creature/fauna/Parent_creature_prototype/_dag.creature
Changer en _arma.creature
Ouvrir le fichier : _arma.creature
remplacer dans la struture Basics <ATOM Name="Race" Value="dag"/> avec <ATOM Name="Race" Value="arma"/>
Et remplace la structure de l'équipement avec :
<STRUCT Name="Equipment"> <STRUCT Name="Body"> <ATOM Name="Item" Value="arma_chest.item"/> </STRUCT> <STRUCT Name="Legs"> <ATOM Name="Item" Value="medium_slashing_legs.item"/> </STRUCT> <STRUCT Name="Arms"> <ATOM Name="Item" Value="medium_slashing_arms.item"/> </STRUCT> <STRUCT Name="Hands"> <ATOM Name="Item" Value="medium_slashing_hands.item"/> </STRUCT> <STRUCT Name="Feet"> <ATOM Name="Item" Value="medium_slashing_feet.item"/> </STRUCT> <STRUCT Name="Head"> <ATOM Name="Item" Value="medium_slashing_head.item"/> </STRUCT> </STRUCT>
Remplace le Skel, AnimSetBaseName et LodCharacterName dans 3d data :
<ATOM Name="Skel" Value="TR_MO_Arma.skel"/> <ATOM Name="AnimSetBaseName" Value="arma"/> <ATOM Name="LodCharacterName" Value="TR_MO_arma_LOD"/>
Copier :
$leveldesign$/Game_elem/items/armor/creature_armor/medium_slashing_chest.item
Changer le fichier : arma_chest.item
Ouvrir le fichier : arma_chest.item
Remplace dans : 3d
<STRUCT Name="3d"> <ATOM Name="shape" Value="TR_MO_Arma.shape"/> <ATOM Name="shape_female" Value="TR_MO_Arma.shape"/> </STRUCT>
Les anim
anim de l'arma
Copier le dossier :
$leveldesign/game_element/anim/anim_set/pet/dag
Dans
$leveldesign/game_element/anim/anim_set/pet/arma
Changer ces fichiers : le dag en arma
dag.animset_mode
dag_alert__.animation_set
dag_combat__.animation_set
dag_death__.animation_set
dag_default__.animation_set
dag_eat__.animation_set
dag_hungry__.animation_set
dag_rest__.animation_set
$leveldesign/game_element/anim/anim_set/pet/arma/arma_alert__.animation_set
$leveldesign/game_element/anim/anim_set/pet/arma/arma_combat__.animation_set
$leveldesign/game_element/anim/anim_set/pet/arma/arma_eat__.animation_set
$leveldesign/game_element/anim/anim_set/pet/arma/arma_hungry__.animation_set
anim general
Ouvrez le fichier :
$leveldesign/game_element/anim/anim_set/entities.animset_list
Rajouter la ligne : <code> <ATOM Name=“arma” Value=“arma.animset_mode”/> <code>