Админим сервер Ultima Online 14 лет — Вторая часть лонга
Год
мы закончили с тем, что взяли красивую цифру в 20 тысяч учетных
записей, и заодно, почувствовав весь груз ответственности переработали
подход к резервированию и бэкапам. Теперь у нас был рейд-массив с
двойным резервированием, бэкапы на два удаленных сервера, и хранилище
копий и сборок на отдельном носителе вне сети.
Вдобавок к этому — перенесли всю кодовую базу в систему контроля версий Subversion. Казалось — мы уже совсем взрослые и работаем серьезно, но начало следующего года показало, что в плане сетевой инфраструктуры нам еще очень далеко до серьезных проектов.
В начале года наш коннект до сервера сказал — пуф, все! Плохо понимая, в чем проблема, я посмотрел загрузку канала, и понял, что его больше нет с нами. Все резервные бэкапы шли на вдс-ку в датацентре, но сам сервер физически все еще располагался просто в квартире, пусть и обложенный бесперебойниками и резервным каналом от другого провайдера. Это позволяло в обычные дни держать аптайм за 99.8% в год, но обычные дни закончились. Стало понятно, что идет DDoS.
И раньше временами возникали атаки, но это было школьные досы с условно двух машин, которые легко рубились либо провайдером, либо настройками на стороне сервера, поэтому серьезных проблем они никогда не доставляли. Посмотрев еще раз на грустную загрузку канала в потолок, я на всякий случай позвонил провайдеру, который не менее грустно заявил, что айпишник придется блэкхолить, иначе у них ляжет железка, работающая на пол района. Что делать на тот момент понимал мало, поэтому связался с одним из наших постоянных игроков-айтишников имеющего много регалий, который по совместительству преподавал информатику в одном из ведущих институтов Самары, а также был одним из разработчиков ныне канувшего в лету дистрибутива фряхи FrenzyBSD (его имя есть и в Википедии). Поговорив с ним по телефону, и поняв, с чем я столкнулся, а также выслушав советы, стал понятен план действий. И в этом же разговоре был забавный момент, который остался в памяти — я рассказывал, как и что у меня настроено и работает, после чего состоялся примерно следующий диалог:
- А точно это работает так и так?
Я говорю — точно.
- А ну-ка сделай так и так.
Я делаю.
- Но ведь так не может работать, как ты это сделал?
- Я не знаю.
План действий, после некоторых попыток решить проблему самостоятельно свелся в итоге к поиску хостинга, предоставляющего защиту от атак. Надо сказать, что тогда существовало буквально полторы конторы, которые этим занимались, и в этих полутора в половине был четко обозначен отказ по размещению игровых серверов, а в остальной все стоило денег, рассчитанных под крупный бизнес или топовые сервера линейки, а не бичей с парой сотен человек. Потянуть это мы не могли, поэтому начался поиск разношерстных ребят из серой зоны. В основном тогда люди либо перепродавали услуги по защиты от Ddos-ов, проксируя трафик через французского хостера OVH, либо пользовались своим служебным положением, и в обход кассы проксировали через датаценрты, в которых работали.
На неделю мы приткнулись к первым ребятам, нас оттуда попросили из-за высокой нагрузки, и мы нашли вторых. Миниатюрная девушка из Питера, работница одного крупного ДЦ, разместила у себя на балконе несколько стоек забитых списанным железом с работы, закидав это шумоизоляцией и кондеями, провела два оптоволокна оттуда же, и продавала услуги хостинга и защиты через интернет. Мы переехали к ней на балкон. Еще неделю мы были с ней на постоянной связи, она же пребывала в режиме мемной горящий собаки, которая говорила, что все нормально. Однако наша история закончилась на том, что железка, которая фильтрует атаки скоро выйдет с балкона, и канал на 10 гигабит у нее из-за нас забит полностью, что создает проблемы для других клиентов. У нас же при этом были постоянные проблемы с подключением, и, по сути, сервер больше не работал, чем работал. Закончились наши взаимоотношения тем, что в какой-то момент без предупреждения она отключила нас. Хорошо, что у нас были бэкапы.
И хотя часть людей донатила прямо в оффлайн, поддерживая нас и говоря — мне вообще ничего не надо, но вот вам на решение проблем, денег осталось совсем мало. Ровно на попробовать еще один заход и найти спасение. Спасением стал окончательный переход во взрослую жизнь — потратив все и добавив из своего кармана мы купили свой первый стоечный сервер, и отвезли его в один из немногих на тот момент Tier 3 датацентров Москвы, который предоставлял защиту от атак.
Платили мы там порядка 10к рублей в месяц, но зато после нескольких недель очень нестабильной работы все наконец-то нормализовалось. Как позже сказали в ДЦ, на пиках нам прилетало более 15 гигабит в секунду UDP-флуда с десятков тысяч адресов, помимо еще отдельных атак на порт сервера. По состоянию на 10 лет назад — это было весьма прилично.
Одновременно с этим, смахивая пот со лба, шел поиск нормального кодера в команду. И снова один из игроков посоветовал обратиться к «хорошему парню» и поговорить. У него так же был свой сервер в настоящем и несколько в прошлом. Я грустно вздохнул после череды грабель, но делать было нечего, и я списался с ним. Разговор буквально начался так:
- Привет, мне дали твою аську. А еще я создал домен твоего сервера, но в. ru, и часть твоего трафика идет ко мне. В качестве знакомства, давай я поставлю переадресацию на тебя?
- Привет, о, я знаю тебя. А еще я слил БД твоего кривого магазина из прошлого века, и у меня есть почты твоих донатеров, давай в качестве знакомства я не буду спамить на них?
Посмотрев наш код, он спросил следующее — а откуда у тебя эти куски? Я говорю — вот, работал с парнем. А ты знаешь, сколько людей он кинул? И что эти куски кода — тоже украдены? В общем, история прояснилась окончательно. По мимо рисовок на сервере у себя, наш прошлый парень так же разводил админов, получая доступ к кодовой базе, и продавал оттуда все, что можно продать. Бонусом — его ищут несколько людей у себя в городе, потому что их развели на деньги. Из плюсов этой истории — к нам перекочевала часть кода с сервера человека-легенды в комьюнити, который в соло в свое время сделал больше, чем все комьюнити всех эмуляторов на тот момент, насчитывающее несколько десятков тысяч человек, но чей сервер к моменту нашего старта уже был закрыт.
Минусом стало то, что, прошерстив по нашим пользователям и знакомым-знакомых, стало понятно, что атаки, которые к слову еще шли на тот момент, были организованы им, в отместку за упавший онлайн у него и то, что развести нас не успели. После чего произошла интересная ситуация, которая в итоге привела к закрытию все еще работающего сервера этого человека. Как-то, когда меня спрашивали, кто и за что нас досит, я сказал, что по тому, что удалось узнать, ситуация выглядит «вот так и так». Буквально вечером того же дня у парня упал сайт и сервер, еще через три дня он написал мне, и попросил прекратить досить его, а он «поможет с тем, чтобы атаки на нас закончились». На этом кровавые разборки вест и ист сайда прекратились, но мы выжили, а он нет.
Наконец-то настало затишье. Я с большим удовольствием тратил все наши деньги на нового кодера, а он с большим удовольствием вносил нововведения и правки. Отличительной особенностью стало то, что в коем-то веке, все, что попадало на сервер действительно тестировалось, и проблем на лайф-сервере было совсем мало. Плюс были приняты некоторые решения, из разряда «честных» — об удалении неактивных персонажей, с геймтаймом менее 15 минут, либо без заходов в игру в течении 3х месяцев (если геймтайм был больше). Это позволило держать цифры реальными, и не отображать фиктивную информацию, которая так активно «набивалась» у многих конкурентов. Введено ограничение на количество одновременно запущенных окон с одного IP, что также значительно повлияло на «фиктивность» онлайна в лучшую сторону. Минусом стало то, что после чистки одноразовых учеток, наши псевдо 20к учетных записей превратились в настоящие 10к.Плюс к этому, мы ввели поддержку 3D клиента игры, на что ушло достаточно много времени. Не обошлось и без проблем, первую неделю сервер работал достаточно нестабильно, из-за закравшейся ошибки, связанной с обработкой подключений через этот клиент. Забегая вперед, скажу, что за годы его поддержка и работоспособность была доведена до состояния, которое не имеет аналогов ни на одном действующем или когда-либо работающем сервере, кроме непосредственно официального. Ортодоксальный подход — это игра на классическом 2D который и проповедуют все, но мы решили, что должен быть выбор.
Ну а год мы закончили на высокой ноте — зимой было проведено первое в истории российско-украинского (а может и в мире) комьюнити Ультимы Онлайн слияние двух крупных шардов от разных админов с разной аудиторией, с переносом и сохранением персонажей, игрового прогресса и имущества. Второй сервер принадлежал нашему новому кодеру, у которого на тот момент не было уже ни сил, ни времени поддерживать крупный и работающий сервер на плаву, и на должном уровне. Слиянию предшествовала долгая подготовка и переговоры на уровне администраций проектов, ведь все должно было пройти максимально гладко, как для переносимых игроков, так и для коренных жителей сервера. Была проделана очень большая работа, занявшая около месяца, учтены особенности и различия обеих площадок. Так, шард Heaven's Gate (loveuo) стал частью Inceptum.
В середине января, спустя примерно месяц после объединения, фиксируется максимальный за все время среди всех российских и украинских серверов ненакрученный (рисованный) онлайн. Знаю я это потому, что за годы много раз беседовал с настоящими и бывшими админами, и прекрасно знаю, что реальный живой онлайн с тем, который указан на сайтах не имеет вообще ничего общего. Поэтому настоящий онлайн на многих серверах мне был известен из первых рук. Тем временем, счетчик онлайна более получаса держится на отметке в пол тысячи, часть сторонних сервисов по проверке онлайна фиксирует у себя результат в 516. Живой онлайн в это время показывает порядка 120 человек с оригинальными ip-адресами. Сервер держится в топ 3 мира среди всех остальных площадок ультимы.С онлайном пришли и ошибки. Маунты превращающиеся в доски для крафта, дельфины, плавающие по суше, удаление всех вещей из банка персонажа, перчатки стирающие чара, турниры, превращающиеся из 1 на 1 в FFA из-за багов, смерти в сейф-зонах.
Но все это были ошибки с нашей стороны, которые как правило, появлялись сразу после крупных обновлений и устранялись в тот же день. А еще были ошибки, которые намеренно искали наши пользователи, и которые были весьма интересными в реализации и сложными для понимания и отслеживания с нашей стороны. Тут надо пояснить, что понять, как работает ошибка, и исправить ошибку — это разные вещи. Исправить баг можно даже без понимания того, откуда, как и почему он появился. Иногда без понимания — через костыли. И все будет работать нормально. Но я всегда был против такого подхода, и мы всегда разбирались, как, что и почему у нас происходило. Иногда на это уходили недели.
Вот лишь некоторые из них — однажды сервер упал со странной ошибкой, разобравшись в которой, стало понятно, что кто-то отправил специально сформированный пакет, который говорил задействовать 65-ое по счету заклинание из книги магии. Но их в игре и данной книге всего 64. Однако никаких проверок на то, что кто-то может попробовать применить, скажем 65, не было. Не было их потому, что никаким образом в игре этого сделать не получится. Поэтому сервер честно пытался обработать несуществующее заклинание и падал. А как-то раз мы не могли разобраться в том, каким образом у нас умирает несуществующий моб, что так же приводило к крашу сервера.
Лишь спустя продолжительное время в попытках отловить баг, ситуация прояснилась — данный моб с небольшим шансом умел псевдо-закапываться в землю. Делалось это через исчезновение моба, и его новый спавн в нужной точке. Но однажды совпало так, что игрок успел повесить дот яда на моба, и тот исчез, «закопавшись». Однако таймер яда никуда не исчез, и продолжал свой отсчет, итогом которого стала попытка убийства жука, которого к тому моменту уже не существовало. Еще случай — мы нашли игрока, который бегал по т.н. «грин зоне» области карты, которая является тестовой, игроки к ней доступа не имеют (обычно можно найти много всего интересного или сильно нажиться в зависимости от того, что там тестируют и размещают админы конкретных шардов). Однако наш — вполне себе имел. Дело было вот в чем — перед данным участком карты, по краям с одной из сторон, шел густой лес из деревьев, которые непроходимы для персонажей. Однако в игре есть заклинание телепортации, которое позволяет чару прыгать на небольшие расстояния в свободную зону, на которой он может поместиться.
Так вот, из-за допущенных разработчиками клиента игры ошибок, именно на том клочке леса и на очень редких деревьях можно было пролететь через просветы между деревьями с помощью телепортов и вставать на клетки, стоя чуть выше основания ствола. Спустя множество попыток, человек определил путь, финальным скачком по которому был прыжок за границы доступной простому игроку карты. Надо сказать, что до сих пор на 95% работающих серверов этот путь не закрыт. А у нас в его конце лежит книга, нажав на которую открывается браузер с этим видео:
А еще в какой-то момент, у нас сработал один из триггеров системы безопасности (вы помните про логи, да?) — в мире появился предмет, который продается ингейм со специальных камней-магазинов. Но проблема заключалась в том, что куплен он не был, тем не менее, он точно был с такого камня. Разобравшись в логах, мы нашли персонажа, которому эту удалось. Однако понять каким образом это было сделано мы до сих пор не могли, а человек был не дурак, и не спешил повторять свои подвиги. В итоге телепортировав его в тюрьму, и появившись перед ним, я начал грозно вопрошать — жизнь или бан? Человек, ничего не понимая ответил по-испански.
В конечном счете с помощью общения в скайпе и гугл-транслита, оказалось, что схема была следующей — человек предположил, что для данного камня было некое админ-меню, ведь как-то мы добавляем туда товары. Дальше он предположил, что, возможно перебрав все ID кнопок, которые гипотетически могли бы быть задействованы в меню и прожав на это айди мимо клиента игры (ведь физически оно не отображалось), ему удастся добиться какого-то эффекта в плане взаимодействия с камнем на уровне выше плеерского. Так вот, в чем заключалась ошибка — если меню было вызвано администратором, оно отображало кнопку для управления товарами ингейм. Если же меню было вызвано плеером, кнопки оно не отображало, но технически меню оставалось все тем же. Так вот, проверка на уровень прав у нас использовалась только на моменте отображения кнопки, но не на ее фактическое нажатие. И это было единственное такое меню, где мы похоже когда-то забыли добавить многоуровневую проверку, а испанец, судя по всему, перетыкал хитрым скриптом уже с сотню окошек, пока не дошел до момента, при котором его подход наконец-то сработал. Как вы, наверное, уже догадались — скриптом путем перебора айди кнопок, он прожал на отсутствующую для него кнопку управления данным типом вендоров, и открыл админ-панель, с которой легко мог взаимодействовать, ведь проверки именно на это не было.
Кроме онлайна, разумеется, пришли и лишние деньги. И, как и всегда — они шли в дело. Впервые полностью, а не кусками, были обновлены сайт и форум портала с полной сменой CMS (веб-движок портала и сайта) и версий всего на свете, от PHP до MySQL. Все было сделано с нуля, базы и аккаунты были конвертированы и перенесены. На этом моменте всё легаси, что у нас имелось, было снесено и заменено новыми современными решениями, по причине того, что количество костылей, заставляющих наши старые движки работать и взаимодействовать друг с другом уже превышало все немыслимые значения. Шаред хостинг был заменен выделенным железом. Плюс к этому был заказан и полностью переработан дизайн и цветовая гамма сайта, а протокол сменился на защищенный — появился «зеленый» замочек https. И надо сказать, работало все это очень хреново и медленно по сравнению с тем, что настраивалось и оптимизировалось на протяжении всех этих лет.
Люди спрашивали — как можно было сделать настолько плохо, что новый форум работает раз в 10 медленнее старого. Грустно осознавая, что все наши труды на которые был потрачен вагон денег и нервов, идут ко дну в потоке негативных отзывов о работе сайта, я вышел на одного очень известного человека в\на Украине, работающего на очень хорошей должности в айти, обладавшим всеми возможными мировыми сертификатами всех возможных уровней от всех возможных вендоров (и они у него действительно были). Запросив достаточно крупную сумму денег, он сказал — это все для детей, я сделал бы это за 5 минут еще в 80-х. После чего на протяжении часа рассказывал мне, насколько он хорош, и насколько нам повезло, что уделяет свой час за такую смешную сумму, и насколько глупо вообще обращаться с такими пустяками к таким мастодонтам как он. Следующие пол часа я слушал, над насколько серьезными проектами он работал, и какие серьезные задачи он решал у очень серьезных людей. Я честно терпел, хотя к тому моменту от количества высокомерия и несущественности разговора относительно конкретно моей проблемы уже начал потихоньку выходить из себя.
В общем, как, наверное, вы уже поняли — по итогу он не сделал ничего, хотя пытался. Сказав что-то вроде — у вас ребята проблемы с производительностью железа, он пропал в тумане истории с моими деньгами и шлейфом пафоса. История же закончилась тем, что, взяв себя в руки, и открыв гугл, за несколько дней я самостоятельно решил все проблемы, оптимизировав наш centOS с сайтом до состояния, при котором все стало работать по скорости так же, как и некогда легаси-костыли.
И наконец, под конец года, понимая, что с резко возросшей нагрузкой глупо класть все яйца в одну корзину мы постарались добиться максимальной «распределенности» инфраструктуры проекта. Нужно было исключить узкие места, с которыми время от времени возникали проблемы, выбирая лучшие из доступных решений. До этого года мы размещались только в России. А зимой уже были «разбросаны» по России, США и Франции. В каждой из этих стран находится хотя бы одна часть, отвечающая за работоспособность проекта в целом — сервер, виртуальные машины, бэкапы, DNS-резолверы и иже с ним.
Год начался с уведомления от нашего датацентра, в котором говорилось следующее — мы были вынуждены увеличить стоимость с 10к рублей до 20к в месяц за размещение вашего оборудования (для сравнения — в бюджетных ДЦ за эти деньги можно было размещать от 15 до 20 одноюнитовых серверов в месяц). На мои вопросы в поддержку о том, с чем связано увеличение цены вдвое, через день пришел ответ с почты на другом домене, в котором уже был указано совсем другое название компании. Я тогда подумал — нужно срочно искать альтернативы, потому что платить суммарно от 250 тысяч в год очень не хочется, особенно когда начинаются очень мутные ситуации. Пока искал место, в которое мы будем мигрировать (что занимало время, поскольку нам нужна была хорошая защита) пришло еще одно письмо.
Из того, что удалось понять — сменился собственник (в реалиях нашей страны означает — начался дележ), и соответственно все оборудование ЦОД-а текущим руководством планировалось перевозить в другой, арендуя там стойки. Причем клиентов о том, хотят ли они этого, никто не спросил. Было что-то вида — грузовик приедет в полночь, и увезет ваше железо куда-то там, поздравляем, у вас будет даунтайм. На следующий день я поехал на такси через пол-Москвы забирать наше железо. И тут сюрприз! Сама площадка и все оборудование, как оказалось в последствии, находилась на территории, принадлежащей российским космических системам (дочка Роскосмоса).
Каким образом у них на территории и на их пулах адресов оказался датацентр — я думаю, объяснять не будем, все уже взрослые. Однако, когда начался движ, возник классический любовный треугольник, в котором все хотели получить как можно больше. С одной стороны Роскосмос, на мощностях которого и территории работал один из крупнейших ДЦ Москвы. Со второй — собственник, который уже давно находился за границей по причине заведенных на него уголовных дел в РФ. Ну и наконец с третьей — ребята, у которых была генеральная доверенность от собственника на весь движняк от его имени, но в какой-то момент они решили, что сами по себе. Для простых клиентов ситуация была простой — забрать свое железо нельзя, потому что никого с железом не выпускают и не впускают, а ФСБ шерстит все, что движется.
Дальше был увлекательный квест, в котором я ездил в магазин и просил распечатать там хоть какие-то чеки по железу (сервер собирался из комплектующих), вылавливал мужика с доверенностью на доверенность, у которого прям в машине был принтер, на котором мне распечатали документы и поставил печать о том, что я действительно у них размещался, общение с минишишкой из РКС, который в какой-то момент сказал «слушай, ты ведь админ, вроде адекватный, давай работать к нам, а то все освободилось, мы решили делать свой датацентр, персонал нужен». Через пару дней я ехал обратно на такси с сервером на заднем сиденье, а таксист, узнав, что это такое, сказал — вкладывать надо в золото. Я вот вложил, и купил машину. Сам же шард к тому моменту уже работал на арендованном сервере в другом ЦОД-е, куда позже и уехал наш физический.
В середине года мы открыли отдельный тест-сервер с самым дорогим и самым рискованным пулом обновлений в нашей истории. Данное обновление разделило шард на эпоху до, и эпоху после, по сути, меняя всю игру. Решено было вводить новую систему крафта с официального сервера — Imbuing. И к нему-же ряд подсистем, так же касающихся вещей — Reforging и Altering. Сложность тут заключалась в том, что на тот момент 3 из 10 крупнейших серверов, которые пытались его ввести закрылись будучи не в состоянии разгрести все последствия ошибок при его введении, остальные 2 потеряли практически весь онлайн и откатили изменения, из-за того, что весь баланс был сломан, и разобраться в его работе до конца они не смогли. А все остальные так далеко никогда и не заходили, работая на аддонах несколькими годами ниже.
Таким образом, нам предстояло сделать то, что до нас еще никто в мире не делал. Ввести сложнейшую систему так, чтобы не заруинить под валом ошибок вообще все.
Ведь все они бы касались непосредственно эквипа игроков, а это — святое. Риски были понятны заранее, но решили делать, потому что дальнейшие развитие одновременно с офф. серверами, не сделай мы этого, становилось невозможным. И выбор стоял между бросаем то, к чему шли 6 лет, или пробуем — либо умирая, либо работая дальше. На разработку только имбуинга было потрачено больше 70к рублей и несколько месяцев тестов до ввода в продакшен на лайф-сервер, и еще пару недель ежедневных рестартов с хот-фиксами уже на лайфе.
По итогу и в техническом плане мы справились отлично, хотя ошибки еще вылезали долгое время, но критических среди них не было. Таким образом, мы стали первым шардом, кто смог ввести действительно систему 1 к 1 с офа, а не подобие (к слову, к нам до сих пор так никто и не приблизился). Но, как и водится — проблемы начались сразу с нескольких сторон. Мы изначально знали, что часть игроков уйдет, и были готовы к небольшому их оттоку. Причина заключалась в том, что в СНГ люди не привыкли играть на серверах Ультимы, которые имеют регулярные обновления. Соответственно, в массе своей игроки ничего не знали о текущем состоянии игры, какой она есть на самом деле. Пока мы вводили правки медленно — у людей было время приспособиться, но и при этом каждый раз нам приходилось объяснять, почему изменения идут на пользу.
Хотя все знали, что мы ставим правки только с официальных серверов (кроме фиксов своих ошибок). Казалось бы, для того, чтобы узнать, что будет установлено у нас завтра, достаточно посмотреть патчнотсы того, что установлено у официалов сегодня. Но естественно никто этого не делал, а вводить постепенно огромное обновление мы не могли, потому что у него всего два состояния — старая система крафта и новая. Новая была существенно лучше, глубже, интереснее, и полезнее для игроков. Но люди не разобравшись говорили следующее — у нас были боты, которые делали все за нас, и мы просто получали готовые вещи, а теперь надо во что-то вникать, что-то фармить, переписывать ботов, нафиг оно нам надо, до свидания. Следующим фактором было то, что на этот год пришлось самое ожесточенное противостояние сразу нескольких крупных гильдий. И любые правки чего угодно воспринимались какой-либо из них в штыки, и как подыгрывание противоборствующей стороне. Доходило до смешного, когда за месяц после нескольких обновлений на форуме появлялись посты от каждой из них, вида: вот это-то наверняка сделано в плюс нашим врагам, они наныли, а администрация сделала! В итоге еще до ввода новой системы мы потеряли одну из крупных гильдий, и онлайн немного просел.
Далее произошла вторая волна дропа онлайна — боты, которые использовались игроками под крафт (в ультиме боты — часть игры, увы) стали бесполезны в новых реалиях и стали выгружаться, что уронило цифровой онлайн процентов на 30.
Видя такое резкое падение онлайна за короткий срок, хотя живой оставался таким же, как и прежде, начали отваливаться люди из паникеров, а за паникерами начали отваливаться и более или менее постоянные игроки. И хотя такие ситуации были для нас не в новинку и всегда контрились, сыграла роль основная причина в виде меня самого. К этому моменту начала сказываться безумная усталость, которая как я потом узнал, называется выгоранием. Почти 6 лет я провел в режиме краба на галерах, и когда все усилия наконец-то переродились в показатели онлайна и деньги, сил уже не оставалось никаких. К этому моменту на сервер уходило от 4 до 10 часов плотной работы каждый день, без выходных (я фрилансил, и время было). И до этого момента все «мы» в рассказе следует понимать как «я».
Отлично помню, как телефон пиликал от уведомлений по донатам каждый день, и в зимний период я мог заработать 100-120к рублей в месяц (что по инфляции и курсу на сегодняшний день в районе 200к). При этом, что для меня было удивительно, радости никакой не было. Вызывало раздражение, потому что напоминало о том, что надо крабить дальше. В одном лице я был и комьюнити менеджером, и тестером, писал ТЗ для кодера, и поддержкой, и эвент-мейкером, и конкурсы проводил, и с техническими проблемами на сайте или по железу разбирался тоже я. Это только то, что приходит на ум, а надо было заниматься еще рекламой, каким-никаким продвижением и т.д. по списку. И если у нас были проблемы с онлайном — они всегда перекрывались все той же рекламой. У нас всегда была статистика за месяц, сколько людей начало, сколько неактивны, и когда линия падала, она всегда догонялась новыми игроками.
Но в этот раз, я подумал — как меня все достало, я только что потратил 70 косарей, а они СНОВА недовольны всем (это кстати отдельная тема для отельного рассказа — если зайти на любой не русскоговорящий сервер или даже взять наших иностранных игроков, они всегда говорят спасибо и поддерживают, славяне же люто ненавидят все, что движется, а если не движется, то двигают и ненавидят). Я больше ни хочу ничего объяснять, и больше не буду ничего делать для того, чтобы перекрывать просадки по онлайну, я больше не буду разжёвывать каждый тикет в саппорте и объяснять, почему у нас все работает правильно на пальцах, я больше не буду сидеть в 30 открытых чатах помогая людям разобраться с тем, о чем они могут прочесть за 5 минут в интернете, если приложат минимум своих усилий, а не моих.
Это не было ежесекундным решением, просто то, что копилось все это время, наконец-то вылилось в режим «мы помещаем детенышей в агрессивную среду реального мира» с «кормим кашей с ложки и читаем сказку на ночь».
Таким образом, собрав все три фактора в то, что называется в EVE Online «фейл-каскадом», мы входили в новый год.
Находясь в порочном круге «забивают игроки, забиваю я, забивают игроки, забиваю я» в какой-то момент возникла ситуация, при которой денег на крупные обновления перестало хватать, при том, что кодеру оплачивалось практически все, что шло с сервера без остатка. Тут надо пояснить, что апдейты мы ставили ровно в том же режиме, как и всегда. И поддержка в виде меня работала, решая проблемы, и в целом все с виду было вполне обычно. Но часть старых игроков не смогла перестроиться на новые рельсы после обновлений, часть ныла, что ушли их друзья, оставшаяся требовала к себе внимания как раньше, которого больше не было. А новые же, приходя на сервер сталкивались с паническими настроениями и думали, зачем вообще им это надо и уходили искать что-то другое для времяпровождения. Да и я все чаще задавался тем же вопросом »зачем мне это надо?».
В один из дней, в котором ничего существенного не происходило, мне написал один из наших постоянных и самых старых игроков (играющий у нас с начала 2011) и спросил — почему ничего не происходит? Давайте сделаю так, чтобы происходило! Речь шла о его предложении кодить для нас. До этого с его стороны была некоторая добровольная помощь, которая заключалась в основном в написании или редактировании FAQ-ов, а также в попытке запустить через меня сервер Майнкрафта (который так и не снискал популярность). По итогу — человек находился на хорошем счету. На вопрос, кодил ли он когда-то под наш эмулятор, был получен ответ — нет, но что тут может быть сложного-то, я делал свой сервер майнича, значит и тут смогу легко вкатиться. Находясь в режиме «с каждым днем я все дальше от бога» и понимая, что скоро денег может перестать хватать не то, что на скриптера, но и на хостинг, я согласился. Сразу оговорив со своей стороны — грядут темные времена, и денег нет и вероятно не будет в ближайшем обозримом будущем, а будет только ответственность, кранчи и ад ради ничего. Проколов палец и подписав контракт, мы начали сотрудничество.
Давая вначале легкие и простые задачи для «вкатиться», и догружая задачами средней тяжести для «почувствуй, силу Люк» под неустанным присмотром нашего постоянного штатного программиста и меня в роли тестера, со временем мы пришли к тому, что человек стал понимать специфику того, над чем и с чем работает. Во всяком случае, так казалось до того момента, пока не встал выбор — либо мы оплачиваем размещение железа, сайта и всей инфраструктуры, либо продолжаем оплачивать работу над развитием сервера в плане кода. С этого момента у нас остается только новый программист, не внесший ни одной серьезной правки самостоятельно.
