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

Info

Если интересуют исходники мардера, то они доступны здесь - totor13x/shaft-cc-gmod-murder. Остальные проекты найти тут

До начала

Карта cs_office_naКарта cs_office_na Карта cs_office_na, я ее изменял для своего сервера

Я один из тех, кто помнит, как выглядел Garry’s Mod в 2013 году. Забавно, что прошло уже 11 лет, а я до сих пор ощущаю нотку старины. В те времена я был просто игроком и не думал, что когда-нибудь буду разрабатывать свои серверы. Это было время относительного спокойствия в политике, социальном плане и в мире игр.

Марс Арена была основной площадкой серверов, где я обитал. Там я познакомился с многими людьми, которые оказали влияние на мою жизнь. В середине 2014 года Марс Арена начала загнивать: многие мои знакомые ушли, начались странные изменения.

Я думаю, это было связано с тем, что Астро или Марс начал вводить платные услуги, что вызвало недовольство у игроков. В целом я понимаю, зачем это было сделано, но это уже другая история. Меня же больше привлекло желание создать свой проект. Хотя я тогда не был опытен в этом деле, мне было интересно попробовать.

Начало

Мой проект начался с Мардера, что произошло в районе 2014 года. Луа я знал на уровне “Hello World”, но я был уверен, что смогу освоиться. Я начал с того, что скачал какой-то готовый гейммод, который был на гитхабе. Сейчас, думаю очевидно, что это был от Mechanical Mind. Я начал разбираться в коде, пытался что-то менять, но мне было сложно.

Первые версии лидиПервые версии лиди Первые версии лиди

Самой первой ролью был ученый. Я помню, что я сделал возможность видеть время смерти у трупов, а также количество живых игроков. Я был рад, что у меня получилось что-то сделать. Потом я добавил врача, который мог возрождать игроков. Автором большинства идей был Крик. Он основатель LiDi, я же скорее второй человек в этом проекте - выполнял техническую часть, а он автор большинства идей и всего-всего.

Еще скрины с первых версий лидиЕще скрины с первых версий лиди Еще скрины с первых версий лиди

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

Изначально наши роли были полной копией ролей с MA, но со временем я начал добавлять свои собственные. Мы с Криком решили доработать их, чтобы сделать игру интереснее. Думаю, это стало одной из наших главных фишек. Почему мы решили копировать? На тот момент у MA было много проблем, и за сервером не следили. Нам хотелось играть, поэтому мы решили создать свой собственный сервер.

Для этого мы подготовили дизайн документ, с помощью которого отслеживались нужные и полезные фичи. Мы с Криком планировали добавить много новых ролей, механик и карт. Мы хотели сделать сервер, который будет интересен игрокам - создать что-то своё, что будет отличаться от других серверов.

Механики

Многие механики были придуманы не мной:

  • идеи на форуме,
  • некоторые игроки писали мне в личку,
  • некоторые роли придумал Таптыга.

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

Здесь я хочу рассказать о ролях, которые были на Шафте. Я разделил их на сектора, чтобы было удобнее ориентироваться. Также я добавил стандартное описание роли с сервера и свои комментарии, чтобы было понятнее о чем я думал в тот момент. Некоторые из них могут содержать интересные детали или видеозаписи с разработки.

Нюансы

Демо картыДемо карты Демо карты

Демо лерп движений, изначально планировалось использовать для эффекта адреналина, но не получилось - слишком прожорливая функцияДемо лерп движений, изначально планировалось использовать для эффекта адреналина, но не получилось - слишком прожорливая функция Демо лерп движений, изначально планировалось использовать для эффекта адреналина, но не получилось - слишком прожорливая функция

Рофл над постоянно сгорающим в лаве КуебесомРофл над постоянно сгорающим в лаве Куебесом Рофл над постоянно сгорающим в лаве Куебесом

