[TUTORIAL] - Guida al Modding di X Rebirth

Il luogo dove parlare di tutti i plug-in e i mod disponibili per X Rebirth.

Moderator: Moderatori per il Forum Italiano

Post Reply
Black@Hawk
Moderator (Italiano)
Moderator (Italiano)
Posts: 8635
Joined: Sat, 8. Apr 06, 17:41
x3tc

[TUTORIAL] - Guida al Modding di X Rebirth

Post by Black@Hawk »

Guida originale a cura di Observe.



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
3. Aprire il file content.xml contenuto all'interno della cartella osr_universe, con l'editor xml. Qui potrete vedere vari campi di testo tra cui l'autore, la descrizione e poche altre cose relative all'identificazione del mod e che forniscono informazioni visualizzate nel sotto-menu estensioni del gioco.

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>
In questo caso, tutto quello che voglio fare è cambiare la proprietà color_tint di un materiale esistente. Se volessi creare un nuovo materiale, potrei semplice aggiungere una nuova stringa nella mia versione modificata di questo file, e il gioco lo troverebbe aggiunto alla fine delle definizioni nel material_libary.xml.

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>
Questa nuova versione del material_libary.xml differisce da quella standard nel seguente modo:

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>
Qui sto sostituendo la normale definizione per la pubblicità delle celle di plasma con una delle mie, specificando la mia immagine personalizzata.

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 ]
Image
Black@Hawk
Moderator (Italiano)
Moderator (Italiano)
Posts: 8635
Joined: Sat, 8. Apr 06, 17:41
x3tc

Post by Black@Hawk »

Seconda Parte sezione A: Editing dell'Universo

Qui tratteremo l'aggiunta di una nuova sezione alla galassia standard. Avente un'area personalizzata sulla mappa separata dal gioco standard, può essere utile come "sandbox" per i modders per sperimentare nuove idee senza interferire con il resto del gioco.

In questo esempio, ho copiato e modificato parti della mappa esistente (Omicron Lyrae) nei miei file personalizzati. All'inizio, questo può essere più facile (e veloce) che creare tutto da zero.

Nota: Consultare l'Appendice per una descrizione della struttura dell'Universo per comprendere i vari elementi coinvolti.

Esempio 4: Aggiungere un nuovo Cluster

1. Aprite il file galaxy.xml in extensions\osr_universe\maps\XU_ep1_universe

2. Aprite il file del gioco base galaxy.xml per confronto.

3. Notate che stiamo usando il metodo patch come abbiamo fatto in precedenza, con l'unica differenza che stiamo usando <add> invece di <replace>. Questo significa che stiamo aggiungendo un nuovo collegamento alla galassia per il nostro Cluster personalizzato (Cluster_OSR_macro)

Code: Select all

 <?xml version="1.0" encoding="utf-8"?>
<diff>
  <add sel="/macros/macro[@name='XU_EP1_universe_macro']/connections">
    <connection name="Cluster_OSR_connection" ref="clusters">
      <offset>
        <position x="1000000000" y="0" z="-1000000000" />
      </offset>
      <macro ref="Cluster_OSR_macro" connection="galaxy" />
    </connection>
  </add>
  
  <add sel="/macros/macro[@name='XU_EP1_universe_macro']/connections">

    <connection name="ClusterGate04" ref="destination" path="../cluster_A_connection/Cluster_A_Sector02_connection/tzoneCluster_A_Sector02_Zone107_connection/clustergate_connection888">
      <macro connection="destination" path="../../../../../Cluster_OSR_connection/Cluster_OSR_Sector08_connection/tzoneCluster_OSR_Sector08_Zone87_connection/clustergate_connection666" />
    </connection>

  </add>
</diff>
3. Inoltre, abbiamo aggiunto una connessione per un jumpgate tra il nostro nuovo Cluster ed il resto della galassia.

4. Aprite il file extensions\osr_universe\index\macros.xml. Qui potete vedere le definizioni per i nostri file di mappa. Queste sono referenziate da vari altri file.

5. Aprite il file extensions\osr_universe\index\macros.xml. Qui si vede un percorso che definisce dove si possono trovare i vari elementi (modelli) per il nostro Cluster.

