Показать сообщение отдельно
Старый 21.07.2015, 17:07  #1
TrueStory
TrueStory
Рядовой
Регистрация: 20.07.2015
Адрес: (Belarus) г. Молодечно
Возраст: 24
Сообщения: 26


lambda Телепортационные двери (такие как в игре Cry of Fear)

v 1.1.0
[Внимание! Вы можете не читать о теории а сразу приступить к созданию, найдя «Комната и вспомогательные entities», потом «Создание дверей». Но я бы рекомендовал прочитать всё, чтобы избежать ошибок!]

Все наверное помнят двери в игре Cry of Fear, Silent Hill: Alchemilla ....
Когда Вы подходите к двери, нажимаете, происходит затемнение и.... и Вы в другой комнате.
Как это сделать? Некоторые знают как, а некоторые и нет!
Сегодня я Вам расскажу как это сделать. Но давайте разберёмся, зачем они нужны.

«Нужны или нет?».
Тут мы выявим плюсы и минусы.
Плюсы

1) Телепортационные двери хороши в плане оптимизации. Каждая комната, соеденённая этими дверьми может находиться далеко от того места, где должна быть на самом деле. Это значит, что hint'ы не понадобятся (понадобятся, но только для
оптимизации комнаты, и то, если нужно). Новичку не придётся использовать hint'ы, которыми и так сложно владеть.
2) Двери пойдут для создания «тихого» или horror мода, там, где нужно выполнять задания. (Не пойдёт для человека, который жаждет стрельбы, перестрелок и т.д).
Минусы

1) Реалистичность. Вы ничего не увидите, а только услышите звуки открывающихся и закрывающихся дверей.
2) Не пойдут для создания на DM картах (если смотреть со стороны, то игрок будет исчезать).
3) Вы должны принять во внимание, что ограничиваете возможности NPC.

Решать Вам!

«Производительность».
В обычной квадратной комнате 75-80 fps. Тест производился на компьютере: процессор - 2.40 GHz, видеокарта - 256 Mb, ОЗУ - 3.25 Gb. В оптимизированной комнате 120-130 fps (при таком же компьютере).


««Комната и вспомогательные entities».
1)Создадим комнату, поместим туда точку появления игрока (info_player_start) и свет (ligh или light_environment)
Разделим комнату на две части. Как у меня.

2) Поставим ambient_generic.
Настраиваем...

Name: DoorClosed
Sound Name: doors/default_stop.wav


Flags

Play Everywhere // звук будет воспроизводиться на всей карте
Start Silent // выключить воспроизведение звука/музыки в начале


Ставим ещё один.
Настраиваем...

Name: DoorOpen
Sound Name: doors/default_move.wav


Flags

Play Everywhere // звук будет воспроизводиться на всей карте
Start Silent // выключить воспроизведение звука/музыки в начале


Примичание:
посмотрите на таблицу внизу, на ней изображены наиболее подходящие пары звуков
(открытия и закрытия дверей).



3)Ставим env_fade
Настраиваем...

Name: FadeDoor
Duration: 2 // продолжительность перехода до затемненного состояния
Hold Fade: 0.9 // время, в течении которого экран будет темным
Fade Color (R G B): 0 0 0 // цвет затемнения


Flags

Fade From // переход от затемненного состояния к обычному будет происходить постепенно

Всё! Пол дела сделано!

«Создание двери».

1) Создаём кнопку (браш, переведённый в func_button). У меня получилось 60х94, толщина - 1.
2) Закрашиваем кнопку текстурой двери.
Настраиваем…

Name: 1 (условное название, которое писать не надо. Я буду так называть дверь).

OutPuts

OnPressed > FadeDoor > Fade
OnPressed > DoorOpen > PlaySound
OnPressed > GoTeleporterTS2 > Enable
OnPressed > GoTeleporterTS1 > Disable
OnPressed > DoorClosed > PlaySound (Задержка 0.70)

Flags

Don’t move // объект не двигается
Use Activates // объект можно активировать клавишей "Использовать"


3) Копируем её на другую сторону, удаляем все OutPuts её предшественника.
Настраиваем...

OutPuts

OnPressed > FadeDoor > Fade
OnPressed > DoorOpen > PlaySound
OnPressed > GoTeleporterTS1 > Enable
OnPressed > GoTeleporterTS2 > Disable
OnPressed > DoorClosed > PlaySound (Задержка 0.70)


Flags

Остались от первой двери (не трогаем).

3) Ставим два info_teleport_destantion напротив каждой двери. Первый ставим у двери 1, второй - у 2.
Настраиваем...

Name: TeleporterTS1

... и второй.
Настраиваем....

Name: TeleporterTS2

4) Создаём два trigger_teleport. ПЕРВЫЙ СТАВИМ У ДВЕРИ 2, ВТОРОЙ У ДВЕРИ 1
Настраиваем...

Name: GoTeleporterTS1
StartDisabled: Yes
Remote Distination: TeleporterTS1


Flags

Clients // игроки могут активировать этот объект

... и второй.
Настраиваем...

Name: GoTeleporterTS2
StartDisabled: Yes
Remote Distination: TeleporterTS2


Flags

Clients // игроки могут активировать этот объект

ВАЖНО! Каждый trigger_teleport должен охватывать такое расстояние, чтобы находясь вне его Вы не смогли нажать на нашу дверь!

6) Компилируем.

Найдутся такие люди которые не поняли схемы работы. Обьясняю, при нажатии на дверь, срабатывает затемнение, воспроизводится звук открытия и закрытия двери, срабатывает телепорт и одновременно отключается второй, переносит нас на другую сторону, и затемнение исчезает.

«Баги».
Посмотрите на рисунок внизу.
На нём видно, что нашу дверь можно обойти с другой стороны. Это значит, что тот телепорт работает, нас просто перенесёт без нашего согласия! Исправить ошибку просто. Добавьте такой OutPuts (для первой двери): OnPressed > GoTeleporterTS2 > Disable (Задержка 1.00)
Для второй двери:
OnPressed > GoTeleporterTS1 > Disable (Задержка 1.00)
Ваш телепорт отключится сразу после телепортирования
Исходник http://rghost.ru/7rgdmRmH7
Файл запакован в SFX архив! Вирусов НЕТ!

С Вами был TrueStory
Всем приятного маппинга!

P.S Статья может содержать мелкие ошибки (первый раз пишу). О недочётах пишите в комментариях!

Источник: моя голова!
О не рабочей ссылке для скачивания пишите мне (в комментариях) и я обязательно её заменю.
TrueStory вне форума Ответить с цитированием