Мутаторы и UnrealScript

Ослепляющий фонарик: плагин для Counter-Strike 1.6 и идея мутатора для Killing Floor

Blinding Flashlight — плагин AMX Mod X 2006-2007 годов для Counter-Strike 1.6 и Condition Zero. Он превращает фонарик в оружие: посветите противнику в лицо, и его экран на мгновение станет белым. Это не мод для Killing Floor, но его настройки — хороший шаблон для любой механики «свет как оружие», а в KF фонарики есть на многих стволах. Ниже разбор плагина, а затем набросок того, как идея могла бы работать в KF.

Как работает плагин

Плагин ждёт игрового события фонарика. Когда игрок включает свет, проверяется, кто попал в луч, и жертве накладывается ScreenFade (белая вспышка). Версия 0.2.3SL (июнь 2007) основана на оригинальной 0.2.0 от VEN и добавила большую часть настроек:

CvarПо умолчаниюСмысл
bf_mindistance500До этой дистанции эффект действует в полную силу
bf_maxdistance1500После неё эффект полностью исчезает, линейно от bf_mindistance
bf_maxblindtime1.5Секунды полного ослепления на минимальной дистанции (время удержания ScreenFade без появления и затухания)
bf_maxblend255Непрозрачность белого экрана вблизи
bf_minblend128Непрозрачность на максимальной дистанции
bf_hitplacebКакие зоны тела срабатывают: a общая, b голова, c грудь, d живот, e/f руки, g/h ноги
bf_fxfactor4.0Множитель длительности появления и затухания эффекта

Решения, которые стоит позаимствовать:

  • Жертва должна смотреть на атакующего. Проверку добавили в v0.2.1SL: ослепить со спины нельзя.
  • По умолчанию только голова. bf_hitplace=b означает, что луч надо навести в лицо.
  • Затухание с дистанцией и по длительности, и по непрозрачности, а не эффект «вкл/выкл».
  • Батарейка важна. Автор советует отдельный плагин, который быстрее разряжает фонарик, потому что стандартная батарейка CS не рассчитана на фонарик-оружие. Ещё он предлагает снизить bf_mindistance до 200 для лучшего геймплея.
  • Сброс при рестарте раунда. В v0.2.1SL исправили баг, когда таймеры игроков переживали рестарт раунда и блокировали эффект.

Отзывы в теме: на CS 1.6 работает; в Day of Defeat нет события фонарика, так что как есть работать не будет; на The Specialists 3.0 плагин загрузился, но ничего не делал. Многие ожидали, что на полном сервере это начнёт раздражать.

Идея для Killing Floor

KF — это PvE, поэтому интересная цель здесь мобы, а не игроки. У многих стволов KF есть фонарик с батарейкой, и на тёмных картах им и так пользуются. Вот как настройки плагина могли бы перейти в мутатор. Это набросок дизайна, а не проверенный код:

Правило плагинаВариант для KF
Проверка по событию фонарикаНа сервере каждые 0.2-0.3 с проверять игроков с включённым фонариком на оружии (как хранится состояние света, смотрите в классах оружия KF)
Жертва смотрит на атакующегоНаправление моба (Rotation) указывает на игрока в пределах конуса
Только головаТрассировка от глаз игрока по направлению взгляда с попаданием в голову (определение попадания в голову в KF уже есть для хедшотов)
Затухание с дистанциейСила эффекта от полной на 5 м до нуля на 15 м
ScreenFade у жертвыКороткое оглушение или замедление лёгких мобов (Клот, Горфаст, Ползун, Сталкер), на Скрейка, Флешпаунда и Патриарха не действует
Расход батарейкиПока эффект активен, батарейка фонарика KF садится быстрее, чтобы это был инструмент, а не вечный стан
Таймеры игроковКулдаун на каждого моба, полный сброс в конце волны и при смене карты

На что обратить внимание:

  • Баланс. Бесплатный стан на каждого Клота делает «Нормально» и «Сложно» тривиальными. Привяжите механику к перку (Support или Sharpshooter, в зависимости от сервера), добавьте кулдаун или ограничьте её Сталкерами, чтобы раскрывать и замедлять их.
  • Производительность. Проверки по таймеру, а не в Tick(), и только для игроков с включённым светом. Туториал по ночному видению показывает, как быстро поитерационные проверки съедают FPS.
  • Обратная связь. У мобов нет экрана, который можно засветить, поэтому эффект нужно показать: анимация оглушения, звук или короткая реакция на попадание.
  • Только сервер. Если всё считается на сервере, клиенты остаются ванильными, и мутатор не нужно скачивать.