X Rebirth – Guida al Modding
Quanto segue contiene informazioni che possono interessare coloro che volessero cimentarsi nel modding del gioco. I mod sviluppati per questa guida sono disponibili qui, per chi fosse interessato a seguire gli esempi forniti.
Nota: sarebbe un eufemismo dire che questa guida tocca solamente la minima parte di ciò che è possibile fare col modding di questo gioco! Aggiungerò e migliorerò il contenuto della guida, tempo permettendo.
----------------------------------------------------------------------------------
Installazione Mods
La maggior parte di voi non creerà mod ma, semplicemente, li userà.
La cartella mod del gioco sarà qualcosa tipo...
\Steam\steamapps\common\x_rebirth\extensions\
Probabilmente dovrete creare la cartella "extensions" ma poi basterà semplicemente copiare le cartelle dei mod direttamente al suo interno.
Come verifica, il risultato finale sarà simile a questo:
\Steam\steamapps\common\x_rebirth\extensions\AwesomeMod_v2\content.xml
Tutto qui. La prossima volta che avviate il gioco, verificate che la nuova "estensione" sia abilitata.
----------------------------------------------------------------------------------
Prefazione
Modding, riferito a X Rebirth, significa modificare il gioco creando contenuti nuovi o alterati. Questa guida si concentra principalmente su come lavorare con i file XML per controllare vari i aspetti del gioco.
I mod per Rebirth, sono considerati dal gioco come estensioni ed il loro contenuto verrà inserito nella cartella \extensions. Le estensioni disponibili sono elencate nel sottomenu estensioni del menu start. Le estensioni possono essere attivate o disattivate singolarmente.
Le modifiche possibili possono spaziare dal semplice cambiare visuali specifiche del gioco (esempio il colore del tubo delle ipervie) al creare nuove aggiunte alla mappa dell'universo, alla personalizzazione della IA e/o scrivere missioni.
La creazione di nuovi modelli (mesh) per il gioco va oltre lo scopo di questa guida, e verrà trattato separatamente.
Le attività di Modding di X Rebirth rientrano in diverse categorie generali, tra cui (ma non solo):
1. Materiali ed Effetti
2. Universo (mappa)
3. Mission Director e script IA
4. Mesh dei modelli (non trattate qui)
Ci sono molti file di Rebirth che interesseranno i modders. Qui ci sono alcune posizioni dei file importanti:
\aiscripts - Contiene lo script per il controllo di vari aspetti della IA (combattimento, movimento, estrazione mineraria, ecc.).
\extensions - Qui è dove i vostri mod andranno posizionati.
\index - components.xml e macros.xml. Sono due file importanti che fanno riferimento ad altri file e posizioni.
\libraries - Questi file definiscono una varietà di elementi del gioco.
\maps - File per la mappa della Galassia, cluster e ipervie.
\md - File missione usati dal Mission Director.
\t – File della lingua.
Importante:
Unire o non unire - questo è il problema. Le modifiche del gioco (mod) non devono mai alterare i file base del gioco. Altrimenti non c'è più modo di separare i mod che andranno così ad influire definitivamente sui file comuni. Questo significa che tutte le modifiche devono andare nella cartella estensione ed essere applicate in modo corretto.
Quando il mod è attivo, il gioco esaminerà la struttura delle directory per vedere se il mod contiene file denominati allo stesso modo di quelli in uso nel gioco di base. Se il gioco trova un file "basilare" nel vostro mod, avrà bisogno di sapere cosa fare con le informazioni.
I file XML standard vengono uniti ad un livello inferiore a quello principale, in questo modo, il vostro file dovrà contenere solo le voci aggiuntive che si desidera introdurre.
È anche possibile utilizzare un diverso formato di file XML nei mod. Questo è noto come formato patch ed utilizza lo standard XML Patch per definire le modifiche ai file di base. Questo metodo è più potente e può modificare direttamente il documento XML di base, aggiungendo, modificando e rimuovendo nodi e attributi.
Una condizione comune è quella di dover cambiare o sostituire un modello o una macro con il proprio. Questo si ottiene aggiungendo un vostro indice col nome della macro richiesta (in un file ad indice, il comportamento predefinito è di sostituire le voci più recenti a quelle antecedenti con lo stesso nome, e poiché le voci del file di base vengono caricate prima, caricando successivamente il mod, verrà sovrascritto tutto ciò che è nel file di base) ed orientando il tutto verso un modello o una macro stabilita nel vostro mod. Da qui non si può cambiare praticamente nulla del modello o della macro, incluse le proprietà, le mesh e così via.
Note:
Si prega di consultare l'Appendice (link a breve) per una descrizione dei Modeli e della Struttura dell'Universo. È importante avere una conoscenza base di questi concetti.
Potrebbe essere necessario estrarre i file base del gioco (cat / dat) per esaminare e capire meglio che cosa dovete fare per ottenere le modifiche che volete per il mod. Questo si ottiene utilizzando il XRCatTool.exe di Egosoft.
Per chiarezza, è giusto sottolineare, che la parola "Cluster", utilizzata in questa guida, non può essere familiare ai giocatori, perché nel gioco, la parola usata è "Sistema". Tuttavia, ai fini di questa guida, io uso "cluster", perché è a questa parola a cui si fa riferimento nei vari file su cui si dovrà lavorare come modder.
Contenuti:
Questa guida illustra vari metodi che possono essere utilizzati per modificare il gioco. Ai fini dell'"imparare facendo", questa guida è scritta in forma di tutorial che comprende vari esempi di aggiunte alla mappa dell'Universo e altre alterazioni.
Prima Parte: Immagini ed Effetti
Esempio 1: Creare un mod estensione
Esempio 2: Cambiare colore ad un materiale
Esempio 3: Creare un cartellone pubblicitario personalizzato
Seconda Parte sezione A: Modifica dell’Universo
Esempio 4: Aggiungere un nuovo cluster
Esempio 5: Aggiungere un nuovo Settore
Esempio 6: Lavorare con le zone
Seconda Parte sezione B: Modifica dell’Universo
Esempio 7: Ipervie e Supervie
Esempio 8: Lavorare con le Regioni
Esempio 9. Creazione dei materiali base per un cluster personalizzato
Esempio 10. Creare le texture del materiale per personalizzare un Pianeta
Terza Parte: Portare l’Universo alla vita
Esempio 11: Lavorare con i Jobs (riguardanti l’IA)
Esempio 12: Lavorare col Mission Director
Conclusione
Appendice
Make-up dell’universo
Content.xml
Software consigliato e materiali di riferimento:
1. Visual Studio Express (gratis) o un altro Editor XML.
2. Un editor d’immagine come Photoshop (CS2 versione gratis) con DDS Plug-in o Gimp (plugin qui).
3. 7-Zip File Manager (o altro) per l'estrazione dei file immagine di base.
4. Egosoft XR Catalog Tool per estrarre i dati dai file di base del gioco.
5. Esempio di mod estensione sviluppato per questa guida (download qui).
6. XML Patch document standard RFC 5261.
7. HHD Free Hex Editor (o equivalente).
8. Guida Ufficiale al Mission Director.
Esempi
Prima Parte: Estensioni, Immagini ed Effetti
Esempio 1: Creare un mod estensione
Prima di fare qualsiasi altra cosa, dobbiamo creare una cartella per i nostri file.
1. C'è una cartella del gioco denominata extensions situata all'interno della directory principale del gioco. Potrebbe essere necessario creare questa cartella se non esiste già.
2. Scaricate il file osr_universe.rar contenente gli esempi di questa guida ed estrarlo nella cartella extensions del gioco. La struttura della vostra directory sarà simile a questa:
Code: Select all
X Rebirth
extensions
osr_universe
assets
index
libraries
maps
md
4. Il mod estensione più semplice è costituito da una singola cartella mod e da un content.xml. Tale mod non sarebbe in realtà in grado di fare nulla, ma verrebbe visualizzato nel menu e potrebbe essere attivato e disattivato lì.
Esempioe 2: Cambiare colore ad un materiale
Qui cambieremo il colore del tubo dell'ipervia dal giallo predefinito al blu.
1. Aprite il file material_library.xml localizzato in extensions\osr_universe\libraries
2. Se avete estratto i file dei dati di gioco (usando XRCatTool.exe), potrete aprire material_library.xml per confrontarlo con quello incluso nel nostro file di esempio.
3. Nel file del gioco base (non il file d'esempio), cercate la stringa "highway_tube" in material_libary.xml. Vedrete la definizione del materiale per il tubo delle ipervie. Sembra qualcosa di simile a questo frammento di codice:
Code: Select all
<material name="highway_tube" shader="shaderfx\high\XU_highway_tube.fx" blendmode="additive" preview="none">
<properties>
.....
<property type="Color" name="color_tint" r="180" g="200" b="120" a="255" value="(color 180 200 120)"></property>
......
</properties>
<variations></variations>
</material>
Tuttavia, dato che non voglio aggiungere o unire una nuova voce, userò il metodo "patch" per modificare la definizione esistente come segue (vedi XML Patch standard RFC 5261 per capire come si fa):
Code: Select all
<diff>
<!-- Changes Tube Color from yellow to blue -->
<replace sel="/materiallibrary/collection[@name='effects']/material[@name='highway_tube']/properties/property[@name='color_tint']">
<property type="Color" name="color_tint" r="120" g="124" b="200" a="255" value="(color 33 13 98)"></property>
</replace>
</diff>
a). Si noti il nodo principale <diff>. Questo indica al gioco che sto applicando qualche "variazione" alle definizioni base esistenti. Utilizzando <replace sel> cerchiamo i valori che stiamo cambiando. In questo caso, stiamo cambiando il color_tint di questo effetto.
b). La nostra patch contiene SOLO le modifiche che stiamo facendo . Essa NON include tutte le altre voci (se così fosse, il gioco si confonderebbe a causa di voci doppie).
Nota: I file di base originali del gioco non devono mai essere modificati. Tutto quello che stiamo facendo è la creazione di versioni modificate che andranno posizionate nella cartella estensioni.
L'immagine seguente mostra come questo cambiamento appare nel gioco:
[ external image ]
Esempio 3: Creare un cartellone pubblicitario personalizzato
Vediamo che cosa è coinvolto nella sostituzione di uno dei cartelloni pubblicitari esistenti.
In primo luogo, è una buona idea estrarre le texture esistenti nel gioco associate agli annunci. In questo modo, possiamo vedere quale immagine abbiamo bisogno di sostituire. Nota: è necessario avere i file del gioco estratti (XRCatTool.exe).
1. Identificare uno dei cartelloni esistenti che si desidera sostituire.
2. Individuare la cartella \assets\fx\textures\ads\ads
3. Estrarre tutti i file .gz in qualche cartella per visualizzarli
4. Utilizzando il prompt dei comandi, passare alla cartella di estrazione
5. Digitare il seguente comando: rename *.* *.dds. Questo darà a tutti i file la loro estensione di immagine dds (questo è quello che sono).
6. Utilizzando il vostro editor di immagini in grado di aprire i file dds, individuate ed aprite l'immagine corrispondente al cartellone di annunci che si desidera sostituire.
7. Create e salvate una nuova immagine .dds delle stesse dimensioni, canali, eccetera di quella che volete rimpiazzare. Nel mio esempio ho chiamto l'immagine: ads_osr_01.dds
8. Rimuovete l'estensione .dds dalla vostra nuova immagine. Nota: Questo non è necessario, ma lo sto facendo per far corrispondere i risultati del programma di estrazione.
9. Usando 7-Zip (o equivalente), create un archivio con estensione .gz contenente la nuova immagine. Nominate questo archivio: ads_osr_01.gz. Questo file si trova in \extensions\osr_reborn\assets\fx\textures\ads
10. Aprite il file di esempio fornito libraries\material_library.xml e vedrete quanto segue:
Code: Select all
<!-- Replace ads-plamacells with Observe Space Research advertisement -->
<replace sel="/materiallibrary/collection[@name='ads']/material[@name='ads_plasmacells']/properties/property[@name='diffuse_map']">
<property type="BitMap" name="diffuse_map" value="extensions\osr_universe\assets\fx\textures\ads\ads_osr_01"></property>
</replace>
Nota: se non volete sostituire tutte le istanze dei tabelloni per le affissioni di serie, si dovrebbe creare una mesh personalizzata del cartellone (o modificare il riferimento materiale in una mesh esistente) e modificare il riferimento della macro per far usare la vostra mesh al posto di quella normale. Questa tecnica verrà utilizzata in un esempio successivo.
Esempio di tabellone personalizzato:
[ external image ]