Фикс двойного выстрела с АрклейФикс двойного выстрела с Арклей Фикс двойного выстрела с Арклей

  • Изначально трупы были вечными, но потом я добавил таймер на 60 секунд. Я это сделал, чтобы реализовать механику растворения трупов. Это была единственная причина, почему я добавил таймер. Эффект растворения №1Эффект растворения №1 Эффект растворения №1 Эффект растворения №2Эффект растворения №2 Эффект растворения №2

  • На мардере все это время существовали оружия с дезрана и некоторая логика, по типу rtd. Причина тому - css модели и некоторые shared текстуры, по типу нян-гана или дабстеп-гана.

  • Я планировал связать мардер, SWRP, дезран в некоторых моментах. Например, если бы у человека был собран свой световой меч на SWRP, то он мог бы его использовать на мардере. Как я упоминал, для этой логики изначально подготовлен вид от первого лица, чтобы игрок мог видеть свой меч. Помимо меча подразумевалась возможность выбрать способность силы. По своей же сути, в таком случае игроку необязательно было бы покупать дополнительный контент. Началом к такому объединению стали Чао и система крафта. Световой меч от первого лицаСветовой меч от первого лица Световой меч от первого лица

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

    Рандомный момент, где видно использование технических командРандомный момент, где видно использование технических команд Рандомный момент, где видно использование технических команд

  • На мардере впервые появился функционал сайлент админов, хоть и дорабатывался он со временем на дезране. Многие, как мне кажется, были в курсе. Я добавил этот функционал для того, чтобы определенные доверенные лица могли следить за админами и не только. Среди функционала были: Демо сайлент админкиДемо сайлент админки Демо сайлент админки

    • просмотр логов
    • просмотр связей между аккаунтами с ip, hwid
    • скриншотинг
    • просмотр ролей
    • полное сокрытие сайлента с панели игроков, при входе и выходе в режим имитируется лог входа и выхода на сервер, при этом заменяется ник на рандомный и технически выключалось взаимодействие с игроком в этом режиме
    • бан, кик, мут, гаг без логов и уведомлений
    • включение микрофона (по типу скрытого слушания, из других игроков никто не слышал, да и сам игрок не знал что прослушивается)
  • Во время всего существования Murder я несколько раз переписывал код, чтобы сделать его более оптимизированным и удобным для игроков. Примерно в 2018 году я начал экспериментировать с ботами. Сложность разработки заключалась в том, что боты не могли использовать навигацию без navmesh. Сейчас уже существуют динамические navmesh, но тогда их приходилось вшивать в карту. Поэтому идея с ботами была отложена. Возможно, если бы я продолжил разработку, то внедрил бы ботов. Экспериментальное техническое демо про navmeshЭкспериментальное техническое демо про navmesh Экспериментальное техническое демо про navmesh

  • Роли Wajha и Карамельки принадлежат одному человеку

Ивенты

Ивенты - это особые режимы, которые запускаются во время игры. Все ивенты были сделаны мной.

Раньше на шафте/лиди были Power Rounds. Это прям интересный плагин был, только со временем мои собственные разработки стали более интересными и они стали постепенно заменять Power Rounds. Вот некоторые из них:

  • Слоу-моу - замедление времени, все движется медленнее
  • TDM - командный режим, где игроки делятся на 2 команды и убивают друг друга. Половина убийц, половина невиновных с оружием.
  • OP Murderer - у невиновных со спавна револьвер, у убийцы повышено HP и со спавна RPG
  • RPG Madness - 1vs1, где у каждого есть RPG с бесконечным боезапасом. После удаления Power Rounds еще жили долгое время и были удалены относительно недавно
  • Tag - Когда убийца наносит кому-то удар ножом, он становится новым убийцей. Каждые 30 секунд текущий убийца умирает, и убийцей становится новый человек

Инфо-блоки

Оригинальные инфо-блоки

Порядок спавна ролейДополнительная информация по ролям
  • 6 игроков:
    • Ученый, Врач
  • 8 игроков:
    • Помощник убийцы
  • 10 игроков
    • Шериф, Хедкраб, Ядовитый хедкраб (16%), Дрессировщик
  • 15 игроков
    • karamel`ka, Санта, Вор/Шут (50%), Курица, @psychonautar (20%), Минер (25%), Алкоголик, Мошенник/продавец (50%)
  • 19 игроков
    • Убийца, Помощник убийцы

Убивать всех могут: вор, шут, минер, помощник убийцы, хедкраб, ядовитый хедкраб, карамелька, @psychnautor

Убийства без наложения РДМ: минер, карамелька (если перешла на темную сторону), убийца, шут, вор, помощник убийцы, хедкраб, ядовитый хедкраб,

УПР: Дрессировщик, врач, шериф, санта, карамелька(если не переходила на тёмную сторону).

Убийство помощника убийцы самим убийцей считается как РДМ

Порядок работы ролей с оружиемВзаимодействие с убийцей

Не могут подбирать оружия:

  • Шут, Хедкраб, Ядовитый хедкраб, Мошенник, Продавец, Курица, @psychnautor

Специальные:

  • Не могут подобрать револьвер - Убийца, помощник убийцы
  • Могут подобрать нож - Вор, убийца

С игроков дропается:

  • Магнум, Шокер, Дефибриллятор, Адреналин

Убийце не обязательно убивать следующие роли для завершения раунда:

  • Убийца, Помощник убийцы, Карамелька, Санта, Вор, @psychnautor, Курица, Мошенник, Продавец, Минер

Роли, которые могут сотрудничать с убийцей и помощником:

  • Карамелька, Вор, Хедкраб, Мошенник, Продавец

Послесловие

Слендер был последним изменением, которое я внедрил на сервер. В моих планах была единая код-система с подсистемами в виде различных игровых режимов. Я хотел сделать синему центральным элементом этой системы, где можно было бы запускать мини-игры или переходить на внешние серверы для игр, таких как Murder или Deathrun.

Об этом я написал здесь.

Сама синема планировалась не как обычная синема, а как хаб для различных мини-игр и других активностей. В итоге я решил закрыть серверы, так как Garry’s Mod уже не соответствовал времени, я сам устал заниматься серверами в одиночку более 10 лет и политическая обстановка деградировала общественность - люди стали более злыми. Думаю, что закрытие серверов было правильным решением.