6. Aprite il file extensions\osr_universe\maps\XU_ep1_universe\osr_clusters.xml.

Questo definisce Cluster_OSR_macro e stabilisce i riferimenti sulla posizione Settore/Zone che saranno contenuti all'interno di esso. Noterete che qui si può cambiare il nome del Cluster, la musica, ed altri attributi.

Nota: Inizialmente ho basato il mio nuovo cluster sul Cluster C esistente (Omicron Lyrae). Se guardate l'esempio extensions\osr_universe\assets\environments\cluster, vedrete diversi file. Qui è dove, sostanzialmente, ho copiato i file del Cluster C, riducendo, modificando e rinominando secondo il mio mod. Se si esaminano questi file, si noterà come essi differiscano dall'originale.

7. Aprite il file extensions\osr_universe\assets\environments\cluster\cluster_osr.xml. Questo file definisce le mesh del pianeta, le texture, l'illuminazione, le nebulose ed una miriade di altre caratteristiche globali per questo cluster. Ritorneremo su questo file in dettaglio più avanti.

Esempio 5: Aggiungere un nuovo Settore

1. Aprite il file extensions\osr_universe\maps\XU_ep1_universe\osr_sectors.xml. Questo collega il nostro Settore personalizzato (Cluster_OSR_Sector08_macro), a cui si fa riferimento nel file osr_clusters.xml, e definisce la posizione per le varie Zone in esso contenute. È inoltre possibile specificare la musica del Settore, la descrizione ed altri attributi in questo file.

Esempio 6: Lavorare con le Zone

1. Aprite il file extensions\osr_universe\maps\XU_ep1_universe\zones.xml. Qui potete vedere come ho eseguito una <diff> patch al file zones.xml per aggiungere un jump-gate in modo da poter collegare una delle nostre Zone personalizzate con un Settore Xenon.

2. Aprite il file extensions\osr_universe\maps\XU_ep1_universe\osr_zones.xml. Questo file definisce il contenuto delle Zone contenute all'interno del Settore che abbiamo creato. Qui è possibile inserire diversi oggetti come stazioni, navi, gate, detriti ed altri componenti.

Dato che il contenuto di questo file si è basato in gran parte sulle informazioni di Zone del Cluster C, avrete notato che ho aggiunto un nuovo Zona (Pirate Haven) tzoneCluster_OSR_Sector08_Zonepirate_macro. Le coordinate sulla posizione di questa nuova Zona sono state determinate approssimativamente, basandomi su dove volevo trovarla in relazione alle altre Zone.

Layout della Zona personalizzata:
[ external image ]
Image
Black@Hawk
Moderator (Italiano)
Moderator (Italiano)
Posts: 8635
Joined: Sat, 8. Apr 06, 17:41
x3tc

Post by Black@Hawk »

Seconda Parte sezione B: Modifica dell’Universo

Esempio 7: Ipervie e Super Ipervie

Dal momento che il mod di esempio (osr_universe) contiene un solo settore, non ho bisogno di Super Ipervie. Queste possono essere aggiunte al nostro Cluster personalizzato esaminando come questo viene fatto nel file esistente Cluster C di riferimento.

Non ho guardato nel dettaglo la definizione degli attributi sulla posizione delle spline del tubo. Se guardate il file extensions\osr_universe\maps\XU_ep1_universe\osr_zonehighways vedrete che questa è una copia di una sezione del file del Cluster C di base zonehighways.xml.

Si potrebbe copiare qualsiasi definizione esistente per le splinetube nel file zonehighways personalizzato, ed avrete il layout associato alla Ipervia locale. Indipendentemente da come fate derivare le Ipervie delle Zone, probabilmente volete assicurarvi che le posizioni delle Zone corrispondano a dove le Ipervie vanno. Non dubito che tools per la comunità dei modders saranno disponibili per la "costruzione" e progettazione di Ipervie e Super Ipervie.

È inoltre possibile creare un settore contenente Zone, senza inserire Ipervie. Questo può fornire alcune interessanti (e divertenti) opportunità di gioco quando si deve volare intorno al settore senza la comodità delle Ipervie.

