RVGLUE
Siccome immagino che tu abbia
appena scaricato il file con il pacchetto e muoia dalla voglia di testare le
funzionalità di questo programma, non perderò tempo e partirò con un esempio
pratico su come utilizzarlo.
Immaginiamo di voler modificare la pista che avete appena creato con il Track
Editor, chiamata USER_abcdefgh, trasformandola in una pista con terreno fangoso
e con delle texture sui muri del tracciato al posto di quelli standard blu.
1. Installare il programma
Per far funzionare correttamente il programma ti consigliamo di copiare
il file cygwin1.dll nella cartella WindowsSystem, e il file Rvglue.exe nella
cartella WindowsCommand.
2. Rinominare il file
della pista
Apri la cartella della tua pista (quella che qui per questo esempio
verrà chiamata USER_abcdefgh). Ora è necessario rinominare il corpo del
tracciato per avere un unico file sorgente da utilizzare con rvglue. Rinomina il
file USER_abcdefgh.w in editor.w
3. Scrivere una linea di
comando per Rvglue
Ora è necessario scrivere un file con l'elenco dei comandi che vogliamo
Rvglue esegua per noi. Apri il Blocco Note di Windows.
Dobbiamo far creare al programma un nuovo corpo della pista, che vada a
sostituire l'originale. Quindi dobbiamo dire al programma di generare due nuovi
file: USER_abcdefgh.w e USER_abcdefgh.ncp. Scrivi questo nella finestra del
Blocco Note:
Ora vogliamo che il programma legga come file sorgente quello
che è stato creato dal Trackeditor (ma che abbiamo rinominato prima):
create USER_abcdefgh
editor.w
Quando vogliamo effettuare delle operazioni, dobbiamo
inserirle all'interno delle parentesi subito dopo il nome del file sorgente.
create USER_abcdefgh
editor.w( )
Ora possiamo cominciare ad aggiungere dei parametri di
modifica. Per far sì che la pista diventi fangosa, utilizziamo l'opzione
"surface":
create USER_abcdefgh
editor.w( surface mud )
Invece colorare i muri del tracciato con una texture è
un po' più complicato. Dobbiamo usare l'opzione "wall_single" o "wall_double" a
seconda di come abbiamo esportato la pista. Ipotizziamo questa volta che la
pista sia normale e non double-size. Decidiamo che la texture per i muri
sfrutterà una parte del foglio J, partendo dall'angolo in alto a sinistra (0,0)
e che misurerà 128x128 pixel:
create USER_abcdefgh
editor.w(
surface mud
wall_single j:0,0:128x128
Ora la linea di comando è completa. Salva il file nella
cartella della pista, chiamandolo "command.txt".
4. Scrivere il file batch
Ora dobbiamo creare un nuovo file che faccia partire Rvglue
con le operazioni che abbiamo creato prima. Crea un nuovo file con il Blocco
Note. Questo file conterrà una sola linea che farà partire Rvglue e gli passerà
le informazioni sulle operazioni da eseguire:
Salva anche questo file nella cartella della pista, con il
nome "runglue.bat". Attento, il suffisso .bat è importante!
5. Eseguire Rvglue
Il programma ora è pronto per essere eseguito. Clicca 2 volte
sul file "runglue.bat". Se ci dovessero essere dei messaggi di errore, controlla
tutti i passaggi precedenti. Dopo aver eseguito il programma dovresti vedere i
nuovi files "USER_abcdefgh.w" e "USER_abcdefgh.ncp" nella cartella della pista.
Rvglue può essere eseguito anche senza bisogno di passare dal
file batch. In questo caso bisogna passare manualmente al programma il file di
comando ed eventuali opzioni:
|
OPZIONI RVGLUE
|
|
Opzioni |
Descrizione |
-o=filename, -output=filename |
Bypassa la sezione Create del File di Comando e scrive su altri files.w e .ncp |
-v, -verbose |
Crea più output per indicare cosa sta facendo il programma |
-d, -debug |
Crea ancora più output, più dettagli sui calcoli interni del programma |
-q, -quiet |
Disattiva qualsiasi output a parte i messaggi di errore |
-n, -nohelp |
Disattiva la descrizione degli errori che segue un messaggio di errore |
-h, -help |
Mostra una lista delle opzioni della linea di comando |
-XD |
Debug avanzato. Deve essere seguito da uno o più caratteri per specificare su cosa eseguire il debug. Usa -XD+ per visualizzare tutti i messaggi del debug |
|
Torniamo ora all'uso di Rvglue e vediamo qualche operazione un po' più
complessa.
All'interno della cartella toy2-glue4-example (contenuta nel pacchetto che hai
scaricato) troverai una pista di prova che dovresti visionare prima di
continuare a leggere questo tutorial. All'interno di questa cartella ne troverai
altre due:
|
TOY2-GLUE4-EXAMPLE
|
|
Cartella |
Descrizione |
toy2-glue4-exampletoy2 |
Questa è la pista completa che va
a sostituire Toy World 2, comprensiva di file di comando e di tutto ciò
che serve per ricostruirla da zero. |
toy2-glue4-exampletdf |
Contiene i due progetti
separati basati su file.tdf. Puoi copiare questi due file nella cartella
editortdf di Re-Volt e visionarli con il Track Editor. |
|
Per installare questa pista dimostrativa, assicurati di fare
un backup della cartella Toy2 presente nella cartella Levels di Re-Volt. Per
comodità ti consigliamo di rinominare semplicemente la cartella toy2 in toy2old,
e poi successivamente di copiare la cartella toy2 che trovi nel pacchetto
dell'RVTMOD7 all'interno della cartella levels di Re-Volt.
Vediamo ora come è stata creata la pista. Come si può vedere
ha corpo "principale", creato con il Track Editor. Si chiama Editor1, ed è così:
Di questo tracciato utilizzeremo tutto (la maggior parte dei
file che vedi nella cartella Toy2 è ciò che il Track Editor ha creato esportando
questo tracciato. Il corpo della pista è stato rinominato "editor1.w" e quindi
d'ora in poi parleremo di questa pista col nome Editor1. Avrai senz'altro notato
che la pista è stata esportata in double size. Se dovessi riesportarla in
dimensioni normali, tutto quanto non funzionerà correttamente perchè tutte le
modifiche sono state fatte sulla versione ingrandita.
I muri e il pavimento di questa pista sono stati colorati con texture
semplicemente usando le opzioni "wall_double" e "texturefloor". Osserva il file
di comando per vedere come sono state impostate.
Il prossimo passo è l'applicazione di alcune opzioni a piccole
parti del circuito. Questa operazione viene fatta attraverso l'opzione "tazsplit".
Bisogna impostare delle Track Zone speciali per specificare queste piccole
sezioni da modificare. Il File si chiama "forfirst.taz".
- Zone 0 identifica la superficie del tracciato nella
sezione della cunetta/dosso. Tutto in questa sezione luccicherà, e questo si
ottiene con l'opzione "envmap".
- Zone 1 identifica l'incrocio, e viene usata per renderlo
trasparente.
- In modo simile, la Zone 2 viene usata per rendere
scivolosa la discesa a sinistra dell'incrocio.
- Zone 3 copre il soffitto della tubatura. Volevamo
mettere altre cose qui, ma ballavano, così abbiamo tagliato via questa parte
con l'opzione "off".
- Zone 4 copre i muri che stanno sotto la superficie del
tracciato. Questi muri sono la ragione per cui ogni tanto incontri degli
ostacoli invisibili. Per poterli evitare devono essere tagliati via anche
loro.
Ci sono alcune parti aggiuntive che non sono ancora state
create. Usando come base la pista Editor1, abbiamo apportato alcune modifiche e
l'abbiamo esportata come Editor2. La pista è un piccolo ovale e tutto il resto
dei pezzi utilizzati non è guidabile. Quello che è interessante è evidenziato in
questa immagine:
Per questa parte abbiamo creato un altro file per le Track
Zone chiamato "forsecond.taz". Contiene numerose Track Zone identificate come 0
e 1 per capire quali zone della pista tenere e quali cancellare (Il risultato si
ottiene con l'uso del gruppo "default" dell'opzione "tazsplit", che opera su
tutto ciò che si trova fuori dalle Zone, usando una opzione "empty" per
escludere le Zone 0 e un un appropriato gruppo Zone-1 per lavorare sulle parti
in con due lati).
Il file di comando (incluso come "Command.txt") risulta così:
# create the body for track "toy2":
create toy2
# include the lego track "editor.w". It defines
# most of the resulting track
editor.w(
# split it up. forfirst.taz contains some zones for it. We use
# them to apply specific options to parts of the track
tazsplit ( forfirst.taz
# track zone 0 is the hump-dip-section, which gets some env
# mapping:
0 ( envmap 255 255 0 )
# track zone 1 is the crossroad. It becomes transparent
1 ( transparency 128 )
# zone 2 is the downwards piece at the crossroads. It becomes
# very slippery
2 ( surface 10 )
# zone 3 is the ceiling of the pipe corner. We cut it out, as we
# want to replace it with a corner piece:
3 ( off )
# zone 4 exists multiple times. It indicates where hidden blue walls
# are. We turn them off to get rid of the annoying "invisible obstacle"
# issue
4 ( off )
)
# the lego walls get textured
wall_double ( i:0,0:64x64 )
# the lego floor gets textured, too
texturefloor ( i:64,0:64x64 )
)
# We add a second lego track body. This time, most of the track
# is useless, we are only interested in some special parts of it
editor2nd.w (
# split it up by track zones contained in forsecond.taz:
tazsplit ( forsecond.taz
# cut out everything except for things contained in track zones:
default(off)
# do nothing with things in zone 0. "Do nothing" includes
# "do not apply the default", which leads to preserving zone 0
# only
0 ()
1 (doublesided)
)
)
E questo è tutto. Esegui Rvglue con questo file di comando, e
la pista è pronta.
Immaginiamo però di essere troppo pigri per creare le Track Zone per le barriere
invisibili (Zone 4). Per gestire in fretta questi ostacoli, possiamo usare anche
l'opzione "lower_coll". Il nuovo file di comando (incluso come "Command1.txt")
sarà così (e ottiene gli stessi effetti di quello precedente, ma con un'altra
sintassi):
# create the body for track "toy2":
create toy2
# include the lego track "editor.w". It defines
# most of the resulting track
editor.w(
# we are lazy to wrap invisible barriers with tazsplit; just lower
# their collision (push back under the track floor).
legosplit (
# lower collision data of blue lego walls
pwall ( lower_coll )
)
# split it up. forfirst.taz contains some zones for it. We use
# them to apply specific options to parts of the track
tazsplit ( forfirst.taz
# track zone 0 is the hump-dip-section, which gets some env
# mapping:
0 ( envmap 255 255 0 )
# track zone 1 is the crossroad. It becomes transparent
1 ( transparency 128 )
# zone 2 is the downwards piece at the crossroads. It becomes
# very slippery
2 ( surface 10 )
# zone 3 is the ceiling of the pipe corner. We cut it out, as we
# want to replace it with a corner piece:
3 ( off )
# zone 4 is unused now - we shouldn't have made it at all
)
# the lego walls get textured
wall_double ( i:0,0:64x64 )
# the lego floor gets textured, too
texturefloor ( i:64,0:64x64 )
)
# We add a second lego track body. This time, most of the track
# is useless, we are only interested in some special parts of it
editor2nd.w (
# split it up by track zones contained in forsecond.taz:
tazsplit ( forsecond.taz
# cut out everything except for things contained in track zones:
default(off)
# do nothing with things in zone 0. "Do nothing" includes
# "do not apply the default", which leads to preserving zone 0
# only
0 ()
1 (doublesided)
)
)
Rvglue è anche in grado di creare Instances con qualsiasi cosa
tu gli voglia dare da processare. E' sufficiente specificare il suffisso .prm
nell'operazione di creazione:
create instance.prm
stuff.fin (
...
)
E' anche possibile per esempio creare un'unica Instance
dell'intero corpo del tracciato (anche se non è molto utile). Giusto per dare
due idee su come si possono creare delle Instances:
A. Unire diverse Instances in una più grande
Quando hai un oggetto costruito di molte Instances, e devi spostarlo,
vai in difficoltà perchè devi muovere ogni singola Instance, una per volta, nel
posto nuovo. Ti conviene quindi raggruppare tutte queste Instances in una unica.
Per fare questo ti basta creare la tua Instance "complicata" in un posto
qualsiasi all'interno di un file.fin. E poi puoi utilizzare questo comando:
create instance.prm
myfin.fin (
# apply any options you like to
)
B. Estrapolare Instances dal corpo di una pista
Questa operazione può essere effettuata con facilità
utilizzando l'opzione "tazsplit". Nella pista dalla quale vuoi estrarre l'Instance
che ti serve devi creare un'unica Track Zone con ID 0 che contenga la parte di
pista che vuoi estrapolare. Successivamente usa questo comando:
create instance.prm
track.w (
# split the track by track zones:
tazsplit (
# use the track zone file mytazfile.taz:
mytazfile.taz
# everything that is in no special track zone gets deleted:
default ( off )
# everything that is inside zone 0 gets preserved:
0 ( )
)
)
Il manuale di Rvglue termina qui. Puoi tuttavia approfondire alcuni aspetti visionando anche le altre pagine del manuale.
Problematiche varie
Essendo un programma molto vecchio, applicato ad un gioco molto vecchio, esistono delle limitazioni che non sempre possono essere superate.
|
PROBLEMATICHE
|
|
Gruppo |
Descrizione |
Limiti interni del programma |
La pista che stai modificando non deve consistere di più di 10000 Meshes (Gruppi di poligoni: una pista molto complessa esportata col Track Editor conta circa 4000 meshes, un'Instace vale sempre 1). Se superi questo limite puoi aumentare il valore della variabile "MAX_MESHES" nel file libworld.cpp |
Un Gruppo di Opzioni non deve consistere di più di 200 inserimenti di Instances. Se superi questo limite puoi aumentare il valore della variabile "MAX_FOPTS" nel file appoptkeep.h |
Nessuna parola all'interno del File di Comando può essere più lunga di 50 caratteri. Se superi questo limite puoi aumentare il valore della variabile "MAX_TOK_LENGTH" nel file appparser.h |
Bugs generici |
La sezione "Global" nel File di Comando funziona solo sui file di input che vengono nominati DOPO di essa |
Qualche volta il programma crea troppe linee di output che non si riescono a leggere nella finestra. Puoi usare un separatore di pagina sulla riga di comando per risolvere il problema (Esempio: "rvglue command.txt | more") |
Limiti di Re-Volt |
Il numero totale di poligoni solidi all'interno della pista è circa 16000. Raggiungere questo limite è estremamente facile e se il gioco crasha, prova a ridurre il numero dei poligoni. |
Il numero massimo di Track Zone utilizzabili è 255, il numero massimo di Visibox è 63 |
|
|
|
|
|