PREY   Level editing Tutorials

Livello:   Base| intermedio | Avanzato




Gravity Volumes

0. Introduzione
1. Configurare un gravity volume

    1.1 Il Volume
    1.2 Cambiare lo status di un volume
    1.3 Shoot switches
2. Radial gravity
3. Outward gravity
4. Considerazioni sulle performances
    Appendice













Human Head & 3D Realms
      P r e y   W i k i

     

All credis to Human Head & 3D Realms PREY Wiki
Traduzione di Vision83





































































































































































































































































































































































































































































DOWNLOAD Files [ S O O N ]















 

Gravity Volumes    
Come costruire Volumi a gravità variabile    
   
      0. Introduzione
[Questo tutorial è la traduzione in lingua italiana fatta da Vision83 del Gravity Volumes in lingua inglese che puoi trovare alla PREY Wiki, ottima risorsa per Level designers e Modders non solo per PREY ma anche per molti altri giochi (v. la nostra area Tutorials), ai cui autori va tutta la nostra riconoscenza e soprattutto i credits per i contenuti messi a disposizione della comunità (per controllare eventuali aggiornamenti v. la pagina Related changes della Wiki).]
 
       
     1. Configurare un semplice gravity volume
[N.d.T] Se avete giocato Prey anche solo per 5 minuti, vi sarete accorti subito del fattore Gravità Alterata che caratterizza questo gioco. Creare situazioni simili nell’editor sembra un lavoro complicatissimo, ma come vedremo tra poco, è invece decisamente semplice.]


1.1 Il Volume  Create un Brush che definisca l’estensione del vostro volume:

- tasto destro sul brush appena creato e selezionate volume_gravity dal menù a popup, come mostrato nella figura a destra (Scaricate la mappa grav1.map per i vostri test.)*




(*) Al momento della traduzione di questo tutorial i links alle Test Maps non erano attivi, per cui non è stato possibile linkarli per il download. In sostituzione stiamo preparando noi stessi dei files analoghi, che potrai scaricare in fondo al tutorial, caricare nell'editor e compilarli per osservare da vicino come sono stati costruiti i diversi tipi di Gravity volumes - N.d.Admin]
Selezionate l'entità volume_gravity appena creata ed immettete un valore per gravity in modo da definire la direzione del campo gravitazionale all’interno del volume. Questa è una chiave vettoriale e definirà la forza di gravità all’interno delle coordinate X, Y e Z. La gravità standard del gioco è 0, 0, -1066. Come potete osservare, alla voce “Z” è stato assegnato un valore negativo, ad indicare che in quel punto la forza deve “attirare”, mentre assegnando un valore positivo, la forza di gravità andrà a “respingere”.


Fig.2: gravity_volume standard con gravità invertita
1.2 Cambiare lo status di un gravity volume   Lo status di un gravity volume può essere alterato in due modi. Gli attributi target_enable e target_disable possono essere utilizzati per attivare o disattivare gli effetti di un volume. Controlli più puntuali sono disponibili all’interno degli script del livello.

Nell’esempio proposto, utilizzeremo un console_projection_eye per poter di alterare l'orientamento della gravità all'interno del volume, ma qualunque altro sistema di interruttori standard otterrà lo steso risultato (Scaricate il file grav2.map per i vostri test). [v. sopra (N.d.Admin)]


Fig.3: usate la console per abilitare/disabilitare un gravity volume


Nota: esiste una chiave non documentata disponibile per il gravity_volume. La chiave “enabled” può infatti essere settata su “0” per evitare che il volume sia attivo al caricamento della mappa. Controlli avanzati sono disponibili nel campo di chiamata dello di script:

$entityname.setGravity( vector );





1.3 Shoot switches   Usare gli Shoot Switches [gli interruttori a cui sparare per modificare la gravità N.d.T], gestiti dall'entità trigger_gravityswitch, è davvero semplice.

Posizionate un trigger_gravityswitch con un orientamento che rifletta la direzione della gravità che vorrete una volta attivato. Ponete come target il vostro gravity_volume, e dei dettagli se ne occuperà l’editor. Nella mappa d’esempio grav3.map [v. sopra - N.d.Admin] quattro switch sono posizionate in 4 lati del gravity_volume. Tutto ciò che il mapper deve fare è assicurarsi che tutti gli switch abbiano come target il gravity_volume.


Fig.4: Shoot switches con un gravity volume come target


C’è anche la possibilità di modificare manualmente questo comportamento, assegnando una chiave vector allo switch.
     
 
       
     2. Radial gravity [Gravità radiale]
Per i planetoidi useremo una entità diversa, chiamata volume_gravityinward. L’illustrazione sotto (presa dal file grav4.map) mostra un planetoide semplice, che usa un volume_gravityinward con i settaggi di default. Non occorre nessuna chiave ulteriore, a parte quelle già viste precedentemente, ma è possibile regolare nel dettaglio il comportamento dell'entità servendosi delle chiavi descritte nell'appendice in fondo al tutorial.