Esempio 8: Lavorare con le Regioni

Le Regioni, principalmente (ma non sempre), definiscono le risorse per le Zone. Le risorse possono includere asteroidi, gas, plasma, ghiaccio, ecc per l'estrazione.

Le impostazioni delle Regione sono utilizzati anche per creare zone nebbiose. Queste non necessariamente contengono risorse estraibili.
Ci sono due file associati con le regioni: extensions\osr_universe\maps\XU_ep1_universe\osr_clusters.xml e extensions\osr_universe\libraries\region_definitions.xml.

In osr_clusters.xml potrete vedere che ogni zona ha una "regione ref", che punta a una specifica regione in region_definitions.xml. La distribuzione delle risorse nelle Regioni è cruciale per un'economia funzionante.

Esempio 9. Creare un materiale di base per un Cluster personalizzato

Qui creeremo uno sfondo personalizzato per il nostro nuovo Cluster. I Cluster utilizzano varie mesh con riferimenti a materiali incorporati.

Nel nostro esempio, potremmo semplicemente cambiare la definizione del materiale (in material_library.xml). Il problema è che così facendo, andremo a sostituire lo sfondo utilizzato per Omicron Lyrae (il nostro esempio è vagamente basato su quello).

Utilizzando gli strumenti a nostra disposizione per la modellazione, vi è un "trucco" che possiamo usare per creare una nuova mesh unica per la nostra texture di sfondo personalizzata. Dal momento che i file mesh sono in formato binario, avremo bisogno di un editor esadecimale per apportare le modifiche necessarie.

1. Aprite il file extensions\osr_universe\assets\environments\cluster\cluster_osr.xml. Cercate la stringa "part_bg". Vedrete in questa parte un id del materiale ref=environments.cluster_c_bg2. Il gioco, in realtà, non utilizza il materiale di riferimento specificato qui (per quanto ne so). Invece, il gioco utilizza qualsiasi materiale di riferimento incorporato nel file mesh.


2. Usando il vostro Hex Editor (Io uso HHD Free Hex Editor), aprite il file extensions\osr_universe\assets\environments\cluster\cluster_osr_data\part_bg-lod0.xmf.


3. Nella parte superiore di questo file, vedrete stringa di testo "environments.cluster_c_bg". Questo riferimento entra in material_library.xml.

4. Modificare la stringa di testo "environments.cluster_c_bg2" (senza virgolette). Tutto quello che abbiamo fatto è stato aggiungere il carattere '2' alla fine della stringa esistente.

Nota: Fate attenzione quando si lavora con file binari in questo modo. Voi non volete modificare le dimensioni del file. Questo significa che non si desidera aggiungere o rimuovere i dati. Quando si aggiunge il '2' alla fine della stringa, si sta semplicemente sostituendo un byte zero con l'esadecimale 32 (valore ascii per '2').


5. Salvate il file. Probabilmente dovrete rinominare il file e cambiare il riferimento nella definizione del Cluster (cluster_osr.xml), in modo che non si confonda con l'originale, ma non sto facendo ciò in questo esempio.


6. Aprite extensions\osr_universe\libraries\material_library.xml. Vedrete che abbiamo aggiunto una voce per "cluster_c_bg2", che si riferiscono alla nostra diffuse_map ed alla diffuse2_map con immagini personalizzate (osr_cluster_c_bg_red_diff and osr_cluster_c_bg_green_diff).

Le modifiche di cui sopra forniranno uno sfondo personalizzato unico per il nostro Cluster.

Esempio 10. Creare una texture del materiale personalizzata per un Pianeta

Attualmente, vi sono una varietà limitata di pianeti in uso nel gioco. Qui, creeremo una nuova texture del pianeta per dare al nostro Cluster un aspetto unico. I metodi che utilizzeremo sono simili a quelli che abbiamo usato per cambiare il materiale di fondo.

1. extensions\osr_universe\assets\environments\cluster\cluster_osr.xml. Cercate il testo "part_GeoSphere01". Questa è la mesh del pianeta che stiamo usando nel nostro Cluster.

