Wikia Planetbase
S'inscrire
Advertisement

Présentation[]

Nous allons décortiquer le texte traduit du dev. Vous allez pouvoir construire un défi rien qu'avec le premier fichier décrit ici.

Il y a 3 types de fichiers par défi :

  1. fichier de définition (indispensable !).
    Ce fichier est complètement détaillé ci-dessous en l'état de la version 1.2.0 ß 13.
    Il y définit les conditions de départ, les objectifs et divers modificateurs. Il devra être nommé : « challenge_nom_du_defi.xml »
  2. fichier à partir d'une sauvegarde qui permettra de démarrer à partir d'une base déjà développée.
    Il devra avoir comme nom : « challenge_nom_du_defi_save.xml »
  3. fichier du texte d'introduction du défi : le nom du défi, sa description, ses objectifs, etc. et pouvant être décliné en plusieurs langue.
    Il devra être nommé : « en_nom_du_defi.xml » ou « fr_nom_du_defi.xml » pour le français. Sinon, lors du démarrage du défi, la page de présentation sera sans texte.

Les 2e et 3e fichiers seront décrits ultérieurement.

xml késako ?[]

On va faire un petit tour en hyperbref :

Web-XML-icon

Le XML (eXtensible Markup Language) est un langage qui décrit des données à l'aide de balises et de règles que l'on peut personnaliser.

ET C'EST TOUT...

Il sera composé de 2 types de balises : balises uniques ou par paire (même libellé de balise mais pour la seconde balise, on mettra un / avant le libellé, cela désignera la fin des données). Nous n'en auront que 2 dans la section suivante, ça reste simple ! Dans ces balises par paire, il ne faut pas les faire se chevaucher.

Premier fichier xml[]

Vous trouverez ici le début de chaque élément du xml dans un ordre qui, j'espère sera le plus simple, logique et « plug and play ».

Nous ne parlerons que du seul fichier de l'environnement, étant donné sa complexité.

Il faudra créer un fichier (prendre notepad++ sur Win ou TextWrangler sur Mac, par exemple).

