Pages - Menu

sábado, 24 de agosto de 2013

Tutorial Left 4 Dead: Crear un coche con alarma

Cuando jugamos a Left 4 Dead es muy normal encontrarse con vehículos que tienen la alarma activada, y que si los golpeáramos disparan un Panic Event. En éste tutorial vamos a crear un coche con una alarma completa.


Como siempre para poder seguir éste tutorial os dejo un mapa preconstruido para descargar en éste enlace.

Crear un coche con alarma.

Crear un coche con alarma consta de varias entidades de luces, sonidos, eventos y una cierta sincronización entre todos ellos.

Lo pasos son los siguientes:

- Crear una entidad prop_car_alarm y asignarle el modelo cara_95sedan.mdl. En la propiedad "Name" poner "caralarm_car1"
- Duplicar la entidad, cambiarle la clase a prop_car_glass y asignarle el modelo cara_95sedan_glass_alarm.mdl. En la propiedad "Name" poner caralarm_glass1 y en la propiedad "Parent" poner "caralarm_car1".
- Crear una entidad beam_spotlight. Las propiedades son las siguientes:

Name: caralarm_headlights1
Render Mode: Additive
FX Amount: 150
Color RGB: 252 243 226
Spotlight Length: 256
Spotlight Width: 32
HDR Color Scale: .5

- Duplicar la entidad beam_spotlight y situar ambas en la zona de los faros delanteros del coche
- Crear una entidad env_sprite. Las propiedades son las siguientes:

Name: caralarm_light1
Parent: caralarm_car1
Render Mode: World Space Glow
Color RGB: 255 13 19
Sprite Name: glow.vmt
Scale: .5
Size of Glow Proxy Geometry: 5

- Duplicarla hasta tener cuatro. Situar cada una en una esquina del coche dentro del modelo.
- Crear una entidad ambient_generic. Las propiedades son las siguientes:

Name: caralarm1
Sound Name: Car.Alarm
Max Audible Distance: 4000
SourceEntityName: caralarm_car1

- Duplicar la entidad y cambiar en uno de ellos el parámetro "Sound Name" a "Car.Alarm.Chirp2". Situar ambas entidades encima del coche.
- Crear una entidad info_game_event_proxy y ubicarla encima del coche. Las propiedades son las siguientes:

Name: caralarm_game_event
Name of the event to generate: explain_disturbance
Range: 100

- Crear una entidad logic_timer y ubicarla encima del coche. Las propiedades son las siguientes:

Name: alarmtimer1
Start Disabled: Yes
Refire Interval: .75

Al final tendremos algo así:


- Abrimos las propiedades de prop_car_alarm y nos vamos a la pestaña Outputs, pulsamos el botón "Add...":

My Output Named: OnCarAlarmChirpEnd
Target Entity Named: caralarm_light1
Via this Output: HideSprite
Fire once only: Desmarcado
After a delay in seconds of: 0.70

My Output Named: OnCarAlarmChirpStart
Target Entity Named: carchirp1
Via this Output: PlaySound
Fire once only: Desmarcado
After a delay in seconds of: 0.20

My Output Named: OnCarAlarmChirpStart
Target Entity Named: caralarm_light1
Via this Output: ShowSprite
Fire once only: Desmarcado
After a delay in seconds of: 0.20

My Output Named: OnCarAlarmEnd
Target Entity Named: alarmtimer1
Via this Output: Disable
Fire once only: Desmarcado
After a delay in seconds of: 0.00

My Output Named: OnCarAlarmEnd
Target Entity Named: caralarm1
Via this Output: StopSound
Fire once only: Desmarcado
After a delay in seconds of: 0.00

My Output Named: OnCarAlarmStart
Target Entity Named: alarmtimer1
Via this Output: Enable
Fire once only: Desmarcado
After a delay in seconds of: 0.00

My Output Named: OnCarAlarmStart
Target Entity Named: caralarm1
Via this Output: PlaySound
Fire once only: Desmarcado
After a delay in seconds of: 0.00

- Abrimos las propiedades de logic_timer y nos vamos a la pestaña Outputs, pulsamos el botón "Add...":

My Output Named: OnTimer
Target Entity Named: caralarm_light1
Via this Output: ShowSprite
Fire once only: Desmarcado
After a delay in seconds of: 0.00

My Output Named: OnTimer
Target Entity Named: caralarm_light1
Via this Output: ShowSprite
Fire once only: Desmarcado
After a delay in seconds of: 0.00

My Output Named: OnTimer
Target Entity Named: caralarm_headlights1
Via this Output: LightOn
Fire once only: Desmarcado
After a delay in seconds of: 0.00

My Output Named: OnTimer
Target Entity Named: caralarm_light1
Via this Output: HideSprite
Fire once only: Desmarcado
After a delay in seconds of: 0.50

My Output Named: OnTimer
Target Entity Named: caralarm_light1
Via this Output: HideSprite
Fire once only: Desmarcado
After a delay in seconds of: 0.50

My Output Named: OnTimer
Target Entity Named: caralarm_headlights1
Via this Output: LightOff
Fire once only: Desmarcado
After a delay in seconds of: 0.50

Con esto hemos terminado de crear y configurar los elementos necesarios para ubicar un coche con alarma y efectos diversos como el sonido y la luz de alarma.

Pulsamos F9 para testear el mapa y configurar la rejilla de navegación (nav_mesh), imprescindible para que un Panic Event funcione.

Pulsamos F12 para abrir la consola de comandos. Al igual que en el tutorial de creación de Panic Event usamos los comandos siguientes:

- director_stop
- nb_delete_all
- nav_edit 1
- nav_mark_walkable (apuntando al suelo)
- nav_generate_incremental
- nav_clear_selected_set
- nav_toggle_in_selected_set (apuntando a la zona de rejilla del inicio del nivel)
- mark PLAYER_START
- nav_toggle_in_selected_set (apuntando a la zona de rejilla del pasillo del final del recorrido)
- mark FINALE
- nav_analyze
- nav_edit 0 
- director_start
- map PVHammerPanicEvent (para reiniciar el nivel con el AI Director activado)

Hazte con un arma y dispara al vehículo.



El mapa completo puede descargarse de éste enlace.

¿Qué clase de mapas se te ocurren usando vehículos con alarmas?