2. Aprite extensions\osr_universe\assets\environments\cluster\cluster_osr_data\part_geosphere01-lod0.xmf nel vostro Hex Editor. Vedrete che ho cambiato il meteriale di riferimento "environments.cluster_osr_gaslike_planet".

3. Aprite extensions\osr_universe\libraries\material_library.xml. Vedrete che ho una definizione del materiale per "cluster_osr_gaslike_planet" indicando la mia immagine personalizzata diffuse_map.

Esempio di sfondo personalizzato e di pianeta personalizzato:
[ external image ]
Image
Black@Hawk
Moderator (Italiano)
Moderator (Italiano)
Posts: 8635
Joined: Sat, 8. Apr 06, 17:41
x3tc

Post by Black@Hawk »

Terza Parte: Portare l’Universo alla Vita

Esempio 11: Lavorare sulle Offerte di Lavoro (IA spawning)

Senza la 'vita artificiale', il nostro nuovo cluster non avrà molta azione in esso. Questo ha soprattutto a che fare con ciò che è noto come 'Offerte di Lavoro'.

Creare Offerte di Lavoro personalizzate lasciando il gioco bilanciato è un compito arduo! Se avrete troppe Offerte di Lavoro, degraderete le prestazioni del gioco - perché ogni lavoro deve essere eseguito da un proprio script in background. Questo richiede memoria del computer e risorse di CPU (e forse anche della GPU per il rendering se avete troppe navi nella visuale). D'altra parte, se avete troppi pochi lavori, la vostra economia non può funzionare, e la vostra area personalizzata risulterà un po' troppo 'senza vita'.

Ci sono due files che si occupano di specificare quali tipi, e quanti diversi commercianti, nemici, e varie altre navi saranno generate ed opereranno all'interno della nostra area personalizzata.

1. Aprite extensions\osr_universe\libraries\jobs.xml. Qui potete vedere che sto usando il metodo Patch (<diff>) per aggiungere Offerte di Lavoro per la mia zona personalizzata.

Esistono diversi attributi che ogni lavoro può avere. Un singolo lavoro può essere limitato ad operare in una zona specifica, settore, o in qualsiasi parte della galassia. È possibile specificare le navi in diversi modi, tra cui il proprietario, l'ubicazione, lo script, e varie altre caratteristiche.

2. Aprite extensions\osr_universe\libraries\quotas.xml. Questo file determina il tipo di NPC che sarà presente sulle stazioni che operano nel cluster personalizzato. Senza questo file, le stazioni saranno senza NPC.

Esempio 12: Lavorare col Mission Director

Imparare il Mission Director (MD) va oltre lo scopo di questa guida. Ci sono documenti ufficiali disponibili sull'uso del Mission Director e questo tema verrà trattato separatamente. Ci basti sapere che il Mission Director è estremamente flessibile e potente. Esso può essere utilizzato non solo per creare missioni nel gioco, ma anche per modificare una grande varietà di condizioni all'interno dell'universo.

Un mod di esempio creato col MD è contenuto all'interno del file extensions\osr_universe\md\osr_universe.xml. Questo file è un po' un miscuglio di cose che stavo facendo mentre sviluppavo questa guida e gli esempi di accompagnamento dei mod, ma si puo' esaminare per avere alcune idee a riguardo. Ecco alcune delle caratteristiche chiave del codice in questo particolare file MD:

a). Quando il gioco è in modalità "libera" (non durante la campagna), vi ritroverete in una zona del nuovo cluster. Nel codice, si vedrà <event_cue_signalled cue="md.Setup.GameStart" />. Ciò attiva il codice associato appena la partita è iniziata.

b). La nave del giocatore (Skunk) è rifornita con varie armi e munizioni, ed al giocatore vengono dati 51 milioni di crediti.

c). Tutte le zone all'interno del settore personalizzato sono impostate su 'conosciute'. Questo significa che appaiono sulla mappa senza averle visitate.

d). Due stazioni sono generate con <create_station> assieme alle navi per la loro difesa.

e). Diverse Capital di proprietà del giocatore sono generate con <create_ship>. Queste sono assegnate ad un gruppo.

