DOOM3 Level editing Tutorials

Livello:   Base | intermedio | Avanzato




Ascensori

0. Introduzione
1. Il modello di ascensore

2. Le porte interne
3. Le Porte esterne
4. Guis
5. File .map











Nb. Il procedimento per costruire ascensori e piattaforme mobili in Quake 4 e PREY è sostanzialmente lo stesso, ma cambiano entità e parametri, per cui dedicheremo tutorials specifici a questi due videogames. Qui trovi comunque le basi per procedere, valide per tutti e tre i giochi
















































































































































































































































































































































































































































  References

- Lifts and Elevators videotut by foyleman @ MODSonline

- Tutorial on Elevators and lifts no scripting by RedWolf @ Doom3world




 

Ascensore a due fermate    
Come costruire un ascensore a due fermate    
con porte interne ed esterne  by CARNUFEX    
      0. Introduzione
In questo tutorial di livello intermedio ti mostrerò come costruire un ascensore a due fermate per Doom 3, completo di porte interne ed esterne, gui per la chiamata e suoni. Per aggiungere un'altra fermmata e dunque un terzo piano bisogna mettere mano allo scripting, per cui lo lasciamo per un altro tutorial di livello avanzato.

Ok carica la tua mappa o costruisci due stanze sovrapposte e sotto col lavoro :)

 
     1. Il modello di ascensore
Per prima cosa carichiamo il modello, in modo da avere un punto di riferimento preciso per le dimensioni del condotto che dovrà ospitare l'ascensore:

- click sulla griglia 2D e scegli func_elevator;
- va su Entity, clicca sul pulsante Model e sulla finestra che si è aperta naviga seguendo il seguente percorso:

      models/mapobjects/elevators/elevator.lwo

- Seleziona elevator.lwo e dà l'OK.



