Rvtmod - Rvglue

Raccolta di Tutorials & manuali relativi al Re-Volt originale, a periodi passati e archiviati per valore storico

Moderatori: Michelangelo, Vas0sky

Rispondi
Avatar utente
AngelS93
Utente
Messaggi: 1951
Iscritto il: lun 5 ott 2015, 20:47
Località: Modugno (BA)

Rvtmod - Rvglue

Messaggio da AngelS93 » ven 4 set 2020, 13:57

RVGLUE

Autore originale: Gabor Varga
Link originale: N/A
Tradotto da: TheFactor82

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:

Codice: Seleziona tutto

create USER_abcdefgh 
Ora vogliamo che il programma legga come file sorgente quello che è stato creato dal Trackeditor (ma che abbiamo rinominato prima):

Codice: Seleziona tutto

create USER_abcdefgh

editor.w 
Quando vogliamo effettuare delle operazioni, dobbiamo inserirle all'interno delle parentesi subito dopo il nome del file sorgente.

Codice: Seleziona tutto

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":

Codice: Seleziona tutto

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:

Codice: Seleziona tutto

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:

Codice: Seleziona tutto

rvglue command.txt 
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ì:


776


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:

777


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ì:

Codice: Seleziona tutto

# 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):

Codice: Seleziona tutto

# 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)
  )
)
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:

Codice: Seleziona tutto

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:

Codice: Seleziona tutto

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:

Codice: Seleziona tutto

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
Classe '93, in cerca di un posto nel mondo vagando con Humma per il Toytanic.


1078 "Spectare o non spectare? Questo è il dilemma"
autore immagine: WheelSmith18

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti