Добро пожаловать в ретроспективу, где я расскажу как проходил процесс разработки мардера. Основное внимание будет уделено тому, как реализовались механики, а также любопытные детали, которые могут быть интересны.
Info
Если интересуют исходники мардера, то они доступны здесь - totor13x/shaft-cc-gmod-murder. Остальные проекты найти тут
До начала
Карта cs_office_na, я ее изменял для своего сервера
Я один из тех, кто помнит, как выглядел Garry’s Mod в 2013 году. Забавно, что прошло уже 11 лет, а я до сих пор ощущаю нотку старины. В те времена я был просто игроком и не думал, что когда-нибудь буду разрабатывать свои серверы. Это было время относительного спокойствия в политике, социальном плане и в мире игр.
Марс Арена была основной площадкой серверов, где я обитал. Там я познакомился с многими людьми, которые оказали влияние на мою жизнь. В середине 2014 года Марс Арена начала загнивать: многие мои знакомые ушли, начались странные изменения.
Я думаю, это было связано с тем, что Астро или Марс начал вводить платные услуги, что вызвало недовольство у игроков. В целом я понимаю, зачем это было сделано, но это уже другая история. Меня же больше привлекло желание создать свой проект. Хотя я тогда не был опытен в этом деле, мне было интересно попробовать.
Начало
Мой проект начался с Мардера, что произошло в районе 2014 года. Луа я знал на уровне “Hello World”, но я был уверен, что смогу освоиться. Я начал с того, что скачал какой-то готовый гейммод, который был на гитхабе. Сейчас, думаю очевидно, что это был от Mechanical Mind. Я начал разбираться в коде, пытался что-то менять, но мне было сложно.
Самой первой ролью был ученый. Я помню, что я сделал возможность видеть время смерти у трупов, а также количество живых игроков. Я был рад, что у меня получилось что-то сделать. Потом я добавил врача, который мог возрождать игроков. Автором большинства идей был Крик. Он основатель LiDi, я же скорее второй человек в этом проекте - выполнял техническую часть, а он автор большинства идей и всего-всего.
Еще скрины с первых версий лиди
В моих планах было сделать более тесное взаимодействие между игроками, поэтому я добавил возможность передачи адреналина. Я помню, что я был рад, когда удалось сделать это.
Изначально наши роли были полной копией ролей с MA, но со временем я начал добавлять свои собственные. Мы с Криком решили доработать их, чтобы сделать игру интереснее. Думаю, это стало одной из наших главных фишек. Почему мы решили копировать? На тот момент у MA было много проблем, и за сервером не следили. Нам хотелось играть, поэтому мы решили создать свой собственный сервер.
Для этого мы подготовили дизайн документ, с помощью которого отслеживались нужные и полезные фичи. Мы с Криком планировали добавить много новых ролей, механик и карт. Мы хотели сделать сервер, который будет интересен игрокам - создать что-то своё, что будет отличаться от других серверов.
Механики
Многие механики были придуманы не мной:
- идеи на форуме,
- некоторые игроки писали мне в личку,
- некоторые роли придумал Таптыга.
Честно говоря, я не помню всех, кто помогал, но многие внесли свой вклад. К сожалению, я не могу точно сказать, какие роли я придумал… ну кроме нескольких персональных ролей. В принципе, база была самой стандартной, просто я ее доработал.
Здесь я хочу рассказать о ролях, которые были на Шафте. Я разделил их на сектора, чтобы было удобнее ориентироваться. Также я добавил стандартное описание роли с сервера и свои комментарии, чтобы было понятнее о чем я думал в тот момент. Некоторые из них могут содержать интересные детали или видеозаписи с разработки.
Убийца
Общее описание
Основная задача: Убийца - ключевая фигура, чья миссия заключается в устранении всех невиновных. Эта роль требует хитрости, скрытности и стратегии.
Уникальные способности:
- Получение брони после сбора пяти улик, способной выдержать один выстрел из револьвера.
- Возможность видеть следы игроков разного цвета, что позволяет отслеживать их движения.
- Наличие помощника, выделяющегося оранжевым цветом.
- Вознаграждение в виде поинтов за каждое убийство.
Вариации Убийцы
Стандартный
Особенности: Стандартный убийца не обладает дополнительными способностями, делая его доступным выбором для каждого игрока.
Оружие: Метание ножа с возможностью нанесения урона при попадании. В случае потери ножа, восстановление способности занимает 30 секунд.
Бенжи
Способность: Мгновенная телепортация к цели на расстояние до 2500 юнитов, направив на них прицел и нажав ПКМ. Телепортация происходит перед игроком, а не сзади.
Оружие: Нож, наносящий 60 урона.
Перезарядка: Время перезарядки способности составляет 20 секунд.
Мои комментарии: в свое время я пробовал реализовать этот класс убийцы, как отдельную роль, но с течением времени понял, что это не совсем то, что нужно. Поэтому я решил отказаться от идеи создания отдельной роли и внедрил его как вариацию (отдельный класс) убийцы.
Убийцерождённый
Способности:
- Кража здоровья, аналогично эбонитовому клинку в Skyrim:
- Курица - 0 хп, Полицейский, врач, вор, ученый - 15 хп, Санта, карамелька, суккуб - 4 хп, Хедкраб, ядовитый хедкраб - 35 хп, остальные - 10-15 хп.
- Перезарядка способности:
- Fus - 15 секунд
- Fus Ro - 30 секунд
- Fus Ro Dah - 45 секунд
Мои комментарии: это аля драконорожденный, в нашем понимании. Однажды наткнулся на эбонитовый клинок в воркшопе и подумал - почему бы не добавить что-то подобное на мардер. В итоге получился этот класс убийцы.
Телепорт
Способности:
- Расстояние телепортации: 600 юнитов
- Нож наносит 90 урона
- Имеет двойной прыжок
- Время перезарядки телепортации: 3 секунды
Мои комментарии: это была одна из самых интересных вариаций убийцы, которую я когда-либо делал. Очень динамичный и интересный, мой любимый. Я его полностью забазировал на основе аддона с телепортацией из игры “Dishonored”.
Кама Пуля
Способности:
- Проигрывание таунтов
- Если таунты не выбраны, то проигрывается “КамаПуля”
Мои комментарии: Это был один из самых странных классов убийцы, который я когда-либо делал. Он был создан как шутка. В то время у нас не было таунтов, и все таунты берут своё начало из механики этого класса. Если бы не этот класс, возможно, у нас не было бы таунтов. Или они появились бы позже.
Ситх
Способности:
- Световой меч
- На ПКМ может выпускать молнии
- Заряд силы в 100%
- Один заряд восстанавливается раз в 1.5 секунды
Мои комментарии: Ну, тут всё понятно – это класс ситха. Звёздные войны, молнии, световые мечи, Сила, все дела. Также я разрабатывал режим для игры от первого лица, но потом решил использовать только стандартное третье лицо. С этим было полно багов. Например, от третьего лица было проще понять, держит персонаж меч в руках или нет. Ну и множество других аспектов, которые сложно передать от первого лица.
Невидимка
Способности:
- Невидимость
- Всего 10 зарядов
- Заряды тратятся и восстанавливаются один раз в секунду
- Убивает игрока с 4 ударов ножа в невидимом состоянии
Мои комментарии: просто невидимка, ничего особенного. Наверное самая скучная, после КамаПули. Но она была важна для баланса. Все же невидимость - это мощно.
ViRUS
Изменённый Бенжи. Персональный класс убийцы. Он умел телепортироваться за спину и ставить мины, которые взрывались при приближении игрока. Радиус взрыва был больше шага реагирования, поэтому увернуться было сложно. Впоследствии я выкупил право на переиспользование функционала у Вируса и адаптировал его – так появился Минер.
Демо новых классов убийцы, видео буквально было воскрешено из мертвых. Извиняюсь за эту песочную картинку, но лучше вообще никак
Ученый
Основная задача: Ученый - положительная роль. Видит сколько осталось живых, а также время смерти у трупов. С трех улик получает револьвер.
Уникальные способности:
- Видеть время смерти у трупов.
- Видеть количество живых игроков.
- Получение револьвера после сбора трех улик.
По своей сути, это не наша роль – я взял её у MA и доработал. Это была самая первая роль в Murder, и её самый первый функционал заключался в возможности видеть время смерти у трупов. С реализацией этой механики было много проблем, особенно без знаний Lua, но в итоге я справился и был рад. Впоследствии добавилась возможность видеть количество живых игроков. О том, как появился функционал “время смерти”
Врач
Основная задача: Врач - положительная роль. Может возродить одного игрока дефибриллятором и только в первые 60 секунд после смерти. С пяти улик получает адреналин и этот адреналин можно передать другому игроку. Адреналин увеличивает скорость передвижения на 20 секунд. Также при возрождении мёртвого игрока даётся вознаграждение в виде поинтов.
Уникальные способности:
- Дефибриллятор - возможность возродить игрока в первые 60 секунд после смерти.
- Адреналин - увеличивает скорость передвижения на 20 секунд, скорость в разы больше чем у убийцы. Также адреналин можно передать другому игроку.
Эту роль я тоже взял у MA. На MA врач просто бегал с большим количеством HP и аптечкой, что позволяло выдержать один дополнительный удар от убийцы. У нас логика была немного иной: врач мог возродить игрока дефибриллятором в первые 60 секунд после смерти, что позволяло невиновным раскрыть убийцу. Также был адреналин, который заменял обычный револьвер за сбор улик. Раньше врач обладал возможностью видеть время смерти у трупов, но я решил сделать геймплей более кооперативным, убрав эту способность. Это не сработало, и я планировал вернуть её обратно, хотя для этого нужно было изменить всего одну строку кода.
Полицейский
Основная задача: Полицейский - положительная роль. При спавне получает револьвер. Может убить одного невиновного, а также обыскивать игроков. При использовании обыска нужно удерживать ЛКМ. Перезарядка: 40с. С пяти улик получает револьвер.
Уникальные способности:
- Револьвер - получение при спавне.
- Убийство невиновного - возможность убить одного невиновного. Убийство УПР считается РДМом
- Обыск - возможность обыскать игрока. При использовании обыска нужно удерживать ЛКМ. Перезарядка: 40с.
- Получение револьвера - после сбора пяти улик.
Хотя на MA была роль с таким же названием, она полностью отличается от нашей. При разработке функционала я допускал много технических ошибок – можно было и сервер крашнуть, и игрока зафризить навсегда. По-моему, обыск до сих пор не работает как надо, что печально. Но в целом роль получилась интересной и востребованной – с точки зрения геймплея впервые появились УПР (уникально-положительные роли). Первый технический скриншот новой роли
Помощник убийцы
Основная задача: Помощник убийцы - отрицательная роль, чья основная задача — помогать убийце.
Уникальные способности:
- Шокер - возможность оглушить игрока на 5 секунд. Перезарядка: 30 секунд. Дропается после смерти, подобрать может любой игрок.
- Метка - возможность отметить игрока, эту метку видит убийца. Потребляет 1 улику и перезаряжается 30 секунд. Метка держится 60 секунд, в идеале можно держать метку на 2 игроках.
- Взрыв-пакет - возможность получить после сбора пяти улик. При использовании взрыв-пакета убивает всех игроков в радиусе 500 юнитов.
- Помощник убийцы может купить за одну улику у мошенника или продавца бомбу!
Эта роль частично взята с MA. На MA была возможность переодеваться в живых игроков, но я решил не копировать такой очевидный и не слишком интересный функционал.
Взрыв-пакет был добавлен позже, больше как шутка. До добавления взрыв-пакета помощник мог получить капкан после сбора 5 улик и устанавливать его где угодно. Однако в интересах динамики игры и удобства игроков я решил удалить эту механику и заменить её взрыв-пакетом.
Забавно, но изначально я создал две роли: учёный и помощник убийцы. Помощник убийцы в первые недели существования использовал RPG вместо взрыв-пакета, и он давался со старта раунда. Он, как учёный и убийца, мог видеть количество живых игроков. Помимо этого он мог поднимать револьвер и нож. В общем, это была баганная роль, и исправить все это было довольно сложно из-за моего незнания Lua. Скрин диалога
Wajha
Основная задача: Wajha - нейтральная роль. Может убивать любого без ограничений. При убийстве игрока, вам дается 1 улика. При сборе 5 улик, вы получаете RPG.
Уникальные способности:
- ak-47 - дается при спавне
- RPG - дается при сборе 5 улик
Эта роль была особенной. Она была персональной для одного игрока, и при спавне этот игрок мог выбрать роль или рандомную роль, которая назначалась случайным образом. Её основа была взята от роли Булки, что позволяло этой роли убивать абсолютно любую другую роль. Получить эту роль было невозможно. Без комментариев
Хедкраб
Основная задача: Хедкраб - нейтральная роль. Может захватить игрока и полностью его контролировать. Враг убийцы и невиновных.
Уникальные способности:
- Захват игрока - возможность захватить игрока и полностью его контролировать. Чтобы спрыгнуть с человека нужно нажать [R]. Хедкраб не может захватить дрессировщика вообще.
- Вторая жизнь - если носитель хедкраба умирает, хедкраб может выжить с 30% шансем и продолжить игру.
- Ядовитый хедкраб - подкласс, можно сказать. Так же, как и обычный хедкраб может захватить и контролировать игрока. Но при прыжке к жертве сначала готовится к захвату некоторое время, только затем делает рывок вперёд. Контролируя жертву, хедкраб становится медленным и не может бежать. Нажав на ПКМ, вы можете заспаунить хедкрабов(как ядовитых, так и обычных). Так же имеется удар на ЛКМ, который убивает игрока с 1 удара.
Роль сделана в паре с Дрессировщиком. За время разработки претерпел много изменений, в большей степени нерфился - так как был слишком сильным. Идея была опубликована на форуме, не помню кем. Прикольно было сделать когда труп умирает (после 60 секунд), тогда если убийца разрежет труп, то хедкраб располовиниться и будет ползать.
Дрессировщик
Основная задача: Дрессировщик - положительная роль. Его задача помочь свидетелям и убийце. При захвате хедкраба, он может его ударить. При ударе по хедкрабу, он оставляет 1 хп. При втором ударе хедкраб не может захватить игрока, у которого больше 40 хп. При третьем ударе хедкраб умирает. С пяти улик получает револьвер. Убийство дрессировщика считается как УПР!
Уникальные способности:
- Хлыст - при ударе по хедкрабу, он оставляет 1 хп. При втором ударе хедкраб не может захватить игрока, у которого больше 40 хп. При третьем ударе хедкраб умирает.
- Получение револьвера - после сбора пяти улик.
Парная роль с Хедкрабом. На мой взгляд одна из самых бесполезных ролей, не знаю. Был нужен для баланса хедкраба, так как хедкраб был слишком сильным. В общем-то по спустя года я бы убрал эту роль и придумал что-то другое.
Карамелька
Основная задача: Карамелька - изначально положительная роль. Может подобрать револьвер и убивать всех игроков. После убийства невиновного, карамелька становится нейтральной ролью и её может убить обычный свидетель, а до этого момента она будет считаться как УПР. Может передавать собранные улики, нажав букву [E].
Уникальные способности:
- Револьвер - возможность подобрать револьвер и убивать всех игроков.
- Передача улик - возможность передавать собранные улики, нажав букву [E].
- Убийство невиновного
Первая персональная роль, ну на самом деле она не предполагалась для публичного использования. Я сделал эту роль для своей подруги, но так как она не играла на мардер, то я решил добавить ее в игру. Впоследствии роль обзавелась понятием УПР и она же стала первой ролью, которая может убить всех игроков.
Санта
Основная задача: Санта - нейтральная роль. Собрав 6 улик, даёт случайному игроку подарок (поинты). Убийство санты считается за УПР.
Одна из тех ролей, которая была сделана на коленке и перед Новым Годом. Именно в Новый Год хотелось как-то порадовать игроков, поэтому он обзавелся возможностью дарить игрокам разные вещи из поинтшопа или поинты. Впоследствии она перешла в разряд регулярных ролей.
Алкоголик
Основная задача: Алкоголик - положительная роль. Может получить водку с улики-бутылки. Чтобы отпить из бутылки - нужно нажать на ПКМ. На ЛКМ алкоголик выкидывает свою бутылку. Может напоить игрока и тот выдаст свою роль! Пожалуйста, не собирайте за него обычные улики. Они пропадают.
Эхх, алкоголик. Раньше за 5 улик мог сделать коктейль молотова. Просуществовал функционал недолго, отголосок от того времени все еще остался в коде, но он не используется.
Кстати забавно, но я раньше заставлял кураторов в обязательном порядке оставлять на карте 2-3 стеклянные бутылки - это нужные улики для алкоголика, так он мог восполнять свои запасы водки (или коктейля молотова, в зависимости от версии).
if ply:GetRole(ALKO) then local named = ent:GetModel() if named == LootModels["beer1"] or named == LootModels["beer2"] then ply:Give('weapon_mu_vodka') end ply:SetLoot(0) end
Функционал напоения игрока был добавлен позднее, во время глобального реворка ролей. Тогда же он лишился возможности делать коктейль молотова. Скриншот алкоголика
Вор
Основная задача: Вор - нейтральная роль. Видит улики сквозь стены. Убийство вором невиновных не считается за РДМ. Может своровать нож, револьвер, дефибриллятор, адреналин, водку. Время перезарядки: 40с.
Уникальные способности:
- Воровство - возможность своровать у игрока нож, револьвер, дефибриллятор, адреналин, водку. Время перезарядки: 40с.
- Видение улик - видит улики сквозь стены.
- Получение револьвера - после сбора пяти улик.
- Легальное РДМ - может убивать невиновных без последствий.
Вот раньше Вор был реальной имбой, так как мог воровать каждые 10 секунд и при приседании становился невидимым на 1 секунду. При этом если ничего своровать не удавалось - то воровал улики. Я потом, конечно, его ослабил, но все равно он остался мерзким и мощным.
Курица
Основная задача: Курица - нейтральная роль. Только [Q].
Я сделал эту роль ради рофла, она не была публичной. Просто в моменте Куебес захотел сделать ее публичной и вот она тут. Для некоторых игроков была отключена задержка спавна яиц, что позволяло “рисовать” на карте. Рисование на карте уликами
@psychonautar
Основная задача: @psychonautar - нейтральная роль. Возвращает весь полученный урон.
Уникальные способности:
- Возвращение урона - отражает получаемый урон. Первое отражение возвращает весь урон. Второе уже поделится. Пример:
- 100 дмг — вернет 100 дмг атакующему и 0 @psychonautar.
- 100 дмг — вернет 50 дмг атакующему и 50 @psychonautar.
- 100 дмг — вернет 33.(3) атакующему и 99,(9) @psychonautar.
Вторая персональная роль была создана на основе одной истории из моей жизни, связанной с конкретным человеком. Наше взаимоотношение можно отражено в собственно главной особенности этой роли. В принципе, больше добавить нечего.
Суккуб
Основная задача: Суккуб - нейтральная роль. Может пожирать души.
Уникальные способности:
- Поглощение души - возможность пожирать души. ЛКМ - выбирает цель для поглощения. Повторный ЛКМ - убирает цель.
- Перерождение - если суккуб умирает, то он теряет душу и возрождается мгновенно.
Последняя роль, которую я создал для Murder, потребовала много времени из-за сложностей с разработкой механик. Когда-то Крик имел персональную модель суккуба, но после его ухода я решил внедрить такую роль, чтобы модель не простаивала без дела. Из-за недостатка времени на чистку контента модель оставалась без использования. Параллельно я занимался разработкой SWRP, Prop Hunt, TTT, и когда коды этих игровых режимов стали более совершенны, Murder оставался в прошлом. Приходилось адаптировать или переделывать его под новые стандарты. Поэтому роль осталась без описания, а механики выглядели сырыми.
Превью роли Суккуб. Делалось для некоторых игроков, которые следили за разработкой
Шут
Основная задача: Шут - нейтральная роль. Может дублировать абсолютно любую роль. Убийство шутом невиновных не считается за РДМ. Для дублирования нужно собрать две улики. Если шут не выбрал роль и убийцу убили, то шут может стать новым убийцей с шансом 50%.
В общем, чтобы создать шута, я договаривался с одним из главных (вроде бы) на DxmLife. Этот человек имел доступ к серверам и занимался администрированием на DxmLife. В своё время у нас были хорошие отношения, но потом что-то пошло не так, и мы перестали общаться.
Я также разрабатывал роли для их сервера, включая роль Комедианта. Я не помню конкретного функционала этой роли на их сервере, но вот такая вот история.
Мошенник и продавец
Основная задача: Мошенник - нейтральная роль. Продает фальшивые броню или револьвер за одну улику.
Уникальные способности:
- Продажа фальшивых предметов - возможность продать фальш.
- Если он продал броню и убийца победил, то мошенник теряет 5к поинтов, а продавец получает 5к поинтов.
- Если он продал револьвер, а убийца победил, то мошенник получает 5к поинтов, а продавец теряет 5к поинтов.
В целом это парные роли, выглядят одинаково функционал одинаковый, но разный эффект. Бессмертные, нейтральные роли. Они появились довольно случайно, я как-то сидел и приделал револьверу возможность выстрелить с мощным уроном, но при этом сам стреляющий получал урон. Это все выросло в фейковый магнум, а там уже я и внедрил это в мошенника, а для разнообразия был добавлен продавец.
Минер
Основная задача: Минер - нейтральная роль. Может минировать собранные им улики. Если игрок попытается их собрать, то они взорвутся, при этом нанесут урон. Убийство минером невиновных не считается за РДМ.
Уникальные способности:
- Минирование улик - возможность минировать собранные улики, может собирать неограниченное количество улик.
Роль была создана благодаря функционалу мин, который я выкупил у Вируса. Изначально я планировал добавить три мины, которые пополнялись бы каждые 30 секунд. Однако в процессе реворков мины превратились в мины-улики, которые игрок может собирать в этой роли.
Булка
Удаленная роль. Прародитель роли Wajha, не было цели у роли. По сути своей была чисто бесполезной ролью, которая отличалась тем, что был уникальный худ и при убийстве игрока могла взять способность роли. Из-за технической ограниченности оригинального гейммода роль была удалена. Какие-то симптомы роли остались в коде.
Подрывник и сапер
Удаленная роль.
Основная задача: Подрывник - нейтральная роль. Может подрывать игроков. Сапер - положительная роль. Может обезвредить бомбу.
Эти роли существовали на Murder некоторое время. Идея заключалась в том, что подрывник мог установить бомбу в любой части карты в любое время. Эта бомба могла убить всех на карте и автоматически завершить раунд как ничью. Только сапер мог обезвредить эту бомбу, что делало его ключевой фигурой. Однако я решил удалить эти роли из-за их специфичности и несоответствия общему стилю игрового процесса.
ORI роль
Удаленная роль. Персональная роль для игрока ORI в Murder была обычным невиновным, но с особым спавн-оружием - Mercy Gun из Overwatch. Это оружие вылечивало на 2 HP за выстрел и имело бесконечный боезапас.
Нюансы
Демо лерп движений, изначально планировалось использовать для эффекта адреналина, но не получилось - слишком прожорливая функция
Рофл над постоянно сгорающим в лаве Куебесом
Фикс двойного выстрела с Арклей
-
Изначально трупы были вечными, но потом я добавил таймер на 60 секунд. Я это сделал, чтобы реализовать механику растворения трупов. Это была единственная причина, почему я добавил таймер. Эффект растворения №1 Эффект растворения №2
-
На мардере все это время существовали оружия с дезрана и некоторая логика, по типу rtd. Причина тому - css модели и некоторые shared текстуры, по типу нян-гана или дабстеп-гана.
-
Я планировал связать мардер, SWRP, дезран в некоторых моментах. Например, если бы у человека был собран свой световой меч на SWRP, то он мог бы его использовать на мардере. Как я упоминал, для этой логики изначально подготовлен вид от первого лица, чтобы игрок мог видеть свой меч. Помимо меча подразумевалась возможность выбрать способность силы. По своей же сути, в таком случае игроку необязательно было бы покупать дополнительный контент. Началом к такому объединению стали Чао и система крафта. Световой меч от первого лица
-
В течении всего времени существования мардера его код обрастал новыми фичами и на этот случай я добавлял технические команды, которые позволяли мне включать или выключать те, или иные фичи. Например, я мог зафорсить роль, включить ивенты, получить оружие и т.д. Все это было сделано для того, чтобы мне было удобно тестировать новые фичи и не ломать игру для игроков. Однако впоследствии этот технический стафф стал доступен некоторым игрокам.
Дамп технических команд
!32 - форсированная смена класса убийцы на Телепорта !31 - форсированная смена класса убийцы на КамаПулю !711 - роль Продавца !712, !2226 - роль Невинового !713, !2244, !2222777 - роль Убийцы !714, !222611 - роль Помощника убийцы !715 - роль Курицы !2222 - роль Минера !2223 - форсирование ивента CVP !2225 - роль @PSYCHNAUTOR !2227 - роль Вора !8899 - роль Суккуба !22232 - форсирование ивента Ak-47 !22233 - форсирование ивента Слендер !22666 - роль Ядовитого хедкраба !2222441 - роль Санты и роль курицы рандому !2222442 - роль Курицы и роль Санты рандому !22225557 - форсированная смена класса убийцы на Хищника из ивента CVP в обычной игре !b - рисование на стенах кровью без функционала убийцы !cr2 - Спавн улики перед собой !cbow - форсирование ивента Crossbow !fa - Фейковый револьвер !ff - роль Подрывника !fx - роль Шута !fz2 - форсирование ивента Boom !fz3 - установка таймера раунда на 60 часов !ma - роль Карамельки с фейковым револьвером !maa - роль Карамельки с нормальным револьвером !tails - форсирование ивента Tails Doll с возможностью назначить определенного игрока !sled - форсирование ивента Слендер с возможностью назначить определенного игрока
Рандомный момент, где видно использование технических команд
-
На мардере впервые появился функционал сайлент админов, хоть и дорабатывался он со временем на дезране. Многие, как мне кажется, были в курсе. Я добавил этот функционал для того, чтобы определенные доверенные лица могли следить за админами и не только. Среди функционала были: Демо сайлент админки
- просмотр логов
- просмотр связей между аккаунтами с ip, hwid
- скриншотинг
- просмотр ролей
- полное сокрытие сайлента с панели игроков, при входе и выходе в режим имитируется лог входа и выхода на сервер, при этом заменяется ник на рандомный и технически выключалось взаимодействие с игроком в этом режиме
- бан, кик, мут, гаг без логов и уведомлений
- включение микрофона (по типу скрытого слушания, из других игроков никто не слышал, да и сам игрок не знал что прослушивается)
Дамп диалога от Куебеса
Waj:
БЛЯТЬ
Waj:
ВЫЙДИ.
Waj:
ВЫЙДИ!!!
Waj:
ВЫЙДИ!!!!
Waj:
ИЗ ИНВИЗА!
Waj:
ВОРКАУТ!
Воркаут:
Я уже
Воркаут:
В наблюдатели
Воркаут:
Да бля какого
Воркаут:
Хрена
Waj:
Блять
Waj:
Бхопил
Воркаут:
Я уже давно вышел
Воркаут:
Точнее
Waj:
Блять
Воркаут:
Да и
Воркаут:
Тебе Флиджин пишет?
Waj:
13:35 - FleDjin: привет 13:35 - Wajha tho': Да. 13:35 - FleDjin: тут один 13:35 - FleDjin: человек 13:36 - FleDjin: не можем слейнуть 13:36 - FleDjin: и его в табе нет 13:36 - Wajha tho': Чего? 13:36 - FleDjin: и что делать? 13:37 - Wajha tho': Что? 13:36 - FleDjin: бхопит 13:37 - Wajha tho': Кто? 13:37 - Wajha tho': Админы? 13:38 - Wajha tho': Эй 13:38 - Wajha tho': Там баг? 13:38 - FleDjin: его не видно не в меню 13:38 - FleDjin: не в TAB 13:38 - FleDjin: сейчас он ушёл 13:39 - Wajha tho': Человека в табе не видно? 13:39 - FleDjin: да 13:39 - Wajha tho': Как это? 13:40 - FleDjin: незнаю 13:42 - Wajha tho': Хм... 13:42 - Wajha tho': Не вижу багов 13:42 - FleDjin: всё уже 13:42 - FleDjin: ушёл 13:43 - Wajha tho': Может глюк? 13:43 - Wajha tho': Глюк ушел? 13:43 - FleDjin: незнаем бхопил 13:43 - FleDjin: он 13:43 - FleDjin: можешь у троечки спросить?
Воркаут:
Я видел
Воркаут:
+В тоже время он мониторит Троечке
Waj:
13:44 - Troechka: А, да 13:44 - Troechka: Там был человек 13:44 - Troechka: Он мог бхопить и играть 13:44 - Troechka: его звали qip 13:44 - Troechka: Его нельзя было слейнуть, кикнуть, забанить и так далее 13:44 - Troechka: Он не отображался в табе вообще 13:44 - Wajha tho': Умм 13:45 - Wajha tho': Уверена? 13:45 - Troechka: Абсолютно 13:45 - Troechka: Когда подходили к нему админы было видно под игровым ником "qip" 13:45 - Troechka: но в табе его не было и в меню тоже 13:45 - Troechka: Мог бхопить спокойно и играл за помощника, потом зардмил, я хотела его слейнуть, а его попросту в меню нету 13:46 - Troechka: Он всё ещё на сервере 13:46 - Wajha tho': Да таких нету 13:47 - Troechka: Если в чате написать q, а затем нажать на таб, чтобы посмотреть ники всех, у кого начинается на q, то там появится "qip" 13:47 - Troechka: Я не знаю что случилось, но он вправду существует о-о 13:47 - Wajha tho': Troechka: Если в чате написать q, а затем нажать на таб, чтобы посмотреть ники всех, у кого начинается на q, то там появится "qip" 13:47 - Wajha tho': Что? 13:48 - Troechka: Охх, это сложно объяснить 13:48 - Wajha tho': Я не понимаю! 13:48 - Wajha tho': Этот человек на сервере?
Воркаут:
...
Waj:
13:49 - Troechka: Ну, вот, например, если я захочу написать Ваш ник, то я введу Waj и нажму на таб и Ваш ник просто станет, мм, полным и всё и так работает с каждым, вот я и протестировала с qip и там также появляется 13:49 - Troechka: За ним ещё следить можно было
Waj:
Блять
Waj:
продвинутая девочка, я в шоке
Воркаут:
Короче
Воркаут:
Как только она написала
Воркаут:
Я вышел
Воркаут:
Она попросила
Воркаут:
Админов написать Q+Tab
Воркаут:
Т.к они там нечего не увидят
Waj:
То что такое вообще есть
Waj:
Это шок
Waj:
Я впервые такое
Waj:
Вижу!
Воркаут:
Таб?
Waj:
Механика
Waj:
В чате
Воркаут:
Я давно знаю
Waj:
Сказал бы, я бы разобралась
-
Во время всего существования Murder я несколько раз переписывал код, чтобы сделать его более оптимизированным и удобным для игроков. Примерно в 2018 году я начал экспериментировать с ботами. Сложность разработки заключалась в том, что боты не могли использовать навигацию без navmesh. Сейчас уже существуют динамические navmesh, но тогда их приходилось вшивать в карту. Поэтому идея с ботами была отложена. Возможно, если бы я продолжил разработку, то внедрил бы ботов. Экспериментальное техническое демо про navmesh
-
Роли Wajha и Карамельки принадлежат одному человеку
Ивенты
Ивенты - это особые режимы, которые запускаются во время игры. Все ивенты были сделаны мной.
Katanas / Katanas (Hard)
Описание - ивент, где каждому игроку даётся катана (эбонитовый клинок). При этом задача игрока — убить других. За убийство даётся определённое количество хп(20 – 50). Кто больше всех убьёт людей за раунд, тот и побеждает! Для запуска ивента необходимо 9 активных игроков.
Мои комментарии Изначально ивент был просто Katanas, но потом я добавил Hard версию. В обычной версии игроки перерождались, а в Hard версии нет.
BOOM!
Описание - Время повзрываться! Это ещё один весёлый ивент, где у каждого игрока в начале раунда есть бомба, как у помощника. Задача невиновного всё та же — взорвать наибольшее количество людей. При этом радиус у бомбы ~250 юнитов. Для запуска ивента необходимо 10 активных игроков.
Мои комментарии Этот ивент достаточно простой, но веселый. Все игроки бегают и пытаются взорвать друг друга. Первое время очень сильно проседало фпс, пока я не додумался удалять трупы сразу после взрыва, чтобы не просчитывать их физику. Бомба такая-же как у помощника, но с меньшим радиусом.
Crossbow / Crossbow (Hard)
Описание - Всё, что нужно делать — это убивать с помощью арбалета невиновных. Чем больше невиновных, тем лучше. У арбалета немного стрел, поэтому периодически вам нужно будет их пополнять, подбирая улики или убивая других игроков. Для запуска ивента необходимо 9 активных игроков.
Мои комментарии Ивент был создан для того, чтобы игроки могли оттачивать свои навыки стрельбы из арбалета. В обычной версии у них было бесконечное количество стрел, а в Hard версии они должны были подбирать стрелы с убийств или улик. Как и в обычном режиме с катанами, игроки перерождались после смерти или умирали полностью в случае Hard
AK-47
Описание - Вам даётся в руки калаш, с помощью которого вам нужно убивать игроков. Выиграть можно только оставшись последним в живых. Для запуска ивента необходимо 8 активных игроков.
Мои комментарии Это обычный ивент, где игроки бегают и стреляют друг в друга. Боезапас бесконечный, но игроки не возрождаются после смерти. Ивент с Катанами, арбалетами и калашами были придуманы и сделаны в один день, поэтому комментарии по ним одинаковые.
Tails-Doll
Описание - это ивент, в котором все игроки должны убить живую куклу Тейлса, собрав 5 улик на пистолет, или же наоборот. Изначально у этой куклы имеется 100 хп и маленькая скорость. С каждым попаданием в неё отнимается 25 хп и значительно прибавляется скорость. Для запуска ивента необходимо 10 активных игроков.
Мои комментарии Ивент, который я придумал в пьяном состоянии. Смотрел ютуб и в реках увидел этот видос, дико заинтересовала эта древняя крипипаста. В итоге я решил сделать ивент, где игроки должны убить куклу Тейлса. Тут надо прибавить яркости, чтобы разглядеть превью
Маньяк
Описание - это ивент, в котором убийца становится маньяком аля Джейсон Вурхиз. В большей степени это стандартный режим, просто убийца имеет больше хп, а оружие у него бензопила. В коде не осталось ничего, кроме названия и описания.
Мои комментарии Ивент был удален со временем, так как он был слишком похож на обычный режим. В итоге я решил удалить его, чтобы не засорять код.
LootPicker
Описание - Задача невиновного только одна: собрать наибольшее количество улик. Кто собрал больше всех улик, тот и побеждает. Для запуска ивента необходимо 9 активных игроков.
Мои комментарии Ивент изначально планировался как ивент для новичков, чтобы они могли быстро вникнуть где и как собирать улики. Из-за его простоты и не особо активного геймплея редко запускался.
CVP (Combine vs Predators)
Описание - CVP (Combine vs Predators). Игроки делятся на 2 стороны: Комбайны и Хищники. Комбайны с калашом: их задача — убить всех хищников. Хищники невидимы и должны убить комбайнов. При каждом попадании комбайна, хищник постепенно становится видимым. Для запуска ивента необходимо 10 активных игроков. У хищников есть несколько типов ударов:
- [ЛКМ] — основной удар , который сносит половину хп.
- [ПКМ] — дополнительная атака. Она позволяет хищникам забраться на высокие места, а так же быстро добежать до комбайна.
- [R] — выпускается плазма, которая моментально убивает врага, если в него попасть.
Мои комментарии Ивент был запланирован давно и является моей данью прошлому. Я пришел в Garry’s Mod после CS 1.6, где я часто засиживался на Ру серверах. Среди моих любимых Deathrun серверов было исключение - All Heroes. Это режим, где вместо привычных спецназовцев и террористов были герои - робокоп, терминатор, телепорт и т.д.. Одним из героев был хищник с теми же способностями и звуками. На основе исходников этого режима из CS 1.6, найденных в интернете, я создал свой любимый ивент. Он наполнен ностальгией и сделан с особым вниманием.
Слендер
Описание - Ивент, где игроки должны собирать 8 улик, а Слендер должен их убивать. Для запуска ивента необходимо 10 активных игроков.
Мои комментарии Ивент-система, которую я разработал, была довольно сложной из-за специфики движка игры. Я мог запускать ивент только в момент смены раунда на 100%, при этом перед этим обязательно на карту внедрялась “ночь” с помощью технических средств. Это включало перекраску всех ламп и многих других элементов, что требовало пересборки световой карты движком игры. В основе этой системы лежал режим Stop it Slender, но с моими значительными правками, так как оригинальный код был “сука говно”.
Скрин ивента от Russian Man, главного по мардеру
Раньше на шафте/лиди были Power Rounds. Это прям интересный плагин был, только со временем мои собственные разработки стали более интересными и они стали постепенно заменять Power Rounds. Вот некоторые из них:
- Слоу-моу - замедление времени, все движется медленнее
- TDM - командный режим, где игроки делятся на 2 команды и убивают друг друга. Половина убийц, половина невиновных с оружием.
- OP Murderer - у невиновных со спавна револьвер, у убийцы повышено HP и со спавна RPG
- RPG Madness - 1vs1, где у каждого есть RPG с бесконечным боезапасом. После удаления Power Rounds еще жили долгое время и были удалены относительно недавно
- Tag - Когда убийца наносит кому-то удар ножом, он становится новым убийцей. Каждые 30 секунд текущий убийца умирает, и убийцей становится новый человек
Инфо-блоки
Оригинальные инфо-блоки
Порядок спавна ролей | Дополнительная информация по ролям |
|
Убивать всех могут: вор, шут, минер, помощник убийцы, хедкраб, ядовитый хедкраб, карамелька, @psychnautor Убийства без наложения РДМ: минер, карамелька (если перешла на темную сторону), убийца, шут, вор, помощник убийцы, хедкраб, ядовитый хедкраб, УПР: Дрессировщик, врач, шериф, санта, карамелька(если не переходила на тёмную сторону). Убийство помощника убийцы самим убийцей считается как РДМ |
Порядок работы ролей с оружием | Взаимодействие с убийцей |
Не могут подбирать оружия:
Специальные:
С игроков дропается:
|
Убийце не обязательно убивать следующие роли для завершения раунда:
Роли, которые могут сотрудничать с убийцей и помощником:
|
Послесловие
Слендер был последним изменением, которое я внедрил на сервер. В моих планах была единая код-система с подсистемами в виде различных игровых режимов. Я хотел сделать синему центральным элементом этой системы, где можно было бы запускать мини-игры или переходить на внешние серверы для игр, таких как Murder или Deathrun.
Об этом я написал здесь.
Сама синема планировалась не как обычная синема, а как хаб для различных мини-игр и других активностей. В итоге я решил закрыть серверы, так как Garry’s Mod уже не соответствовал времени, я сам устал заниматься серверами в одиночку более 10 лет и политическая обстановка деградировала общественность - люди стали более злыми. Думаю, что закрытие серверов было правильным решением.