Ora dalla stessa finestra Entity assegnamo tutte le proprietà al nostro func_elevator, a incominciare dal nome (che è puramente convenzionale: puoi chiamarlo come ti pare; per brevità, io l'ho chiamato lift) e le proprietà dinamiche ovvero relative al movimento dell'ascensore [a]; poi quelle relative all'assemblaggio, che predisporranno l'ascensore a funzionare assieme alle porte [b]; poi ancora quelle relative al posizionamento sui due piani [c], e infine carichiamo i giu(s) interni all'ascensore e attraverso i gui_parms ci scriviamo le scritte che compariranno sul gui interattivo dell'ascensore [d]. Digita i seguenti key/vals:


1.1 Nome e proprietà dinamiche

    - name: lift                  [come detto sopra, il nome è convenzionale]
    - move_time: 6             [tempo di percorrenza]
    - accel_time: 1             [tempo di accelerazione]
    - decel_time: 1             [tempo di decelerazione]


1.2 proprietà di assemblagio

    - innerdor: func_door_1   [nome della porta interna]
    - floorDoor_1: piano1       [nome della porta esterna del 1° piano o pian terreno]
    - floorDoor_2: piano2       [nome della porta esterna del 2° piano]

NB. 'piano1' e 'piano2' sono anch'esse denominazioni convenzionali: puoi chiamarle come ti pare a condizione che una delle due anti che compongono le porte esterne rispettivamente del 1° e 2° piano abbiano lo stesso nome assegnato nelle loro proprietà.


1.3 Posizionamento dell'ascensore

    - floorpos_1: (posizione al 1° piano - assi X Y Z) *
    - floorpos_2: (posizione al 2° piano - assi X Y Z) *
* Per ricavare le coordinate precise dell'ascensore nello spazio del worldspan piazzalo al punto di partenza (pian terreno) e nella finestra YZ Side posiziona il cursore sul punto rosso dell'entità: nella finestra sotto puoi leggere la posizione sui due assi Y e Z.
  Passa alla veduta XY Top per ricavare il valore sull'asse X. Infine sposta l'ascensore sopra e ripeti l'operazione per ricavare la sua posizione nel piano superiore.


1.4 GUI(s) dell'ascensore

 - gui: guis/doors/elevator2floor.gui   [Gui primario, interattivo]
 - gui2: guis/doors/elevatortop.gui    [Gui secondario, passivo]
 - gui_parm3: Livello 2                    [o quel che ti pare: scritta che comparirà a video]
 - gui_parm4: Livello 2                    [idem sopra]


E con questo abbiamo finito di assegnare le proprietà al nostro ascensore. Ecco uno screenshot che riassume tutti gli attributi del func_elevator:



il passo sucessivo è caricare le porte interne.
 
     
     2. Le porte interne
Carica un func_door e, come prima, dalla finestra Entity premi su Model e carica la porta relativa al modello di ascensore che stiamo usando:

     models/mapobjects/elevators/elevator_door.lwo

Mettila in posizione e sempre dalla finestra Entity inserisci i Key/Vals cone nella figura sotto:



- name : func_door_1 (assegnato di default se è la prima porta nel livello: in ogni caso, controlla che corrisponda all'attributo per innerdoor nelle proprietà dell'ascensore);

- movedir : X (direzione del movimento della porta, relativa alla posizione dell'ascensore nel livello: nel mio caso 180°);

- team : [nome del func_elevator]1 (questo attributo ordina alla porta di muoversi in sincronia con l'ascensore, per cui il valore deve corrispondere al nome del func_elevator, seguito, in questo caso - trattandosi delle porte interne - da 1: in questo tutorial lift1);

- no_touch : 1 (fa in modo che la porta non si apra al semplice avvicinarsi del player, ma tramite Gui).

Fatto questo, clona la porta, posiziona il clone e aggiusta l'angolo di movimento in modo che scorra nella direzione opposta alla prima porta NB: il nome di questo secondo func_door non ha importanza, purché abbia l'attributo team settato con lo stesso valore di prima.
 
     
     3. Le Porte esterne
Per le porte esterne possiamo usare lo stesso modello di quelle interne, oppure, come faremo qui, impiegare un altro modello, in modo da diversificare un po' l'ambientazione ;)

In ogni caso, possiamo comunque partire clonando le due porte interne e poi sostituire il modello, p.e. con quello che troverai a capo del seguente percorso:

     models/mapobjects/doors/delelev/delelevlf.lwo

Una volta sostituito il modello, seleziona una delle due ante della porta, va su Entity e correggi i key/vals come nella figura:



- name : [valore per l'attributo floorDor_1 nelle prorietà dell'ascensore]
              (in questo tutorial: piano1);

- team : [nome del func_elevator nelle prorietà dell'ascensore]2 (come prima, il valore deve corrispondere al nome dell'ascensore seguito, in questo caso, da 2. In questo tutorial: lift2;

* Optional: le porte dell'ascensore hanno un suono assegnato per defaut, ma è possibile cambiarlo, come nell'esempio seguente:

- snd_open : elavator_outer_open (suono all'apertura delle porte esterne);

- snd_close : elavator_outer_close (suono alla chiusura delle porte esterne);


Trattandosi di cloni delle porte interne, gli altri attributi sono stati ereditati e non vanno modificati. Ora possiamo clonare le porte esterne e spostare i cloni al piano superiore, deselezionare la coppia, selezionare una delle due anti della porta e correggere solo i seguenti due Key/vals:

- name : [valore per l'attributo floorDor_2 nelle prorietà dell'ascensore]
              (in questo tutorial: piano2);

- team [nome del func_elevator nelle prorietà dell'ascensore]3 (come prima, il valore deve corrispondere al nome dell'ascensore seguito, in questo caso, da 3. In questo tutorial: lift3;

Il nome della seconda anta non ha importanza e può rimanere func_door_x, dove x sta per la numerazione progressiva assegnata per default dall'editor. E con le porte abbiamo finito. Non ci rimane che occuparci dei Guis.

 
     

     4. Guis
Disegna un piccolo brush accanto alla porta esterna del pian terreno e convertilo in func_static. Da Entity clicca su Model e carica il seguente modello:

    models/mapobjects/guiobjects/techdrpanel1/techdrpanel1.lwo

poi premi sul pulsante Gui... e carica il pannello di chiamata:

    guis/doors/elevatorcall2.gui

Ora possiamo settare i valori per gli attributi del Gui, come nella figura sotto:



- gui_parm1 : 1 (Indentifica il piano in cui si trova il gui: in questo caso il 1° piano ovvero il pian terreno);

- gui_parm3 : Livello 2 (scritta che comparirà a video indicando il piano superiore; è convenzionale: ci puoi scrivere quel che ti pare);

- gui_parm4 : Livello 1 (come sopra per il piano inferiore);

- target : valore per l'atributo name dell'ascensore (in questo tutorial: lift).


Ci siamo quasi. Ora cloniamo il Gui, spostiamo il clone nel piano superiore e correggiamo solo il seguente Key/val:

- gui_parm1 : 2 (valore per il Gui del piano superiore).


Per finire in bellezza aggiungiamo una luce all'interno dell'ascensore: carica una luce, premi J e riduci il radius a 128 unità e assegnale un colore a piacimento; poi va su Entity e aggiungi la seguente coppia di key/val:

- bind : valore per l'atributo name dell'ascensore (in questo tutorial: lift).

Abbiamo finito: salva, compila e collauda il tuo ascensore ;)
 
     
     5. Test .map
Ecco il lavoro finito. Sotto tovi il link per scaricare il test map, che puoi aprire nell'editor per vedere da vicino come ho costruito l'ascensore ;)




  Download: d3_lift.map

Nb. Nel file .map i suoni delle porte sono quelli di default

 
Ok questo è quanto. Se qualcosa non ti è chiaro, non esitare a postare le tue domande nel nostro Forum.

   




Creative Commons License
Ascensori a due fermate
Tutorial by m4rcVs for HG&LD
- 19 Novembre 2006 -