I.6 Fabrication d'un terrain
Tous les terrains sont contenus dans le répertoire {game}/world.
Chaque terrain a son propre répertoire, qui contient un fichier de
description appelé world.cfg. Ce fichier est un fichier de
configuration, il est donc constitué de variables et leurs valeurs
respectives.
Pour un exemple complet et commenté (en anglais), regardez
{game}/world/0000x0000/world.cfg.
Le monde chargé par défaut au démarrage de Ark est spécifié dans
{game}/config/defaultworld.cfg.
I.6.1 Propriétés générales
- world::Name est le nom de la parcelle de monde, s'il s'agit
d'une ville, ce sera le nom de la ville, s'il s'agit d'une maison
ce sera le nom de la maison, etc...
- world::Entities est le nom du fichier qui contient la liste
des entités statiques de ce monde. Pour avoir plus d'informations sur
ce fichier, il est conseillé de regarder la section suivante.
I.6.2 Skybox
Cela permet de définir six textures correspondant à un rendu du ciel
sur un cube imaginaire. Cela est utilisé pour l'environment mapping
(pseudo-réflexion) et pour l'affichage du ciel dans le jeu (plus tard,
le ciel pourra être dynamique avec des textures générées
dynamiquement pour les nuages, mais pour l'instant nenni ;)
- skybox::Width, skybox::Height : spécifie les distances
verticales et horizontales entre le ciel et le joueur, en mètres.
Inutile de mettre une valeur trop grande, cela ne changerait rien
visuellement, et diminuerait la précision du Z-Buffer...
- skybox::Front, skybox::Back, skybox::Right
skybox::Left, skybox::Top, skybox::Bottom :
noms des six matériaux correspondant aux six faces du cube. Attention,
pour ces matériaux DepthWrite doit être mis à False.
- skybox::Sphere : nom de la texture qui sera utilisée pour
l'environment mapping sphérique (regardez la partie
matériaux pour plus d'infos).
I.6.3 Terrain
- heightfield::NumGrounds,
heightfield::Ground0, heightfield::GroundN : le premier
spécifie le nombre de matériaux inclus dans le terrain, ensuite de
0 à n-1, heightfield::GroundN contient le nom du matériel qui sera
utilisé pour ce type de sol.
Deux remarques : d'abord il faut penser à initialiser Walkable
pour ces matériaux. Ensuite, ces matériaux doivent utiliser un
blending additif, et une génération de textures linéaire (projection
verticale). Regardez l'exemple dans la partie
matériaux.
- heightfield::Scale,
heightfield::ScaleY : ce sont respectivement les facteurs
d'agrandissement en X/Z et en Y. En mettant heightfield::Scale
à 1.0, on dit qu'à une hauteur dans la carte des hauteurs
(heightmap), correspond un mètre.
- heightfield::HeightData : "carte des hauteurs", il s'agit du nom
d'une texture en niveaux de gris, codés sur 8bit. Au noir correspond
la hauteur 0, et au blanc correspond la hauteur
255 * heightfield::ScaleY.
- heightfield::GroundData : "carte des sols", il s'agit encore
d'une texture 8bits en niveaux de gris, qui doit avoir la même
taille que la carte des hauteurs. Chaque niveau de gris correspond à
un index dans la liste des types de sols. Par exemple, la couleur noire
(valeur 0) correspond au sol 0, la couleur
noire-un-chtit-peu-plus-claire (valeur 1) correspond au sol 1, et ainsi
de suite...