Tout fichier xml (dont le nom ne sera qu'en minuscule) sera enregistré au format utf-8 et comportera systématiquement comme première ligne :

<xml version="1.0" encoding="utf_8"?>

La 2 et 3e ligne devront être :

<challenge>
    <challenge group_id="nom_du_groupe_de_defi" order="1" difficulty="1">
Attribut Description
group_id Il détermine le numéro associé aux groupes de défis (en fait son nom de campagne). Vous pouvez regrouper plusieurs défis liés et ils apparaîtra à côté des autres dans l'interface utilisateur qui affiche tous les défis.
order Ordre dans lequel ce défi apparaîtra dans l'interface utilisateur par rapport aux autres défis du même ensemble (de 0 à x).
difficulty Doit être compris entre 1 et 4, et donnera au joueur une idée de la difficulté que sera ce défi (1 : accessible, 2 : difficle, 3 : impossible, 4 : suicide).
requires Vous pouvez spécifier qu'avant de jouer à ce défi, l'utilisateur devra remporter un autre défi, ce qui sera utile si vous voulez créer une campagne qui comprendrait plusieurs niveaux à faire dans l'ordre.


Vient ensuite un exemple extrait d'un défi sur la planète F, il débute sans fichier de sauvegarde :

<starting_location planet_class="F" latitude="15" longitude="-12" savegame="false"/>
Attribut Description
planet_class Cela spécifie le type planète qui sera utilisé comme base pour ce défi (D : désertique, F, glaciale, M : lune, S : orageuse). Toutes les caractéristiques de terrain, de gameplay et d'environnement sont empruntées de cette planète à moins que vous ne les remplaciez dans le XML (nous expliquerons comment dans les sections suivantes).
latitude latitude de départ. Les défis utilisent toujours le même emplacement d'atterrissage. Un nombre positif indiquera le Nord et négatif le Sud.
longitude longitude de départ. Les défis utiliser toujours le même emplacement d'atterrissage. Un nombre positif indiquera l'Est et négatif l'Ouest.
savegame valeur vrai (true) ou fausse (false). Cela dépend s'il y a un fichier de sauvegarde présent ou non. Il sera chargé lorsque le défi commencera (il devra se nommé comme le présent fichier avec « _save » à la fin).

Structure[]

Maintenant que nous avons le début d'installé, voici un récapitulatif avec un résumé de ce que nous allons créer sur cette planète !

<?xml version="1.0" encoding="utf_8"?>
<challenge>
	<challenge group_id="nom_du_groupe_de_defi" order="1" difficulty="1">
	<starting_location planet_class="F" latitude="15" longitude="-12" savegame="false"/>

	<!--Remarque : les balises à l'intérieur ne comportent pas de "s", ce sont les balises qui définissent la planète ! Les autres (<starting_specializations>) servent à les désigner et les encadrés pour que le jeu les retrouve. -->''

	<!-- Équipage de démarrage -->
	<starting_specializations>
		<starting_specialization> [...]
	</starting_specializations>

	<!-- Ressources initiales. Remarquez que le joueur pourra obtenir en plus 15 unités de métal supplémentaire et encore 10 de bioplastique lors du recyclage du vaisseau colonial -->
	<gameplay_modifiers>
		<gameplay_modifier> [...]
	</gameplay_modifiers>

	<!-- Modifie le terrain et les liquides et créer une variation de la planète d'origine indiqué plus haut -->
	<terrain_modifiers>
		<terrain_modifier> [...]
	</terrain_modifiers>

	<!-- Modifie le l'atmosphère, l'ensoleillement, et la visibilité des planètes ou autre à l'horizon -->
	<environment_modifiers>
		<environment_modifier> [...]
	</environment_modifiers>

	<!-- Les objectifs du défi -->
	<objectives>
		<objective> [...]
	</objectives>

</challenge>

L'équipage[]

Et voilà c'est fini, maintenant nous allons voir chacune des balises au singulier :

<starting_specializations>
	<starting_specialization type="yy" amount="xx" />
</starting_specializations>
Attribut Description
type="specialité_du_gars" spécialisation d'une personne/robot
amount="5" son nombre

On mettra donc un seul attribut à chaque fois : Worker (ouvrier), Biologist (biologiste), Engineer (ingénieur), Medic (médecin), Guard (garde), Visitor (visiteur), Intruder (intrus), Carrier (robot porteur), Constructor (robot constructeur) et enfin Driller (robot foreur)

Exemple d'entrée :

<starting_specializations>
	<starting_specialization type="Worker" amount="2" />
	<starting_specialization type="Engineer" amount="1" />
	<starting_specialization type="Biologist" amount="2" />
</starting_specializations>

Les ressources[]

<starting_resources>
	<starting_resource type="yy" amount="xx" />
</starting_resources>
Attribut Description
type="la_ressource" Une des 14 ressources existantes
amount="5" sa quantité

Vegetables (légumes), Vitromeat (viande), Meal (repas), AlcoholicDrink (boisson alcoolisée, Ore (minerai), Metal (métal), Starch (amidon), Bioplastic (bioplastique), MedicinalPlants (plantes médicinales), MedicalSupplies (médicaments), Spares (pièces détachées), Semiconductors (semiconducteurs), Gun (arme), Coins (argent)

Exemple pour le début du défi :

<starting_resources>
	<starting_resource type="Metal" amount="200" />
	<starting_resource type="Meal" amount="35" />
	<starting_resource type="Coins" amount="250" />
</starting_resources>

Le gameplay[]

<gameplay_modifiers>
	<gameplay_modifier type="un_gameplay_" param="un_truc" />
	<gameplay_modifier type="un_gameplay_" />
</gameplay_modifiers>
Attribut (type="xx") Description
IntruderMinPrestige

spécifie le prestige minimal avant l'arrivée d'intrus. Pour les planètes builtin cela varie entre 150 et 100.

Par défaut pour les planètes de classe :

  • D : 150
  • F : 125
  • M et S : 100
ExtraIntruders

ajoute un nombre spécifique d'intrus supplémentaires par attaque. Pour les planètes builtin c'est compris entre 0 et 1.

Par défaut pour les planètes de classe :

  • D : 0
  • F : 0
  • M et S : 1
DisableColonistShips Désactive l'arrivée des colons en vaisseaux.
DisableVisitorShips Désactive l'arrivée des visiteurs en vaisseaux.
DisableTradingShips Désactive l'arrivée de vaisseaux marchands.
DisableIntruders Désactive l'arrivée d'intrus.
DisableTraderTechs Empêche les marchands de vendre des brevets
DisableStructure

param="" (Bar, LandingPad, Starport, Signpost, Lab, RadioAntenna, Pyramid, Monolith, SickBay, ProcessingPlant ou ControlCenter)

Désactive une structure qui ne relève pas du défi.

DisableComponent Désactive un contenu de structure.
DisableStructureRequirements Donne l'accès au joueur à une structure autrement inaccessible.
DisableVisitorRequirements Désactive l'accès aux visiteurs qui devrait se faire par la construction d'un Port spatial.
DisableNoMedicalSuppliesWarning Désactive la fenêtre et son signale sonore lorsqu'il n'y a plus de médicaments.
RestrictedTradingShips (ex. : param="Electronics,Industrial"), Valeurs possibles : Electronics, RawMaterial, Medical, Count, Food, Industrial.
InfiniteTraderBots Autorise les marchands de toujours vendre les robots. Mais ils n'en fourniront plus lorsqu'il y a plus de robot que de colons.
ShipFrequency (param="2.0") Permet aux vaisseaux marchands d'arriver plus rapidement.
DisasterFrequency  (param="1.0") Détermine la fréquence des cataclysmes (très fréquent : param="10.0").
UnlockTech (param="DrillerBot") Débloque l'accès aux brevets : GoliathTurbine, ColossalPanel, MassiveStorage, FarmDome, MegaCollector, SuperExtractor, ConstructorBot, DrillerBot, GmTomatoes, GmOnions.
SandstormRisk Fournit la fréquence du cataclysme pour la tempête de sable (param="High") ou None, Low ou Variable.
MeteorRisk Fournit la fréquence du cataclysme pour les chutes de météorites (param="High") ou None, Low ou Variable.
SolarFlareRisk Fournit la fréquence du cataclysme pour les éruptions solaires (param="High") ou None, Low ou Variable.
BlizzardRisk Fournit la fréquence du cataclysme pour les tempêtes de neige (param="High") ou None, Low ou Variable.
AtmosphereDensity Critère de densité de l'atmosphère (param="High") ou None, Low ou Variable.
LightAmount Quantité lumineuse reçu par la planète (param="High") ou None, Low ou Variable.

Terraformation[]

Mode pâte à modeler : changeons la face du monde, en tout cas celle de votre astre.

<terrain_modifiers>
<terrain_modifier type="xx" param ="yy" value="245, 245, 255" />
	<terrain_modifier type="xx" value="1.0" />
	<terrain_modifier type="xx" value="0,0,0" />
</terrain_modifiers>


Attribut Description
HeightMultiplier Forme les montagnes.
HeightOffset Enfonce le terrain globalement.
DistantHeightOffset Faire un relief loin du centre de la carte.
CraterDensity Ajoute des cratères, généralement la planète de type D n'en a pas.
LiquidAmount Place le niveau des eaux.
LiquidColor Couleur (valeurs en RVB) des eaux. Prendre value="0,0,0" pour que l'eau translucide reflète le ciel.
BackdropScale Make backdrops smaller on the Y axis (intraduisible pour l'instant).
TintTexture

param="Flat1" : colorie le sol
param="Flat2" : idem (et pourquoi Flat2)
param ="Slope" : colorie les pentes des reliefs.

avec : value="xx, yy, zz"

HslTransformTexture

Fait une sorte de luminescence (non document mais cela peu éblouir avec comme valeur : value="251, 201, 228". Un post sur Steam à lire pour cette instruction.

C'est le codage couleur TSL (teinte, saturation, luminosité) ou HSL en anglais. Respectivement :

  1. Teinte, la forme pure d'une couleur : change la couleur.
  2. Saturation : intensité de la coloration (du gris à la couleur pure)
  3. Luminosité (clarté, brillance).


Exemple : <terrain_modifier type="HslTransformTexture" param ="Flat1" value="10, 0, 0"/>

Atmosphère - rotation de l'astre[]

Horaires, brouillard, lumière, lumière ambiante, lueur de l'espace et de l'horizon... tout un programme, tout un spectacle, il ne manque plus que le feu d'artifice avec quelques essaims de météorites !

<environment_modifiers>
	<environment_modifier type="xx" value="0,0,0" />
	<environment_modifier type="xx" value="0.00125" />
</environment_modifiers>
Attribut Description
RemoveSatellites Supprime les astres célestes à proximité de la planète.
DayHours Détermine la durée du jour. Chaque heure de jeu est de 30 secondes de temps réel à la vitesse de 1x. Toutes les planètes dans le jeu ont par défaut 12 heures.
NightHours Idem pour la nuit. La durée varie de 8 à 12 heures par défaut pour les planètes de base.
FogIntensityDay Intensité de la brume, le jour.
FogIntensityNight Intensité de la brume, la nuit.
FogIntensityTwilight Intensité de la brume, au crépuscule et à l'aube.
LightColorDay Couleur lumineuse le jour
LightColorNight Couleur lumineuse la nuit
LightColorTwilight Couleur lumineuse au crépuscule et à l'aube
AmbientColorDay Lumière d'ambiance le jour
AmbientColorNight Lumière d'ambiance la nuit
AmbientColorTwilight Lumière d'ambiance au crépuscule et à l'aube
HorizonColorDay Couleur de l'horizon le jour
HorizonColorNight Couleur de l'horizon la nuit
HorizonColorTwilight Couleur de l'horizon au crépuscule et à l'aube
SkyColorDay Couleur du ciel le jour
SkyColorNight Couleur du ciel la nuit
SkyColorTwilight Couleur du ciel au crépuscule et à l'aube

But(s) du défi[]

Les divers objectifs pour votre défi :


<objectives>
	<objective type="" param="xx" />
	<objective type="" param="xx" value="yy" />
</objectives>


Attribut Description
KeepCharacterAlive Permet de mettre en échec un défi si la cible de la valeur spécifiée dans "param" meure (un colon en l'occurrence, son nom devra être dactylographié parfaitement), comme ceci : <objective type="KeepCharacterAlive" param="John Smith"/>
AccumulateResources Entreposage de ressources. Ex. : param="Coins" value="1000", nécessite de faire 1000 en argent.
ReachPopulation Nombre de colons, ex. : value="100".
TimeLimit Limité dans le temps
SurviveTime Survivre sans se faire tuer.
BuildStructures Nécessite des construction de structures. Ex. : param="RadioAntenna" value="3"). Pour 3 antennes radions.
BuildComponents Nécessite des construction de contenus de structures. Ex. : param="Radioconsole" value="3", pour 3 terminaux radio.
ReachPrestige Atteindre un seuil de prestige. Ex. : value="100", pour 100 en prestige.
ReachWelfare Atteindre un certain niveau de bien-être, valeurs entre 0 et 1.

Le mot final…[]

Eh bien, quoi c'est fini ? Vous n'avez pas oublié quelque chose :

</challenge>

Voilà, sauvegardez le fichier xml et on passera à la structure des 2 autres fichiers bientôt, on a donc fait le plus gros du morceau.

Advertisement