f). Se date il comando alla grande Capital (Arawn) di spostarsi da qualche parte, le altre 2 Capital la accompagneranno come convoglio. Se la destinazione è all'interno del settore, queste navi voleranno lì (senza saltare). Se al di fuori del settore, queste navi salteranno attraverso il gate più vicino. In quanto convoglio, queste navi si difenderanno ed eseguiranno altre azioni. Vedrete varie cose che vengono definite nel codice relative a come questo convoglio funziona.

g). Comandante, Ingegnere e Ufficiale della Difesa NPC vengono creati per ciascuna delle Capital. Inoltre, un commerciante è posizionato nell' hangar dell' Arawn. Inoltre, un ingegnere viene assegnato alla nave del giocatore. Questo ingegnere scenderà dalla Skunk, e sarà presente sulla piattaforma. Quando la Skunk lascia il molo, l'ingegnere viene ritrasferito su di essa.

Vi incoraggio ad imparare almeno alcuni rudimenti per lavorare col Mission Director. Troverete la sua conoscenza molto utile nelle vostre avventure nel moddare Rebirth!
Image
Black@Hawk
Moderator (Italiano)
Moderator (Italiano)
Posts: 8635
Joined: Sat, 8. Apr 06, 17:41
x3tc

Post by Black@Hawk »

Conclusione

Moddare X Rebirth può sembrare a prima vista un compito arduo se non si sa nemmeno da dove cominciare, dove risiedano i vari file moddabili, o come creare un mod di base. Spero che questa guida potrà essere utile come introduzione sui modi in cui questo gioco può essere modificato.

È possibile che alcune delle procedure descritte in questa guida, saranno sostituite da metodi migliori quando ci sarà una maggiore conoscenza del modding di Rebirth, e quando futuri strumenti di modding saranno disponibili.

Per favore fatemi sapere se notate eventuali omissioni gravi e/o descrizioni non corrette all'interno di questa guida che potrebbero portare il lettore fuori strada, o se siete a conoscenza di metodi più semplici di fare le cose.

Buon modding!

Grazie
Image
Black@Hawk
Moderator (Italiano)
Moderator (Italiano)
Posts: 8635
Joined: Sat, 8. Apr 06, 17:41
x3tc

Post by Black@Hawk »

Appendice

Il Modello a Componenti:

Tutti gli oggetti nel gioco fanno parte del Sistema di Modello a Componenti.
Un componente è la componente base di molte altre cose nel gioco, dagli Asteroidi alle Zone; Navi, Stazioni, Torrette, Armamenti, Moduli di Immagazzinamento e Baie di Attracco.

Ci sono molti altri tipi di oggetti nell'universo ed ogni oggetto di grandi dimensioni può contenere diversi tipi di 'Figli' che ne cambiano comportamento e funzioni.
Una stazione per esempio, può avere un oggetto di classe baia, in grado di contenere Navi XL. Essa può anche avere Torrette su tutta la sua superficie, o lanciamissili. Pochi passi si interpongono tra noi e l'aggiunta di oggetti di classe Motore ad una Stazione.

Il sistema di Modello a Componenti è molto potente e ci darà una vasta gamma di possibilità per ogni oggetto.

Struttura dell’Universo:

La struttura degli ambienti che il giocatore esplora è diversa dai precedenti giochi di X.

Clusters

I cluster sono enormi ambienti non-interattivi contenenti Settori. Si tratta di ambientazioni su scala cosmologica, contenenti Soli, Pianeti, Lune ed altri oggetti di grandi dimensioni.
I precedenti giochi di X di solito rappresentano un sistema stellare con un solo settore e lontano dai pianeti. X Rebirth permetterà di viaggiare tra più "Settori" all'interno di un Cluster.

I Cluster contengono Settori collegati tramite Ipervie. Solo all'interno delle Ipervie il giocatore potrà muoverso attraverso il Cluster, con Pianeti e Soli che sfrecciano via.

Settori

I Settori sono grandi aree con dimensioni di diverse centinaia di KM. I Settori hanno scala simile a quelli dei precedenti giochi di X e, di solito, sono collocati in un'area di interesse come un'orbita planetaria o all'interno di una fascia di asteroidi.
I Settori contengono diverse piccole aree di spazio chiamate 'Zone'. Diversamente dai precedenti giochi di X, è importante notare che gli oggetti non sono più posizionati su coordinate dei Settori. Invece, le coordinate sono basate sulle Zone (vedi sotto).

