Проекты

THE REAL GOLDEN PAN: золотая сковородка для Left 4 Dead 2

Смертельный удар сковородкой превращает обычных и особых заражённых, Танков и Ведьм в золотые статуи, сохраняющие позу смерти. А потом их можно пинать по карте.

THE REAL GOLDEN PAN: золотая сковородка для Left 4 Dead 2
THE REAL GOLDEN PAN: золотая сковородка для Left 4 Dead 2
Внимание!:) ->
Наделена древней австралийской магией.
P.A.N.: Petrifies Any Nuisance.
Идея настоящей золотой сковородки для Left 4 Dead 2 появилась у меня довольно давно.
Хотелось, чтобы это сковородка в «Лефте» работала действительно , как в TF2.
В теории всё звучало просто. На практике старый Source Engine быстро превратил эту идею в настоящий ночной кошмар :D.
Нужно было сохранить конкретную позу смерти, убрать обычный труп, подготовить золотые копии моделей для разных кампаний, разобраться со звуковым кешем L4D2.
Как это работает? 
ЧТО ДЕЛАЕТ МОД
Смертельный удар сковородкой превращает в золотую статую:
1. Обычных заражённых.
2. Всех особых заражённых.
3. Танков, включая варианты из первой части.
4. Обычную Ведьму и Ведьму-невесту.
Статуя сохраняет позу заражённого в момент смерти. Обычный ragdoll удаляется, поэтому рядом не остаётся второй, незолотой труп.
Удары сковородки сопровождаются металлическими звуками Saxxy, а само превращение сопровождается отдельным звуком золочения.
Статуи не прибиты к карте. Их можно толкать и пинать ногами, после чего они едут и вращаются по земле.
Поэтому после драки улица иногда превращается в очень странный золотой боулинг.
В tf2 такого небыло (в угоду баланса), но ведь признайтесь - всем хотелось попинать эти статуи)?
КАК УСТРОЕНА ФИЗИКА
Видимая золотая фигура и физический объект разделены.
Модель хранит «смертельную позу» и не имеет твёрдой коллизии. Под ней находится невидимый физический носитель на базе prop_physics_multiplayer с коллизией стандартного деревянного ящика.
Золотая фигура привязана к носителю и повторяет его движение и вращение.
Носитель использует группу PUSHAWAY, поэтому игрок не должен приклеиваться к статуе или застревать внутри неё.
Дополнительная логика учитывает направление и скорость движения выжившего и добавляет статуе импульс и вращение при столкновении. Визуально по улице летит золотой зомби, а физически движок рассчитывает устойчивый невидимый проп.
КАК РАБОТАЮТ ЗВУКИ СКОВОРОДКИ
Со звуком Source Engine устроил отдельный сюрприз.
Новые WAV-файлы можно положить в мод и вызвать через SourceMod, но без записи в sound.cache клиент L4D2 часто просто их игнорирует. <- для бывалых то это наверно известный факт, но я в соурсе не сильно шарю, сорен.. :(
Мод использует уже известные движку звуковые слоты самой сковородки.
Четыре штатных слота weapons/pan/melee_frying_pan_01.wav - melee_frying_pan_04.wav
подменяются тремя металлическими Saxxy impact, а слот weapons/pan/pan_break.wav используется для TurnGold.
Обычный удар даёт один металлический impact.
Да-да - пришлось пожертвовать звуками обычной сковородки :(((
При смертельном ударе SourceMod дополнительно запускает TurnGold в точке появления статуи.
Перед сборкой рабочие копии TF2-звуков приводятся к формату, числу каналов и длительности штатных слотов L4D2. Благодаря этому движок не обрезает звук, не искажает его и не требует регистрировать новые пути в звуковом кеше.
КЛЮЧЕВЫЕ МЕСТА В SOURCEPAWN
Перехват смерти.
Обработчики SDKHook_OnTakeDamageAlive проверяют оружие, владельца и летальность удара. Только после успешного создания статуи исходная смерть помечается как обработанная. Для особых заражённых отдельный pre-hook
подавляет CTerrorPlayer::CreateRagdollEntity, а резервная очистка удаляет убитого зомби, если движок всё же успел его создать.
Копирование позы. До удаления заражённого код считывает m_nSequence, m_flCycle, skin, body и массив m_flPoseParameter.
Эти значения применяются к золотой визуальной модели, поэтому она фиксирует именно тот кадр анимации, на котором пришёлся смертельный удар.
Физический пинок. Видимая статуя привязана к скрытому prop_physics_multiplayer. Повторяющийся таймер сравнивает положение и скорость выжившего с носителем, вычисляет направление толчка, добавляет линейную и угловую скорость и будит физический объект.
Поэтому статую можно катать ногами, но её сложная модель не зажимает игрока.
Я не стал убирать коллизию статуям т.к. это просто весело). Я знаю, что это может портить баланс игры, но на тестах сильных проблем не заметил. 
Да и кому в голову придет играть на серьезных щщах с этим модом ? (Если ты читаешь этот текст на моем портале - помни,читатель, - ты слишком лютый персонаж)). 
ПОЧЕМУ УСТАНОВКА СОСТОИТ ИЗ ДВУХ ЧАСТЕЙ
Steam Workshop может доставить модели, материалы и звуки, но не может установить и запустить SourceMod-плагин.
Соглашусь - это не удобно, но другого пути небыло. 
Поэтому мод разделён на две части:
1. Workshop Assets: золотая сковородка, модели статуй, материалы и звуки.
2. SourceMod Backend: серверная логика превращения, физика, очистка трупов и регистрация сковородки на картах.
ВАЖНО: одной подписки в Steam Workshop недостаточно. Без серверной части сковородка будет золотой, но превращение заражённых работать не будет.
ТРЕБОВАНИЯ
1. Left 4 Dead 2.
2. Metamod:Source.
3. SourceMod 1.12 или новее.
4. Локальный либо выделенный сервер.
5. Workshop-компонент у хоста и подключающихся игроков.
КРАТКАЯ УСТАНОВКА
1. Подписаться на Workshop-пакет.
2. Установить Metamod:Source и SourceMod.
3. Скачать SERVER-компонент с GitHub.
4. Распаковать содержимое архива в папку left4dead2 с заменой файлов.
5. Запустить локальный или выделенный сервер и проверить командой sm_gps_status.
Для локального сервера Windows игру необходимо запускать с параметром -insecure. Перед подключением к официальным VAC-серверам игру нужно полностью перезапустить уже без этого параметра.
ССЫЛКИ
Steam Workshop:
SERVER-компонент:
Исходный код и документация:
Исходники открыты. Если кому-то захочется сделать на основе проекта собственное безумие, я буду только рад.
В разработке помогали ИИ (спасибо новым технологиям, кто не верит - можете почитать документацию на source) и другие вспомогательные инструменты, но итоговая механика собиралась, проверялась и доводилась вручную.
Главная цель проекта простая: Невозможое возможно). 
Этот модик я сам искал много лет, но так его и ненайдя - решил сделать сам). Надеюсь он кому то тоже зайдет.
Ведь все хотят подержать золотую сковородку, да)? 
 saanee2000

Комментарии