Fig.5: Vista laterale di un semplice radial gravity volume che permette al giocatore di camminare attorno ad una sfera (pianeta)

     
 
       
     3. Outward gravity
Anche se nel gioco questo tipo di gravità non viene mai utilizzata, è possibile usare un valore negativo in un radial gravity volume. Nella mappa d’esempio grav5.map [v. sopra], le chiavi della figura a destra sono utilizzate per consentire al giocatore di camminare all’interno di uno spazio sferico concavo.

Fig.6:   usando un fattore negativo [qui -0.5], il giocatore può camminare all'interno di una sfera

Fig.6: Veduta dall'alto di un outward gravity volume
     
 
       
     4. Considerazioni sulle performances
Quando si creano vaste aree con gravità modificata, è bene tenere a mente un paio di cose.

Ogni gravity_volume in più posizionato su un livello aggiunge calcoli che vanno a gravare sul sistema. Evitate dunque di usare troppi gravity volumes piccoli e, se possibile, coprite vaste aree con un singolo gravity_volume.

La chiave isSimpleBox è una chiave importante. Di default è attivata perché un gravity_volume dalla forma complessa aggiunge pesanti calcoli al sistema quando questo deve elaborare i comportamenti richiesti. Con ogni probabilità avrete bisogno di disattivare questa chiave in qualche occasione, ma cercate per quanto possibile di utilizzare box semplici al fine di alleggerire la vostra mappa.

Non sottovalutate l’utilizzo di fumo e di specchi. [Il carico computazionale che questi effetti hanno sul sistema è elevatissimo, e se combinato con l’alterazione di gravità è ancora più massiccio - N.d.T.].

L’uso intelligente di passerelle magnetiche a muro e portali può dare l’impressione di essere in aree a gravità alterata. È decisamente più economico (in termini di risorse) invertire la geometria del livello conservando la gravità standard piuttosto che usare un gravity_volume.

L’AI delle creature risponde meglio in aree a gravità standard, quindi pensate a soluzioni semplici in caso di combattimenti in aree a gravità alterata.
     
 
       
     Appendice
volume_gravity
Variabili all’interno di zone gravitazionali. Cambiano la gravità di tutti gli oggetti fisici a cui vengono assegnate.

gravity vector Nuovo vettore di gravità (x y z). Default (0 0 -1066)
interpTime float Tempo (in secondi) per interpolare i cambiamenti gravitazionali. Default (1.0)
reorient boolean Reorienta il giocatore nella direzione della gravità. Default (1)
showVector boolean Disegna le linee di debug nel gioco. Default (0)
killmonsters boolean Uccide i mostri che sono affetti da una determinate gravità. Default (1)
zeroGravOnChange boolean
isSimpleBox boolean Simple boxes sono più economici in termini di prestazioni. Default (1)
snd_gravity_loop string Effetto sonoro quando la gravità è non-standard.


trigger_gravityswitch
Puntano all’entità volume_gravity. Usate “angle” per specificare la direzone della gravità.

strength float Fattore Gravità. Default (1.0)
vector vector Fattore Gravità Forzato. Sovrascrive “strenght” ed “angle”.
Enabled boolean Inizialmente abilitato. Default (1)


volume_gravityinward
Variabili all’interno di zone gravitazionali. Attira gravitazionalmente tutti gli oggetti fisici che entrano in un dato gravity_volume verso il suo punto di origine. Per fare in modo che la forza respinga, usate un valore negativo.

factor float Magnitudo percentuale della gravità normale. Default (0.5)
interpTime float Tempo (in secondi) per interpolare i cambiamenti gravitazionali. Default (1.0)
override_origin vector Assegna l'origine a un modello diverso da quello di default, sovrascrivendolo.
monster_trace_gravity boolean I mostri cercano la gravità normale invece di utilizzare il vettore interno. Default (0)
reorient boolean Reorienta il giocatore nella direzione della gravità. Default (1)
showVector boolean Disegna le linee di debug nel gioco. Default (0)
killmonsters boolean Uccide I mostri che sono affetti da una determinate gravità. Default (1)
isSimpleBox boolean Simple boxes sono più economici in termini di prestazioni. Default (1)


volume_gravitysink
Variabili all’interno di zone gravitazionali inverse. Attira gravitazionalmente tutti gli oggetti fisici che entrano in un dato gravity_volume verso il suo punto di origine, con una forza pari all’inverso del quadrato della distanza.

factor float Gravity factor. Default (60000)
interpTime float Tempo (in secondi) per interpolare i cambiamenti gravitazionali. Default (1.0)
showVector boolean Disegna le linee di debug nel gioco. Default (0)
killmonsters boolean Uccide I mostri che sono affetti da una determinate gravità. Default (1)
isSimpleBox boolean Simple boxes sono più economici in termini di prestazioni. Default (1)
 
     
Ok questo è quanto. Se qualcosa non ti è chiaro, non esitare a postare le tue domande nel nostro Forum.





[PREY] Gravity Volumes (Wiki Tutorial)
Tradotto da Vision83 for HG&LD
- 30 Novembre 2006 -