Il giocatore può volare dalla fine di un Settore ad un altro senza soluzione di continuità, passando attraverso le Zone. Per ridurre i tempi di viaggio, esistono delle Ipervie che collegano i punti di interesse di diverse Zone.

Zone

Le Zone sono aree di interesse all'interno di Settori. Le Zone sono le coordinate spaziali in cui molti oggetti sono collocati, rendendole funzionalmente paragonabili ai vecchi settori dei precedenti giochi di X. La differenza principale è la dimensione. Le Zone hanno solitamente una grandezza di circa 50km cubi.

Non tutto il settore rientra in una Zona predefinita comunque. In 'spazio aperto', il giocatore avrà una Zona temporanea intorno a se. Una zona normalmente conterrà una serie di stazioni, Ipervie di entrata/uscita e navi.

Ipervie

Le Ipervie sono un mezzo per viaggiare a grandi distanze in un breve lasso di tempo, sostituendo il SETA. Ce ne sono due tipi: Ipervie Normali e Super Ipervie.
Le Ipervie Normali permettono di spostarsi in una Zona differente, muovendosi attraverso un Settore. Il giocatore può anche volare manualmente tra le Zone.
Le Super Ipervie permettono di spostarsi in un differente Settore, attraverso un Cluster.

Mentre le Ipervie Normali non si 'avvolgono' su se stesse, esse possono prendere un percorso molto lungo attraverso un Settore, rendendo gran parte di esso disponibile in un breve lasso di tempo.

Le Ipervie possono essere prese o lasciate in qualsiasi momento, con un rallentamento in prossimità di aree di interesse per agevolare le navi in partenza.

All'interno delle Ipervie, ci sono diverse corsie per permettere alle navi di viaggiare. Il giocatore può accelerare i propri viaggi nelle Ipervie mettendosi in 'scia' alle navi di passaggio adeguandosi alla loro velocità.

Regioni

Una Regione è un'area speciale che può essere definita per un Cluster. Una regione comprende, in generale, oggetti dinamici speciali come Campi di Asteroidi, Nebulose, Nebbie e Agglomerati di Rottami. Una Regione è in grado di visualizzare oggetti 'falsi' ed ambientazioni, che rendono più reale l'area dei giocatori.
Un sistema analogo in X3 erano i mini asteroidi che diventavano interattivi avvicinandosi loro.

Note Varie:

content.xml

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<content id="GZ_Run" name="Run" date="" version="102" save="false" enabled="true">
  <text language="44" name="Run" description="Run fasta. In stations." author="Gazz" />
  <text language="49" name="Lauf!" description="Erhoeht die Geh...schwindigkeit in Stationen." author="Gazz" />
</content>
  • Il numero di versione (version = "1.0") è un numero intero e diviso per 100.
    Un valore di 102 sarà visualizzato come 1.02.
  • L'ID deve essere univoco, ma non deve essere un numero.
    Basta aggiungere un tag per il tuo nome e non vi è praticamente alcuna possibilità di conflitto con il lavoro di un altro modder - sempre.
  • Il salvataggio = parametro "falso" (o salvataggio="0") impedisce al mod di "registrare" nel salvataggio del gioco.
    Dovrebbe essere usato quando il mod cambia solo le impostazioni grafiche o i settaggi di gioco, che non hanno alcun effetto duraturo sul gioco stesso. (come la velocità di movimento del giocatore nelle stazioni ...)

    Con salvataggio="falso" l'utente può disattivare il mod (o eliminare l'intera cartella!) ed il salvataggio del gioco non sarà invalidato.
  • Il nodo <content> ha un parametro abilitato che se impostato su "falso" rende il mod disattivato per impostazione predefinita.

    Un possibile impiego per questo:
    Fornire più versioni del mod, come "niente cabina di guida" più "un po 'della cabina di guida".
    Sono tutti disabilitati di default e solo l'utente attiva quello che vuole.
Image
Post Reply

Return to “Script e Modding per X Rebirth”