Ark - Fabrication d'un terrain

### 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...