Админим сервер Ultima Online 13 лет — первая часть лонга

Собственно, после темы с нашим скриншотом на 50 тысяч персонажей, в комментариях попросили запилить лонг на тему того, как игра которой 25 лет живет сейчас, и в целом рассказать, каково это — треть жизни быть некромантом. Спустя почти год — делаю это.

Админим сервер Ultima Online 13 лет — первая часть лонга

Все это время я являюсь бессменным администратором сервера «Inceptum», работающего по сей день.

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

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

Лонг будет разделен на две части. В первую войдут 9 лет, во вторую — 4 года и эпилог, где я соберу интересные моменты, мысли, и в целом отвечу на вопросы, если они у кого-то будут после прочтения первой части.

Пролог

Очень краткая сводка своими словами для тех, кто не знает (если таковые есть), что это за игра.

Вышла она в конце 1997 года, является онлайн-продолжением легендарной серии, первая игра из которой вышла в 1981 году. Игра представляет собой 2D или 2,5D (в зависимости от клиента) изометрическую MMORPG-песочницу с видом сверху и имеет сеттинг средневековой Англии с магами и драконами. Отличилась, прежде всего, своей свободой действий (по нынешний день еще, пожалуй, нет ни одной мморпг, которая могла бы переплюнуть UO на этом поприще), и, можно сказать, задала тренд для всех мморпг в будущем. В игре не существует понятия уровня персонажа, вместо этого игроку предоставляется возможность прокачивать любой набор навыков на свой выбор, открывая большие возможности для создания разнообразных сборок.

То самое легендарное убийство Лорда Бритиша, и по совместительству персонажа Ричарда Гэрриота, отца-основателя серии. Скриншот довольно баянистый, но ничего лучше с тех пор не придумали (с).<br />
То самое легендарное убийство Лорда Бритиша, и по совместительству персонажа Ричарда Гэрриота, отца-основателя серии. Скриншот довольно баянистый, но ничего лучше с тех пор не придумали (с).

По состоянию на 2023 год 90% современных мморпг не дотягивают по возможностям до Ультимы. Технически — обновляется и сейчас (хотя и довольно вяло – спустя несколько смен разработчиков), имеет 1 живой официальный сервер из 20 с лишним. По моему убеждению, она наравне с EverQuest I является той игрой, которая породила индустрию MMORPG в том виде, в каком она есть сейчас.

Сервер (или как в среде UO принято говорить — шард) я запустил в 2010 году, имея на тот момент 5 лет опыта игры на официальных серверах и еще столько же на пиратских. Катализатором сего действа стало разочарование за русскоговорящий сегмент шардов (сиреч сегмент СНГ по состоянию, когда оно было максимально актуальным). Я играл на официальном, играл на качественных американских пиратских, потом возвращался на пиратские же российско-украинские, и видел там боль, отчаяние и уныние. Все сервера, работающие на тот момент, не имели совершенно ничего общего с этой игрой, кроме, собственно, самого клиента. Стабильность их работы была весьма посредственной, а люди понятия не имели, на что похож оригинал. Забегая вперед, скажу — картина за этот десяток с лишним лет не поменялась совершенно.

2010 год — Вступление с третьей попытки

Началось все в начале 2010 года, с праздного интереса — попробовать снова поиграть вместе с братом на каком-то из новых шардов, после недолгого перерыва. Спустя нн-ое время, проведенное в непродолжительных скитаниях по проектам, я решился на авантюру. Было решено, что поиграем мы теперь на собственном сервере. Была скачана сборка RunUO 1.0 (популярный на тот момент эмулятор, и первое, что попалось из движков и было на слуху). На ней был с грехом пополам поднят сервер и заселен мир, причем предшествовало этому чтение огромного количества гайдов и мануалов, ибо 1.0 — это настоящий кошмар. Особенно, когда совершенно ничего в этом не понимаешь. Юзер френдли? Увольте. Через пару дней сервер был перемещен на свое выделенное, если можно так сказать, железо. Работала наша сборка на вечно вылетающем USB-ADSL модеме с динамическим IP. Играть кое-как было можно, некое удовлетворение определенно присутствовало.

Однако о полноценной игре речи, разумеется, не шло. Все оказалось несколько сложнее, чем мы предполагали. В частности — практически пустой мир, и неработающее все. Понуро опустив голову, руки и все, что стояло, снова решили выбирать, где бы поиграть. Осложнялось все тем, что у нас к тому моменту за плечами было уже несколько лет игры и на пиратках, и на официальных серверах. А после официалов — было сложно играть в «пиратскую» Ультиму, но мы снова решили сделать это.

Российские серверы были отброшены сразу же, по причине старых (годами не обновляющихся) сборок, отсутствия поддержки как таковой, несбалансированности доната, рисованных предметов, и конечно же — накрученного онлайна. Также стоит учитывать кипу запрещенных, причем только на словах, программ. Тут надо пояснить, что на эмуляторе Sphere (на котором работало, да и работает подавляющее количество российских и украинских серверов) их применение, как минимум, приводит к печальным последствиям для игрового процесса, а закрывать подобные дыры могут единицы проектов (подробнее об этом будет по ходу рассказа). Исходя из этого, ориентиром для игры были выбраны иностранные площадки. Такой ситуации как на российских (по большому счету на всех, на территории бывшего СССР) — там, в массе своей, не было. В итоге был выбран один из самых крупных и известных американских серверов того времени, назовем его «Х».

После месяца игры на нем стало понятно, что, несмотря на высокий онлайн — сказывается отсутствие свободного владения английским языком и сбитая тайм-зона, т.к. все эвенты ориентировались на другое время, на которое и приходился пик активности игроков. Чтобы как-то нивелировать эти недочеты, было решено создать русскоговорящую гильдию, которая, в скором времени, стала крупнейшей подобной гильдией на сервере. Однако, из-за недостаточного притока игроков, продержались мы не так долго — старые люди прекращали играть, а новых вместо них взять было неоткуда.

Снова встал вопрос — что делать дальше. Мы решили вернуться к нашей авантюре и попробовать поднять свой сервер, на этот раз уже полноценный, взяться за дело серьезно (как мы это себе тогда представляли).

Когда ты полон пиратского задора, но не видишь следующих 13 лет.

Поставленная задача была следующей — постараться сделать шард, имеющий качество иностранных топовых проектов, но расположенный в России, и работающий для игроков из ex-СССР, в первую очередь. Минимальный опыт, пусть и всего месячный, у нас уже был. И главное — было желание показать, как оно должно быть.

На этот раз была скачана более свежая сборка эмулятора RunUO (на тот момент как раз была выпущена версия 2.0). Работа над фиксами, тестами и исправлениями заняла 2 месяца каждодневной работы над скриптами. Изюминкой на торте было то, что программировать из нас не умел никто, а процесс представлял собой примерно следующее — читаешь форум сутки, 30% делаешь сам, остальные 70% за тебя делает какой-то парень с той стороны океана, который согласился за спасибо тебе накидать две строчки кода за минуту, которые «точно» сделают то, что ты хочешь. Еще спустя некоторое время наша чудо-сборка была закончена — сервер работал с 6-ой версией клиента и неполным дополнением ML (и то, и то — последнее на тот момент). Сверху того, что и так еле работало, мы добавили кастомные участки карты путем патчей оригинального клиента.

После, чтобы все было как у взрослых (на тот момент все просто выкладывали клиенты в архивах) — была создана первая версия инсталлятора. В начале сентября был поднят сайт на бесплатном хостинге (привет, «narod.ru»), на котором была выложена информация по подключению и ссылка на загрузку игры. А уже в конце сентября — мы переехали на полноценный платный хостинг и купили себе домен. Само же подключение к нам работало через сервис no-ip (как и прежде, адреса были динамические — все стояло дома). Уже тогда вы могли зайти к нам и побегать по молодому Миру (сервер тогда носил имя «The World»). А выделенным железом под сервер стал Asus Eee PC 701, разогнанный до 1100Mhz со стоковых 900, с замененной плашкой памяти на 2гб со стоковых 512мб, 4GB SSD — и это вместе с ОС.

Картинка из интернета, но отчетливо помню, как стоял в магазине и выбирал между нормальным ноутбуком от MSI который по цене был на 1000 дороже и этим. К сожалению, тогда мне показалось купить маленький недо-ноутбук хорошей идеей.<br />
Картинка из интернета, но отчетливо помню, как стоял в магазине и выбирал между нормальным ноутбуком от MSI который по цене был на 1000 дороже и этим. К сожалению, тогда мне показалось купить маленький недо-ноутбук хорошей идеей.

Казалось бы, вот оно — счастье. Мы приложили много усилий, потратили время, небольшую щепотку денег, замешали все это в котле амбиций и стремлений к великому светлому будущему и получили на выходе что? Внутренний перфекционист во мне ответил тогда так — эталонный кусок отборного российского сервера. Ровно ничем не отличающийся от остальных, такой же кривой, лагающий, вылетающий и склепанный на коленке такими же додиками, которые ни в чем ничего не понимают. Стало понятно, что надо что-то менять. И мы поменяли.

2011 год – Вяло набираем обороты

Начать было решено с железа, ибо несчастный нетбук не вывозил совсем, что приводило порой к фризам игрового мира и очень долгим его сохранениям, несмотря на SSD (на всех серверах, раз в отведенное время, происходит т.н. «сейв», все на экране на несколько секунд замирает, появляется соотв. надпись, после чего все возобновляется с того же места). Поэтому дрожавшей рукой я открыл «Молоток» — ныне почивший интернет-аукцион, а не журнал с Бритни Спирс. Покопавшись по выставленным лотам — нашел подходящий пентиум 4 с HT в желтеющем корпусе, бывшим когда-то белым, с 2гб оперативной памяти и IDE жестким диском на 40гб. Мечта? Мечта. Отдав по итогу 2500р, установив в него разваливающийся (в прямом смысле, бэд-блоков в нем было больше, чем песчинок на пляже) макстор вторым диском под надежные бэкапы, заказав прямой выделенный IP у провайдера и поставив 2003 серверную винду, я получил наш первый сервер, собранный и купленный отдельно под Ультиму.

Дальше с горем пополам был изменен дизайн сайта с «интернет 89-го» до «интернет 90-х», и склепан наш первый форум. До сих пор помню эти сто вариантов дизайна каждый за 3 минуты — тогда появилось ощущение, что я без 5 минут Тема Лебедев. Сделано все было на невероятно древней версии движка PHP-Fusion о котором, наверное, никто уже и не знает. И конечно, у нас был курсор в виде меча.

Единственный сохранившийся скриншот первой версии дизайна сайта и форума.<br />
Единственный сохранившийся скриншот первой версии дизайна сайта и форума.

После чего встал вопрос — что делать со скриптами и сборкой шарда в ситуации, при которой кодить из нас двоих никто не умеет. На том же форуме эмулятора был найден программист (известный в то время в комьюнити человек, как потом оказалось, в последние годы пропавший с радаров после переезда в штаты), который в свое свободное время и абсолютно безвозмездно помогал мне не испортить все окончательно, пытаясь меня чему-то научить. Подробно объяснял, где и что у нас сломалось, как это починить, заодно выполняя те ТЗ, которые я ему давал. Во многом, благодаря этому человеку сервер продержался тот год и не был закрыт. Денег оплачивать его объем работ не было, и даже несколько лет спустя, когда они появились, он всегда отказывался, в том числе и на предложения оплатить его помощь за 2011. В конечном итоге, на сервере ему был установлен памятник со словами благодарности, который стоит и по сей день. А благодарить, определенно, было за что.

Что из себя представляла работа сервера в то время? Первое воспоминание — я хочу спать. Все сильно гудело и стояло в метре от кровати под столом, потому что больше ставить железо было некуда. Поэтому засыпал и просыпался я под хруст макстора, осыпающего последние остатки напыления с пластин и гул 80мм кулеров, молотящих на полную. А еще сборка постоянно софтварно падала.

Каждую неделю, каждый день, иногда каждый час у нас были проблемы. Иногда часто, иногда — очень часто. Автоматически она не перезапускалась, уведомлений (т.н. вотчдог) о падениях никаких не было. Иногда я просыпался от смс или звонка кого-то из игроков, которые говорили — Алексей, ну е мое, арбайтен. Я просыпался в 4 утра и сонно пытался что-то там натыкать, чтобы сервер снова был онлайн. Чтобы грустно повторить это через пол часа. Происходило так потому, что тестов перед накаткой обновлений не было, как и четкого понимая, как одни правки влияют на, казалось бы, совершенно несвязанные с ними элементы игры. Онлайн так же был плавающий от случая к случаю, что приводило к ситуациям, при которых ошибки могли вылезать спустя несколько месяцев, оставаясь никем не найденными и накапливаясь в геометрической прогрессии.

Так шел наш второй год: под треск сыпящего бэд-блоками винта у меня под столом, и с падающим сервером, лагающем при любой серьезной нагрузке. Как ни странно, ближе к середине года, когда руки уже опускались, и вставать каждый день для того, чтобы вручную поднять сервер в 4 утра стало надоедать — начал появляться первый круглосуточный постоянный онлайн. Людям нравилось, что с ними общаются в режиме реального времени, и они не ждут ответов поддержки неделями.

Архивный скриншот того года: везу игроков собственноручно на корабле на какой-то эвент. Лакшери кресла были выданы в процессе, чтобы люди не стояли.<br />
Архивный скриншот того года: везу игроков собственноручно на корабле на какой-то эвент. Лакшери кресла были выданы в процессе, чтобы люди не стояли.

С приростом онлайна стало понятно, что нужно что-то делать с донатом, которого до этого момента не было вообще. Расходы росли, время тратилось, а монетизации, без которой невозможно хоть какое-то осмысленное развитие нет даже в зародыше. Вдобавок было понимание, что нужен постоянный кодер на зарплате доступный в любой момент и в перспективе апгрейд железа на более взрослое. Делать монетизацию как была в то время на массе СНГ-серверов очень не хотелось, потому что вин-ту-плей — это путь в никуда и на пару месяцев. Потому, как и все взрослые люди, мы сделали донат без предметов, дающих какие-либо статы и влияющих на баланс. Вернее сказать, что такие предметы все же были, но все из них можно было быстро получить в игре и их было меньше 5 (сегодняшний пример — это newbie сеты на первые пару недель, которые можно набить и так за пару часов в первом же данже или купить за внутриигровую валюту, фарм которой займет час). В основном в донате была внешка, маунты, краски и ускорение прокачки. О том, что мы собираемся вводить монетизацию, мы заранее объявили на форуме и люди не были против.

Однако, тут было два момента, которые были ложкой дёгтя:

- Первый заключался в том, что, как стало понятно спустя несколько лет, мы налажали с рядом предметов. В тот момент их ввод в магазин пожертвований казался логичным (более того — игроки просили их сами), т.к. предметы исправляли перекосы по механикам в игре, которые были из-за того, что сервер не полностью соответствовал официальному и у нас не хватало ряда предметов и механик, которые уравнивали бы игровые классы между собой должным образом. В частности, одним из таких предметов был свиток, позволяющий не снимать лук одновременно с тем, как персонаж пьет зелья. Почему это важно — станет понятно по ходу рассказа;

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

Таким образом, худо-бедно, но под конец года мы накопили небольшую сумму, которую было решено потратить на то, чтобы добавить в команду штатного программиста и наконец-то перестать дергать безвозмездно нам помогающего. Поспрашивав по игрокам, мы вышли на человека, списались с ним, все обговорили — и вуаля. Кодер описал все красиво, сразу же предложил достаточно много необходимых для нашего роста систем (у него был и свой сервер, где все это прошло обкатку) за вменяемые деньги, автоматизированную систему приема платежей и ингейм-магазин(и еще ряд всего того, без чего сейчас невозможно представить любую современную MMO). Мы оплатили первые из них, и не без проблем, но успешно, они перекочевали на нашу сборку шарда. Казалось бы, все шло хорошо, и мы наконец-то нащупали пусть и вязкую, но почву под ногами. Однако на тот момент мы не знали, кем был этот человек, и какими проблемами знакомство с ним обернется в дальнейшем.

2012 год — Через тернии к логам

Год начался с понимания нескольких вещей. Во-первых, с ростом онлайна стали понятны все узкие моменты в нашей организации рабочего процесса. Во-вторых, мой двоюродный брат, который все это время помогал с ответами на форуме, окончательно отвалился по причине новой работы, которая съедала всё свободное время. Таким образом, я остался один, а нагрузка и человеко-часы возросли кратно (программиста мы не считаем, он с людьми не работал) .

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

Сохранившийся скриншот из моей аськи, который транслирует боль оказания поддержки из прошлого десятилетия.<br />
Сохранившийся скриншот из моей аськи, который транслирует боль оказания поддержки из прошлого десятилетия.

В какой-то момент, когда я понял, что не могу найти очередное сообщение об очередной ошибке (потому что не помню, кто и когда и куда из 20 с лишним людей писавших мне сегодня его отправил), я задумался над тем, что это как-то ненормально и надо что-то делать. Спустя неделю у нас появился свой HelpDesk и отдельный поддомен поддержки, который используется и по сей день. Другими словами, вся поддержка была переведена на систему тикетов с разбивкой по категориям — с нормальным поиском, каталогизацией, выборкой и статистикой.

Следующим шагом стало написание базового FAQ для начинающих игроков, создание импровизированной базы знаний, где было решение самых часто возникающих ошибок технического план, а также было произведено очередное небольшое обновление сайта. Самыми существенными вещами в нем стал переезд на новый домен, потому что старый был откровенно плох (он практически не отличался от доменов 5-6 популярных на тот момент серверов из-за того, что была определённая мода касающаяся нейминга) .

Это несколько, пусть и не сильно, снизило нагрузку на меня вне игры, но нагрузка в игре росла (что-то заселить, где-то исправить, задекорировать, провести какой-то эвент, и т.д.). Стало ясно, что нужно брать ГМ-ов, а брать их кроме как не из игроков — неоткуда. На примете было два человека, оба они по мере своих возможностей помогали по мелочи (что-то тестировали, активно сообщали об ошибках, объясняли, что к чему, новичкам) и в целом были в режиме «братва рвется к власти».

Предложив попробовать себя в новой роли, было предложено сначала первому. Сразу было оговорено: работа в его свободное время, деньги если и будут — их будет очень мало, поэтому в большей степени рассчитывать придется на внутриигровую донат-валюту и собственную вовлеченность. Первый месяц все было хорошо, я досконально проверял за человеком его работу, все рассказывал и объяснял, да и общение шло в позитивном ключе. На второй месяц, когда мой контроль с уровня «угроза уровня мстителей» опустился до «сам разберется» начали проявляться тревожные звоночки. В частности, эвенты у нас тогда проходили в большей своей массе в т.н. «ручном» режиме, т.е. всю работу от подготовки мероприятия до выдачи призов за него делала администрация руками. Переместить игроков куда-то, построить зону, создать босса, убрать где-то стенку, поставить порталы и т.д., все это делалось на ходу в игре. И стали возникать ситуации, при которых в случае победы определенной гильдии, или же участника из нее, призы были значительно лучше, чем у остальных в подобных ситуациях. Причем лучше до уровня «аналогов в мире нет», и касалось это не «внешки», а статов предмета.

Списав это на случайность и неопытность (да-да), я запретил так делать, исправив предметы с нескольких последних мероприятий и последив за человеком еще пару недель.

Это я в глазах ГМ-а, когда заявил ему, что он видимо ошибся несколько раз подряд и выдал не то.<br />
Это я в глазах ГМ-а, когда заявил ему, что он видимо ошибся несколько раз подряд и выдал не то.

Все шло вроде-бы хорошо, но «улицы шептали» что как-то подозрительно много на вендорах стало крафтовых предметов с хорошими параметрами, получить которые можно только с очень редких т.н. валоритовых инструментов, использующихся при производстве вещей. Изюминка была в том, что шанс на прок параметров так, чтобы они были действительно хороши и востребованы, вкупе с редкостью самих инструментов для крафта, делал массовое появление таких вещей практически невозможным. Однако, проверка показала, что они есть, и их явно больше, чем позволяла статистка. Ситуация осложнялась тем, что — сюрприз, а логов то и нет. Вообще никаких и вообще ни для чего. Нет их потому, что их просто нет у эмуляторов ультимы. Конечно, есть базовые логи, скажем, на падения сервера, но никаких логов отслеживания чего-либо из того, что делает игрок просто нет.

В итоге, с грехом пополам, через внутриигровые команды, которые умеют понимать несложные формулы в виде «больше-меньше-равно» были найдены несколько предметов, на которых количество «использований» с обычных 5-10 было выставлено на over9000 в прямом смысле. Дальше было снятие прав с ГМ-а и бан всех персонажей, и очень потная неделя, которая была потрачена на чистку выброшенных на рынок вещей в ручном режиме, т.к. многие успели продаться уже по десятому кругу, а логов, напоминаю, никаких не было. Это было первым ударом ножа в псину, но виновата тут была псина, потому что нужно было предусматривать такой ход развития событий сразу, а не разбираться в последствиях, не имея на то инструментария после.

Вторым мини-ударом ножа в псину стала попытка привлечь второго человека на эту же должность. Закончилось всё тем, что прямо под моим незримым присмотром он убрал босса под землю для того, чтобы пришедшая на место гильдия-конкурент его не нашла, а нашла гильдия, в которой состоял данный персонаж. Бонусом стало то, что это произошло в момент, когда люди могли все это видеть своими глазами и стояли рядом. Что было дальше понятно — чемодан, вокзал, бан и мои неловкие оправдания перед теми, кто в тот день пошел этого босса фармить.

Тут надо уточнить для понимания ситуации, что сам я был не школьником уже давно, и люди все были взрослые и играющие у нас больше года. У них была работа, у кого-то дети, и вполне адекватные при первом рассмотрении.

Таким образом, после двух фейлов подряд и будучи в миллиметре от непоправимого репутационного ущерба (люди уже начали шептаться), была принята следующая доктрина, которой мы придерживаемся и сейчас — никаких посторонних людей с правами выше уровня игрока, только автоматика. И логи. Много логов. Надо сказать, что логирование всего уже стало внутренним мемом, и иногда возникают ситуации вида — «Где у нас логи падения шестой капли вина в бокал игрока полтора года назад? Нигде? Срочно сделать!».

Но кроме неудач, были и успехи. Так мы смогли собрать и отложить (что главное) с пожертвований (сиреч, доната) к концу года 40к рублей, на которые был закуплен наш новый сервер. Это было все еще десктопное железо, но на тот момент из всех серверов Ultima Online в мире, он входил в пятерку самых мощных: AMD FX-8150, 32ГБ памяти, и два новеньких винта, установленных в софтварный рейд под бэкапы, плюс SSD непосредственно для работы сервера. А еще роскошный корпус форм-фактора Big Tower с толстой сталью, способной защищать от бронебойных снарядов.

Архивное фото того самого сервера в момент сборки. Позднее куллер был заменен на башенный.<br />
Архивное фото того самого сервера в момент сборки. Позднее куллер был заменен на башенный.

Гордость тогда разбирала, ведь это была первая покупка на заработанные с сервера деньги, пусть и потраченные обратно на сам сервер. Но главное было ощущение — вот оно, вот так выглядит прогресс. А накопить такую сумму мы смогли не только благодаря росту онлайна как такового, но и благодаря тому, что наконец-то с ручного неудобного формата приобретения-выдачи ингейм ништяков мы перешли на полностью автоматизированную «донатку».

А еще мы объявили конкурс на смену названия шарда. Который до сих пор так и назывался «The World», из-за чего возникали ощутимые проблемы с продвижением, ведь разных «World»-ов было выше крыши. Победил вариант «Inceptum», что переводится с латыни как «Начало». В этом же году была проведена работа над созданием, наполнением и модерированием наших групп в социальных сетях, которых у нас до сего момента не было. И вместе с социальными сетями для привлечения русскоговорящей аудитории мы даже попытались привлечь иностранных игроков, создав одностраничный англоязычный отдельный сайт на иностранном домене.

Вкупе все усилия приводили к тому, что сервер постепенно обретал имя и становился известным широкому кругу игроков, количество учетных записей вплотную приблизилось к 5000. Да и стабильность работы росла — самый долгий даунтайм из-за технических проблем за этот год составил всего 2 часа.

2013 год – Карты, деньги, два программиста

По темпам и объему проделанных работ, этот год опередил оба предыдущих. Было введено дополнение «Stygian Abyss» и начата работа над аддоном «High Seas» (которого, к тому моменту, не было нигде, кроме официальных серверов). Количество установленных апдейтов было выше, чем за оба первых года, вместе взятых.

Интересным моментом тут было то, что мы уже существенно опередили в своем развитии используемый нами эмулятор, и дергать что-то в плане кода оттуда стало уже невозможно. Самым интересным моментом стало заселение новых территорий мобами. Опишу как это происходило — включалась запись видео, я заходил на персонажа на официальном сервере, и проходил каждый тайл (клетку) шаг за шагом, обходя все доступные территории и локации. Проплывая, пробегая, выполняя квесты для доступа в закрытые части карты.

Так я бегал от агрессивных мобов днями напролет. Классический паровозик.<br />
Так я бегал от агрессивных мобов днями напролет. Классический паровозик.

Где-то после недели каждодневных многочасовых забегов был создан пул видео, который использовался для заселения у нас на шарде. И если это кажется легким — то нет. На это ушло еще около недели от 5 часов в день. Сложность заключалась в том, чтобы правильно настраивать и выставлять спавны — площадь респавна так, чтобы мобы не вылезали за свои ареалы обитания, правильно подбирать мобов и их количество исходя из видео. Правильно определять, насколько они могут уйти от места возрождения и могут ли вообще, будут ли они реагировать группой на угрозу одному из них, или же нет. Как часто они будут появляться после своего убийства, и будет-ли вариативность мобов на спавне, когда каждый спавн выдает немного разные виды существ, миксуя их.

В дополнение к FAQ, о котором уже шла речь, для более комфортного вхождения в игру новых игроков, не знакомых с миром Ультимы, были отсняты видеоролики, показывающие все аспекты игры и обучающие базовым вещам. На момент публикации этого лонга, количество их просмотров находится примерно на уровне 45 тысяч. Попутно с публикацией роликов мы закрыли старую версию форума, по причине того, что она уже плохо справлялась с возросшей нагрузкой — эта часть сайта еще на момент 2010 года была архаизмом, и с ростом количества информации и размера баз данных все начало существенно тормозить. Конвертировав базы данных, нам удалось сменить движок форума без потери данных и зарегистрированных пользователей (никаких готовых скриптов для этого тогда не было).

Тут же надо добавить, что это был первый год, когда над дизайном портала работал отдельно нанятый дизайнер и верстальщик — это было достижением, потому что до сего момента я занимался всем сам, ибо лишних денег не было. Человек так же был из наших пользователей и работал дизайнером упаковок товаров массового потребления. Еще немного спустя я заказал разработку новой системы мониторинга, отображающую количество онлайна игры на сайте, и главное, она легко масштабировалась под любое количество серверов и работала с любыми играми (а на тот момент у нас уже появился сервер CS) . Помню, как сейчас, за это было отдано 100 долларов.

А мониторинг у нас появился потому, что онлайн начал переваливать за отметку в 150 человек, и потихоньку начали появляться иностранные игроки. Смешные цифры, казалось бы, но не для Ultima Online. И вместе с появлением мониторинга, появились и проблемы. Все больше стало заметно, что наш штатный найденный кодер воюет не в ту сторону временами, и проблем с качеством обновлений стало как-то подозрительно много. Я списывал это на то, что пока мы ставили те системы, которые у него уже были написаны и протестированы на его сервере — все было плюс-минус гладко. Когда нужно было писать самому, времени на отладку ему давалось мало, и возникали проблемы на лайв-сервере. Тон общения из более или менее дружеского, каким-то непонятным для меня образом, скатился в холодный и деловой. В чем было дело, я догадался случайно, когда во время разговора он упомянул, что знает парня, который сообщил об одной из ошибок под наше следующее обновление. Внезапно произошло озарение и до меня в полной мере дошло — а ведь человек держит и СВОЙ сервер.

Я в тот момент.<br />
Я в тот момент.

Поспрашивав по игрокам, оказалось, что очень много людей стали мигрировать от него к нам, и за последние пару месяцев у нас оказалась чуть ли не половина его шарда. Речь конечно и в конечном итоге, шла о потере денег с его стороны, но ситуация, как оказалось, была несколько пикантнее. Как выяснилось позже, наш кодер на своем сервере не брезговал «рисовать» предметы за деньги богатым буратинам, и суммы там были весьма приличные. Были они приличные потому, что 40-летние бизнесмены жаждали убивать нищих школьников не на скилле, а деньгами, а админ сервера не скупился на прайс за свои услуги.

После этого состоялся разговор, в котором с моей стороны было объявлено, что как только всё, что уже было отдано в работу и за что уже были заплачены деньги будет закончено, каждый идет своей дорогой. С моей стороны это было прыжком в никуда, по нескольким причинам. Первая состояла в том, что сервер в момент своего стремительного роста оставался без программиста. Вторая заключалась в том, что дальше в сборку, с точки зрения кода, могут быть напиханы куча скрытых бекдоров и уязвимостей, которые приведут в итоге к тому, что сервер перестанет работать, или придется делать откаты на очень и очень большие сроки, если человек применит фантазию. С этого момента весь код проходил ревью отдельно. И видимо не зря, потому что, когда ех-кодер понял, что ловить тут нечего и надо было суетиться заранее, он начал очень настойчиво предлагать выдать ему роли выше плеерских, на том основании, что ему очень нравится смотреть за тем, как играют люди, и все, что он хочет — это просто летать в инвизе и наслаждаться подглядываниями, как заправской фетишист.

Начались поиски нового человека, способного писать код, и знакомого с используемым нами эмулятором. Опять же через игроков я вышел на человека, работающего над относительно известным, но ныне уже закрытым сервером Ультимы. Благодаря ему мы худо-бедно отработали оставшиеся два месяца в этом году, однако замена ему начала подбираться с первого же дня знакомства. Человек был игроманом, причем в терминальной стадии. Увлечением его был только покер, и ничего кроме.

Добавить к этому нечего, к сожалению.<br />
Добавить к этому нечего, к сожалению.

Наши редкие разговоры по скайпу состояли в основном из того, что я пол часа слушал на заднем плане крики его жены, плачущего ребенка. Постоянно приходилось повторять свои просьбы по два раза потому, что он не мог оторваться от очередного турнира, и не понимал, что ему говорят. Оставляло тягостное впечатление, но деваться было некуда. Кодил, надо сказать, он весьма так себе, поэтому все ТЗ сводилось к исправлению совсем простых тикетов от наших игроков. Еще больше усугубляло положение то, что оплата у него была почасовая, и я прекрасно осознавал, на что в действительно уходят наши часы.

Год мы закончили с тем, что взяли красивую цифру в 20 тысяч учетных записей, и заодно, почувствовав весь груз ответственности переработали подход к резервированию и бэкапам. Теперь у нас был рейд-массив с двойным резервированием, бэкапы на два удаленных сервера, и хранилище копий и сборок на отдельном носителе вне сети. Вдобавок к этому — перенесли всю кодовую базу в систему контроля версий Subversion. Казалось — мы уже совсем взрослые и работаем серьезно, но начало следующего года показало, что в плане сетевой инфраструктуры нам еще очень далеко до серьезных проектов.

2014 год – Империя наносит ответный удар

В начале года наш коннект до сервера сказал — пуф, все! Плохо понимая, в чем проблема, я посмотрел загрузку канала, и понял, что его больше нет с нами. Все резервные бэкапы шли на вдс-ку в датацентре, но сам сервер физически все еще располагался просто в квартире, пусть и обложенный бесперебойниками и резервным каналом от другого провайдера. Это позволяло в обычные дни держать аптайм за 99.8% в год, но обычные дни закончились. Стало понятно, что идет DDoS.

По ту сторону экрана тем летним днем.

И раньше временами возникали атаки, но это было школьные досы с условно двух машин, которые легко рубились либо провайдером, либо настройками на стороне сервера, поэтому серьезных проблем они никогда не доставляли. Посмотрев еще раз на грустную загрузку канала в потолок, я на всякий случай позвонил провайдеру, который не менее грустно заявил, что айпишник придется блэкхолить, иначе у них ляжет железка, работающая на пол района. Что делать на тот момент понимал мало, поэтому связался с одним из наших постоянных игроков-айтишников имеющего много регалий, который по совместительству преподавал информатику в одном из ведущих институтов Самары, а также был одним из разработчиков ныне канувшего в лету дистрибутива фряхи FrenzyBSD (его имя есть и в Википедии). Поговорив с ним по телефону, и поняв, с чем я столкнулся, а также выслушав советы, стал понятен план действий. И в этом же разговоре был забавный момент, который остался в памяти — я рассказывал, как и что у меня настроено и работает, после чего состоялся примерно следующий диалог:

- А точно это работает так и так?

Я говорю — точно.

- А ну-ка сделай так и так.

Я делаю.

- Но ведь так не может работать, как ты это сделал?

- Я не знаю.

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

На неделю мы приткнулись к первым ребятам, нас оттуда попросили из-за высокой нагрузки, и мы нашли вторых. Миниатюрная девушка из Питера, работница одного крупного ДЦ, разместила у себя на балконе несколько стоек забитых списанным железом с работы, закидав это шумоизоляцией и кондеями, провела два оптоволокна оттуда же, и продавала услуги хостинга и защиты через интернет. Мы переехали к ней на балкон. Еще неделю мы были с ней на постоянной связи, она же пребывала в режиме мемной горящий собаки, которая говорила, что все нормально. Однако наша история закончилась на том, что железка, которая фильтрует атаки скоро выйдет с балкона, и канал на 10 гигабит у нее из-за нас забит полностью, что создает проблемы для других клиентов. У нас же при этом были постоянные проблемы с подключением, и, по сути, сервер больше не работал, чем работал. Закончились наши взаимоотношения тем, что в какой-то момент без предупреждения она отключила нас. Хорошо, что у нас были бэкапы.

И хотя часть людей донатила прямо в оффлайн, поддерживая нас и говоря — мне вообще ничего не надо, но вот вам на решение проблем, денег осталось совсем мало. Ровно на попробовать еще один заход и найти спасение. Спасением стал окончательный переход во взрослую жизнь — потратив все и добавив из своего кармана мы купили свой первый стоечный сервер, и отвезли его в один из немногих на тот момент Tier 3 датацентров Москвы, который предоставлял защиту от атак.

Тот самый сервер с наклейкой колакейшена из того самого датацентра. А еще лицензионной наклейкой винды, которая была куплена на авито с рук у мутного типа. Сценка была один в один как закуп в радиомагазине из «Иван Васильевич меняет профессию».<br />
Тот самый сервер с наклейкой колакейшена из того самого датацентра. А еще лицензионной наклейкой винды, которая была куплена на авито с рук у мутного типа. Сценка была один в один как закуп в радиомагазине из «Иван Васильевич меняет профессию».

Платили мы там порядка 10к рублей в месяц, но зато после нескольких недель очень нестабильной работы все наконец-то нормализовалось. Как позже сказали в ДЦ, на пиках нам прилетало более 15 гигабит в секунду UDP-флуда с десятков тысяч адресов, помимо еще отдельных атак на порт сервера. По состоянию на 10 лет назад — это было весьма прилично.

Одновременно с этим, смахивая пот со лба, шел поиск нормального кодера в команду. И снова один из игроков посоветовал обратиться к «хорошему парню» и поговорить. У него так же был свой сервер в настоящем и несколько в прошлом. Я грустно вздохнул после череды грабель, но делать было нечего, и я списался с ним. Разговор буквально начался так:

- Привет, мне дали твою аську. А еще я создал домен твоего сервера, но в. ru, и часть твоего трафика идет ко мне. В качестве знакомства, давай я поставлю переадресацию на тебя?

- Привет, о, я знаю тебя. А еще я слил БД твоего кривого магазина из прошлого века, и у меня есть почты твоих донатеров, давай в качестве знакомства я не буду спамить на них?

Сразу стало понятно, что нас ждет долгая мужская дружба, которая к слову, продолжается до сих пор.

Посмотрев наш код, он спросил следующее — а откуда у тебя эти куски? Я говорю — вот, работал с парнем. А ты знаешь, сколько людей он кинул? И что эти куски кода — тоже украдены? В общем, история прояснилась окончательно. По мимо рисовок на сервере у себя, наш прошлый парень так же разводил админов, получая доступ к кодовой базе, и продавал оттуда все, что можно продать. Бонусом — его ищут несколько людей у себя в городе, потому что их развели на деньги. Из плюсов этой истории — к нам перекочевала часть кода с сервера человека-легенды в комьюнити, который в соло в свое время сделал больше, чем все комьюнити всех эмуляторов на тот момент, насчитывающее несколько десятков тысяч человек, но чей сервер к моменту нашего старта уже был закрыт.

Минусом стало то, что, прошерстив по нашим пользователям и знакомым-знакомых, стало понятно, что атаки, которые к слову еще шли на тот момент, были организованы им, в отместку за упавший онлайн у него и то, что развести нас не успели. После чего произошла интересная ситуация, которая в итоге привела к закрытию все еще работающего сервера этого человека. Как-то, когда меня спрашивали, кто и за что нас досит, я сказал, что по тому, что удалось узнать, ситуация выглядит «вот так и так». Буквально вечером того же дня у парня упал сайт и сервер, еще через три дня он написал мне, и попросил прекратить досить его, а он «поможет с тем, чтобы атаки на нас закончились». На этом кровавые разборки вест и ист сайда прекратились, но мы выжили, а он нет.

Ну вы поняли.

Наконец-то настало затишье. Я с большим удовольствием тратил все наши деньги на нового кодера, а он с большим удовольствием вносил нововведения и правки. Отличительной особенностью стало то, что в коем-то веке, все, что попадало на сервер действительно тестировалось, и проблем на лайф-сервере было совсем мало. Плюс были приняты некоторые решения, из разряда «честных» — об удалении неактивных персонажей, с геймтаймом менее 15 минут, либо без заходов в игру в течении 3х месяцев (если геймтайм был больше). Это позволило держать цифры реальными, и не отображать фиктивную информацию, которая так активно «набивалась» у многих конкурентов. Введено ограничение на количество одновременно запущенных окон с одного IP, что также значительно повлияло на «фиктивность» онлайна в лучшую сторону. Минусом стало то, что после чистки одноразовых учеток, наши псевдо 20к учетных записей превратились в настоящие 10к.

Плюс к этому, мы ввели поддержку 3D клиента игры, на что ушло достаточно много времени. Не обошлось и без проблем, первую неделю сервер работал достаточно нестабильно, из-за закравшейся ошибки, связанной с обработкой подключений через этот клиент. Забегая вперед, скажу, что за годы его поддержка и работоспособность была доведена до состояния, которое не имеет аналогов ни на одном действующем или когда-либо работающем сервере, кроме непосредственно официального. Ортодоксальный подход — это игра на классическом 2D который и проповедуют все, но мы решили, что должен быть выбор.

Ну а год мы закончили на высокой ноте — зимой было проведено первое в истории российско-украинского (а может и в мире) комьюнити Ультимы Онлайн слияние двух крупных шардов от разных админов с разной аудиторией, с переносом и сохранением персонажей, игрового прогресса и имущества. Второй сервер принадлежал нашему новому кодеру, у которого на тот момент не было уже ни сил, ни времени поддерживать крупный и работающий сервер на плаву, и на должном уровне. Слиянию предшествовала долгая подготовка и переговоры на уровне администраций проектов, ведь все должно было пройти максимально гладко, как для переносимых игроков, так и для коренных жителей сервера. Была проделана очень большая работа, занявшая около месяца, учтены особенности и различия обеих площадок. Так, шард Heaven's Gate (loveuo) стал частью Inceptum.

2015 – Через тернии в «грин зону»

В середине января, спустя примерно месяц после объединения, фиксируется максимальный за все время среди всех российских и украинских серверов ненакрученный (рисованный) онлайн. Знаю я это потому, что за годы много раз беседовал с настоящими и бывшими админами, и прекрасно знаю, что реальный живой онлайн с тем, который указан на сайтах не имеет вообще ничего общего. Поэтому настоящий онлайн на многих серверах мне был известен из первых рук. Тем временем, счетчик онлайна более получаса держится на отметке в пол тысячи, часть сторонних сервисов по проверке онлайна фиксирует у себя результат в 516. Живой онлайн в это время показывает порядка 120 человек с оригинальными ip-адресами. Сервер держится в топ 3 мира среди всех остальных площадок ультимы.

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

Скрин из лички Дискорда уже этого года, но он хорошо иллюстрирует тот иногда случающийся ад, который специально не придумаешь.<br />
Скрин из лички Дискорда уже этого года, но он хорошо иллюстрирует тот иногда случающийся ад, который специально не придумаешь.

Но все это были ошибки с нашей стороны, которые как правило, появлялись сразу после крупных обновлений и устранялись в тот же день. А еще были ошибки, которые намеренно искали наши пользователи, и которые были весьма интересными в реализации и сложными для понимания и отслеживания с нашей стороны. Тут надо пояснить, что понять, как работает ошибка, и исправить ошибку — это разные вещи. Исправить баг можно даже без понимания того, откуда, как и почему он появился. Иногда без понимания — через костыли. И все будет работать нормально. Но я всегда был против такого подхода, и мы всегда разбирались, как, что и почему у нас происходило. Иногда на это уходили недели.

Вот лишь некоторые из них — однажды сервер упал со странной ошибкой, разобравшись в которой, стало понятно, что кто-то отправил специально сформированный пакет, который говорил задействовать 65-ое по счету заклинание из книги магии. Но их в игре и данной книге всего 64. Однако никаких проверок на то, что кто-то может попробовать применить, скажем 65, не было. Не было их потому, что никаким образом в игре этого сделать не получится. Поэтому сервер честно пытался обработать несуществующее заклинание и падал. А как-то раз мы не могли разобраться в том, каким образом у нас умирает несуществующий моб, что так же приводило к крашу сервера.

Лишь спустя продолжительное время в попытках отловить баг, ситуация прояснилась — данный моб с небольшим шансом умел псевдо-закапываться в землю. Делалось это через исчезновение моба, и его новый спавн в нужной точке. Но однажды совпало так, что игрок успел повесить дот яда на моба, и тот исчез, «закопавшись». Однако таймер яда никуда не исчез, и продолжал свой отсчет, итогом которого стала попытка убийства жука, которого к тому моменту уже не существовало. Еще случай — мы нашли игрока, который бегал по т.н. «грин зоне» области карты, которая является тестовой, игроки к ней доступа не имеют (обычно можно найти много всего интересного или сильно нажиться в зависимости от того, что там тестируют и размещают админы конкретных шардов). Однако наш — вполне себе имел. Дело было вот в чем — перед данным участком карты, по краям с одной из сторон, шел густой лес из деревьев, которые непроходимы для персонажей. Однако в игре есть заклинание телепортации, которое позволяет чару прыгать на небольшие расстояния в свободную зону, на которой он может поместиться.

Так вот, из-за допущенных разработчиками клиента игры ошибок, именно на том клочке леса и на очень редких деревьях можно было пролететь через просветы между деревьями с помощью телепортов и вставать на клетки, стоя чуть выше основания ствола. Спустя множество попыток, человек определил путь, финальным скачком по которому был прыжок за границы доступной простому игроку карты. Надо сказать, что до сих пор на 95% работающих серверов этот путь не закрыт. А у нас в его конце лежит книга, нажав на которую открывается браузер с этим видео:

Только вместо контейнеров — елки.

А еще в какой-то момент, у нас сработал один из триггеров системы безопасности (вы помните про логи, да?) — в мире появился предмет, который продается ингейм со специальных камней-магазинов. Но проблема заключалась в том, что куплен он не был, тем не менее, он точно был с такого камня. Разобравшись в логах, мы нашли персонажа, которому эту удалось. Однако понять каким образом это было сделано мы до сих пор не могли, а человек был не дурак, и не спешил повторять свои подвиги. В итоге телепортировав его в тюрьму, и появившись перед ним, я начал грозно вопрошать — жизнь или бан? Человек, ничего не понимая ответил по-испански.

В конечном счете с помощью общения в скайпе и гугл-транслита, оказалось, что схема была следующей — человек предположил, что для данного камня было некое админ-меню, ведь как-то мы добавляем туда товары. Дальше он предположил, что, возможно перебрав все ID кнопок, которые гипотетически могли бы быть задействованы в меню и прожав на это айди мимо клиента игры (ведь физически оно не отображалось), ему удастся добиться какого-то эффекта в плане взаимодействия с камнем на уровне выше плеерского. Так вот, в чем заключалась ошибка — если меню было вызвано администратором, оно отображало кнопку для управления товарами ингейм. Если же меню было вызвано плеером, кнопки оно не отображало, но технически меню оставалось все тем же. Так вот, проверка на уровень прав у нас использовалась только на моменте отображения кнопки, но не на ее фактическое нажатие. И это было единственное такое меню, где мы похоже когда-то забыли добавить многоуровневую проверку, а испанец, судя по всему, перетыкал хитрым скриптом уже с сотню окошек, пока не дошел до момента, при котором его подход наконец-то сработал. Как вы, наверное, уже догадались — скриптом путем перебора айди кнопок, он прожал на отсутствующую для него кнопку управления данным типом вендоров, и открыл админ-панель, с которой легко мог взаимодействовать, ведь проверки именно на это не было.

Кроме онлайна, разумеется, пришли и лишние деньги. И, как и всегда — они шли в дело. Впервые полностью, а не кусками, были обновлены сайт и форум портала с полной сменой CMS (веб-движок портала и сайта) и версий всего на свете, от PHP до MySQL. Все было сделано с нуля, базы и аккаунты были конвертированы и перенесены. На этом моменте всё легаси, что у нас имелось, было снесено и заменено новыми современными решениями, по причине того, что количество костылей, заставляющих наши старые движки работать и взаимодействовать друг с другом уже превышало все немыслимые значения. Шаред хостинг был заменен выделенным железом. Плюс к этому был заказан и полностью переработан дизайн и цветовая гамма сайта, а протокол сменился на защищенный — появился «зеленый» замочек https. И надо сказать, работало все это очень хреново и медленно по сравнению с тем, что настраивалось и оптимизировалось на протяжении всех этих лет.

Люди спрашивали — как можно было сделать настолько плохо, что новый форум работает раз в 10 медленнее старого. Грустно осознавая, что все наши труды на которые был потрачен вагон денег и нервов, идут ко дну в потоке негативных отзывов о работе сайта, я вышел на одного очень известного человека в\на Украине, работающего на очень хорошей должности в айти, обладавшим всеми возможными мировыми сертификатами всех возможных уровней от всех возможных вендоров (и они у него действительно были). Запросив достаточно крупную сумму денег, он сказал — это все для детей, я сделал бы это за 5 минут еще в 80-х. После чего на протяжении часа рассказывал мне, насколько он хорош, и насколько нам повезло, что уделяет свой час за такую смешную сумму, и насколько глупо вообще обращаться с такими пустяками к таким мастодонтам как он. Следующие пол часа я слушал, над насколько серьезными проектами он работал, и какие серьезные задачи он решал у очень серьезных людей. Я честно терпел, хотя к тому моменту от количества высокомерия и несущественности разговора относительно конкретно моей проблемы уже начал потихоньку выходить из себя.

Категория «Мемы за 300» описывающая ситуацию.<br />
Категория «Мемы за 300» описывающая ситуацию.

В общем, как, наверное, вы уже поняли — по итогу он не сделал ничего, хотя пытался. Сказав что-то вроде — у вас ребята проблемы с производительностью железа, он пропал в тумане истории с моими деньгами и шлейфом пафоса. История же закончилась тем, что, взяв себя в руки, и открыв гугл, за несколько дней я самостоятельно решил все проблемы, оптимизировав наш centOS с сайтом до состояния, при котором все стало работать по скорости так же, как и некогда легаси-костыли.

И наконец, под конец года, понимая, что с резко возросшей нагрузкой глупо класть все яйца в одну корзину мы постарались добиться максимальной «распределенности» инфраструктуры проекта. Нужно было исключить узкие места, с которыми время от времени возникали проблемы, выбирая лучшие из доступных решений. До этого года мы размещались только в России. А зимой уже были «разбросаны» по России, США и Франции. В каждой из этих стран находится хотя бы одна часть, отвечающая за работоспособность проекта в целом — сервер, виртуальные машины, бэкапы, DNS-резолверы и иже с ним.

2016 – Космические разборки и космическое выгорание

Год начался с уведомления от нашего датацентра, в котором говорилось следующее — мы были вынуждены увеличить стоимость с 10к рублей до 20к в месяц за размещение вашего оборудования (для сравнения — в бюджетных ДЦ за эти деньги можно было размещать от 15 до 20 одноюнитовых серверов в месяц). На мои вопросы в поддержку о том, с чем связано увеличение цены вдвое, через день пришел ответ с почты на другом домене, в котором уже был указано совсем другое название компании. Я тогда подумал — нужно срочно искать альтернативы, потому что платить суммарно от 250 тысяч в год очень не хочется, особенно когда начинаются очень мутные ситуации. Пока искал место, в которое мы будем мигрировать (что занимало время, поскольку нам нужна была хорошая защита) пришло еще одно письмо.

Из того, что удалось понять — сменился собственник (в реалиях нашей страны означает — начался дележ), и соответственно все оборудование ЦОД-а текущим руководством планировалось перевозить в другой, арендуя там стойки. Причем клиентов о том, хотят ли они этого, никто не спросил. Было что-то вида — грузовик приедет в полночь, и увезет ваше железо куда-то там, поздравляем, у вас будет даунтайм. На следующий день я поехал на такси через пол-Москвы забирать наше железо. И тут сюрприз! Сама площадка и все оборудование, как оказалось в последствии, находилась на территории, принадлежащей российским космических системам (дочка Роскосмоса).

Каким образом у них на территории и на их пулах адресов оказался датацентр — я думаю, объяснять не будем, все уже взрослые. Однако, когда начался движ, возник классический любовный треугольник, в котором все хотели получить как можно больше. С одной стороны Роскосмос, на мощностях которого и территории работал один из крупнейших ДЦ Москвы. Со второй — собственник, который уже давно находился за границей по причине заведенных на него уголовных дел в РФ. Ну и наконец с третьей — ребята, у которых была генеральная доверенность от собственника на весь движняк от его имени, но в какой-то момент они решили, что сами по себе. Для простых клиентов ситуация была простой — забрать свое железо нельзя, потому что никого с железом не выпускают и не впускают, а ФСБ шерстит все, что движется.

Ситуация с железом за 5 секунд. Эвакуация батутом.

Дальше был увлекательный квест, в котором я ездил в магазин и просил распечатать там хоть какие-то чеки по железу (сервер собирался из комплектующих), вылавливал мужика с доверенностью на доверенность, у которого прям в машине был принтер, на котором мне распечатали документы и поставил печать о том, что я действительно у них размещался, общение с минишишкой из РКС, который в какой-то момент сказал «слушай, ты ведь админ, вроде адекватный, давай работать к нам, а то все освободилось, мы решили делать свой датацентр, персонал нужен». Через пару дней я ехал обратно на такси с сервером на заднем сиденье, а таксист, узнав, что это такое, сказал — вкладывать надо в золото. Я вот вложил, и купил машину. Сам же шард к тому моменту уже работал на арендованном сервере в другом ЦОД-е, куда позже и уехал наш физический.

В середине года мы открыли отдельный тест-сервер с самым дорогим и самым рискованным пулом обновлений в нашей истории. Данное обновление разделило шард на эпоху до, и эпоху после, по сути, меняя всю игру. Решено было вводить новую систему крафта с официального сервера — Imbuing. И к нему-же ряд подсистем, так же касающихся вещей — Reforging и Altering. Сложность тут заключалась в том, что на тот момент 3 из 10 крупнейших серверов, которые пытались его ввести закрылись будучи не в состоянии разгрести все последствия ошибок при его введении, остальные 2 потеряли практически весь онлайн и откатили изменения, из-за того, что весь баланс был сломан, и разобраться в его работе до конца они не смогли. А все остальные так далеко никогда и не заходили, работая на аддонах несколькими годами ниже.

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

Эта фраза звучала у меня в голове, когда я отгружал котлету.<br />
Эта фраза звучала у меня в голове, когда я отгружал котлету.

Ведь все они бы касались непосредственно эквипа игроков, а это — святое. Риски были понятны заранее, но решили делать, потому что дальнейшие развитие одновременно с офф. серверами, не сделай мы этого, становилось невозможным. И выбор стоял между бросаем то, к чему шли 6 лет, или пробуем — либо умирая, либо работая дальше. На разработку только имбуинга было потрачено больше 70к рублей и несколько месяцев тестов до ввода в продакшен на лайф-сервер, и еще пару недель ежедневных рестартов с хот-фиксами уже на лайфе.

По итогу и в техническом плане мы справились отлично, хотя ошибки еще вылезали долгое время, но критических среди них не было. Таким образом, мы стали первым шардом, кто смог ввести действительно систему 1 к 1 с офа, а не подобие (к слову, к нам до сих пор так никто и не приблизился). Но, как и водится — проблемы начались сразу с нескольких сторон. Мы изначально знали, что часть игроков уйдет, и были готовы к небольшому их оттоку. Причина заключалась в том, что в СНГ люди не привыкли играть на серверах Ультимы, которые имеют регулярные обновления. Соответственно, в массе своей игроки ничего не знали о текущем состоянии игры, какой она есть на самом деле. Пока мы вводили правки медленно — у людей было время приспособиться, но и при этом каждый раз нам приходилось объяснять, почему изменения идут на пользу.

Хотя все знали, что мы ставим правки только с официальных серверов (кроме фиксов своих ошибок). Казалось бы, для того, чтобы узнать, что будет установлено у нас завтра, достаточно посмотреть патчнотсы того, что установлено у официалов сегодня. Но естественно никто этого не делал, а вводить постепенно огромное обновление мы не могли, потому что у него всего два состояния — старая система крафта и новая. Новая была существенно лучше, глубже, интереснее, и полезнее для игроков. Но люди не разобравшись говорили следующее — у нас были боты, которые делали все за нас, и мы просто получали готовые вещи, а теперь надо во что-то вникать, что-то фармить, переписывать ботов, нафиг оно нам надо, до свидания. Следующим фактором было то, что на этот год пришлось самое ожесточенное противостояние сразу нескольких крупных гильдий. И любые правки чего угодно воспринимались какой-либо из них в штыки, и как подыгрывание противоборствующей стороне. Доходило до смешного, когда за месяц после нескольких обновлений на форуме появлялись посты от каждой из них, вида: вот это-то наверняка сделано в плюс нашим врагам, они наныли, а администрация сделала! В итоге еще до ввода новой системы мы потеряли одну из крупных гильдий, и онлайн немного просел.

Далее произошла вторая волна дропа онлайна — боты, которые использовались игроками под крафт (в ультиме боты — часть игры, увы) стали бесполезны в новых реалиях и стали выгружаться, что уронило цифровой онлайн процентов на 30.

Наши показатели для общественности и попытки тушить пожар на форуме выглядели ровно так.<br />
Наши показатели для общественности и попытки тушить пожар на форуме выглядели ровно так.

Видя такое резкое падение онлайна за короткий срок, хотя живой оставался таким же, как и прежде, начали отваливаться люди из паникеров, а за паникерами начали отваливаться и более или менее постоянные игроки. И хотя такие ситуации были для нас не в новинку и всегда контрились, сыграла роль основная причина в виде меня самого. К этому моменту начала сказываться безумная усталость, которая как я потом узнал, называется выгоранием. Почти 6 лет я провел в режиме краба на галерах, и когда все усилия наконец-то переродились в показатели онлайна и деньги, сил уже не оставалось никаких. К этому моменту на сервер уходило от 4 до 10 часов плотной работы каждый день, без выходных (я фрилансил, и время было). И до этого момента все «мы» в рассказе следует понимать как «я».

Отлично помню, как телефон пиликал от уведомлений по донатам каждый день, и в зимний период я мог заработать 100-120к рублей в месяц (что по инфляции и курсу на сегодняшний день в районе 200к). При этом, что для меня было удивительно, радости никакой не было. Вызывало раздражение, потому что напоминало о том, что надо крабить дальше. В одном лице я был и комьюнити менеджером, и тестером, писал ТЗ для кодера, и поддержкой, и эвент-мейкером, и конкурсы проводил, и с техническими проблемами на сайте или по железу разбирался тоже я. Это только то, что приходит на ум, а надо было заниматься еще рекламой, каким-никаким продвижением и т.д. по списку. И если у нас были проблемы с онлайном — они всегда перекрывались все той же рекламой. У нас всегда была статистика за месяц, сколько людей начало, сколько неактивны, и когда линия падала, она всегда догонялась новыми игроками.

Но в этот раз, я подумал — как меня все достало, я только что потратил 70 косарей, а они СНОВА недовольны всем (это кстати отдельная тема для отельного рассказа — если зайти на любой не русскоговорящий сервер или даже взять наших иностранных игроков, они всегда говорят спасибо и поддерживают, славяне же люто ненавидят все, что движется, а если не движется, то двигают и ненавидят). Я больше ни хочу ничего объяснять, и больше не буду ничего делать для того, чтобы перекрывать просадки по онлайну, я больше не буду разжёвывать каждый тикет в саппорте и объяснять, почему у нас все работает правильно на пальцах, я больше не буду сидеть в 30 открытых чатах помогая людям разобраться с тем, о чем они могут прочесть за 5 минут в интернете, если приложат минимум своих усилий, а не моих.

Мое перманентное состояние накопившиеся за годы.<br />
Мое перманентное состояние накопившиеся за годы.

Это не было ежесекундным решением, просто то, что копилось все это время, наконец-то вылилось в режим «мы помещаем детенышей в агрессивную среду реального мира» с «кормим кашей с ложки и читаем сказку на ночь».

Таким образом, собрав все три фактора в то, что называется в EVE Online «фейл-каскадом», мы входили в новый год.

2017 – Свежая кровь

Находясь в порочном круге «забивают игроки, забиваю я, забивают игроки, забиваю я» в какой-то момент возникла ситуация, при которой денег на крупные обновления перестало хватать, при том, что кодеру оплачивалось практически все, что шло с сервера без остатка. Тут надо пояснить, что апдейты мы ставили ровно в том же режиме, как и всегда. И поддержка в виде меня работала, решая проблемы, и в целом все с виду было вполне обычно. Но часть старых игроков не смогла перестроиться на новые рельсы после обновлений, часть ныла, что ушли их друзья, оставшаяся требовала к себе внимания как раньше, которого больше не было. А новые же, приходя на сервер сталкивались с паническими настроениями и думали, зачем вообще им это надо и уходили искать что-то другое для времяпровождения. Да и я все чаще задавался тем же вопросом »зачем мне это надо?».

В один из дней, в котором ничего существенного не происходило, мне написал один из наших постоянных и самых старых игроков (играющий у нас с начала 2011) и спросил — почему ничего не происходит? Давайте сделаю так, чтобы происходило! Речь шла о его предложении кодить для нас. До этого с его стороны была некоторая добровольная помощь, которая заключалась в основном в написании или редактировании FAQ-ов, а также в попытке запустить через меня сервер Майнкрафта (который так и не снискал популярность). По итогу — человек находился на хорошем счету. На вопрос, кодил ли он когда-то под наш эмулятор, был получен ответ — нет, но что тут может быть сложного-то, я делал свой сервер майнича, значит и тут смогу легко вкатиться. Находясь в режиме «с каждым днем я все дальше от бога» и понимая, что скоро денег может перестать хватать не то, что на скриптера, но и на хостинг, я согласился. Сразу оговорив со своей стороны — грядут темные времена, и денег нет и вероятно не будет в ближайшем обозримом будущем, а будет только ответственность, кранчи и ад ради ничего. Проколов палец и подписав контракт, мы начали сотрудничество.

Давая вначале легкие и простые задачи для «вкатиться», и догружая задачами средней тяжести для «почувствуй, силу Люк» под неустанным присмотром нашего постоянного штатного программиста и меня в роли тестера, со временем мы пришли к тому, что человек стал понимать специфику того, над чем и с чем работает. Во всяком случае, так казалось до того момента, пока не встал выбор — либо мы оплачиваем размещение железа, сайта и всей инфраструктуры, либо продолжаем оплачивать работу над развитием сервера в плане кода. С этого момента у нас остается только новый программист, не внесший ни одной серьезной правки самостоятельно.

Примерно так должно это было выглядеть, если бы я не пустил все на самотек.

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

В какой-то момент я опустил тентакли и смирился окончательно с неизбежностью бытия. Внутренне приняв наконец свое полное нежелание разруливать ситуацию и тотальное выгорание вкупе с виной за него, я прекратил тестировать обновления перед вводом на лайф сервер. Теперь и этим занимался наш новый кодер. Занимался он этим потому, что пришло понимание: если не сейчас — то никогда, и пора учиться делегировать полномочия.

А так это выглядело на самом деле.

С этого момента дозированными порциями и через фильтр «шит-контроля» решения начал принимать не только я один. Человек получил полный доступ ко всей кодовой базе и всем нашим наработкам за 7 лет, а также полную учетку в игре с максимальным уровнем доступа «Owner». Помимо этого, были выданы права администратора на нашем сайте, соц. сетях, дискорде и т.д., в общем — у нас появился второй полноценный администратор, впервые за все время.

Но, как вы, наверное, уже поняли, был и существенный минус — игроков наматывало на амбразуру такого шокового варианта обучения. Говоря честно, я не знаю, как люди играли у нас в тот период. На их месте я бы ушел через неделю искать другой проект, а я человек очень терпеливый. Если выражаться образно — вы живете годами в достатке в своем теплом особняке, не зная горя и в какой-то момент вам с ноги выламывают дверь, отбирают все, что есть, и дальше вы живете с бутылкой водки под протекающим мостом рядом с наркоманами, которые каждый день вас бьют и грабят. Вот насколько у нас все было плохо в тот период со стабильностью работы шарда и кривизной обновлений. Было стыдно и больно, но я уже точно осознавал, что эта та грань, при которой мы либо работаем дальше, либо все заканчивается через год просто угаснув. Потому, что я не могу себя заставить делать уже вообще ничего.

А теперь о хорошем — в этом году мы пообщались с разработчиком очень популярной софтины, которая использовалась всеми без исключения, в основном для ботоводства (она позволяет запускать персонажа с любой степенью автоматизации и сложных скриптов без запуска графического клиента игры). И получили уникальные ключи, работающие только с нашей сборкой шарда, которые позволяли детектить данный софт. Программа использовалась на всех серверах в мире, и мы были первыми из тех, кто смог ее определять на сервер-сайде. Это давало огромное преимущество по контролю ботов и ограничению зон и механик, которые могли использоваться игроками таким образом. И хотя я уже был знаком с разработчиком, и мы ранее немного общались, ключи были получены уже нашим вторым администратором. Так с ложкой меда в бочке дегтся, заканчивался очередной год.

2018 – Inceptum значит бессмертие

В первые месяцы, пройдя через очередной миллиард ошибок и растеряв следующую часть игроков, скрипя всеми колесами, мы переводим клиент и сервер-сайд игры на последнее обновление официальных серверов — Endless Journey. Делаем это первыми в уже теперь ех-СНГ и третьими в мире, но опять же — первыми из старых серверов. Теперь можно сказать, что номинально за 8 лет разработки мы догнали официальный сервер, которому было к тому моменту больше 20 лет. Номинально потому, что часть обновления еще не была на должном уровне готова, однако аналогов и этому ни у кого не было.

Весной произошло два события. По классике — одно хорошее, одно не очень. Первое заключалось в том, что кодер наконец-то начал нащупывать почву под ногами, и сервер стал худо-бедно походить на себя в былые годы, в плане стабильности. Скилл рос как на дрожжах, и его хватило даже на ввод уникальной относительно конкурентов и сложной системы мультилогина. Смысл его работы заключался в том, чтобы человек при логине в игру мог выбирать несколько серверов из списка, как во всех современных играх. Таким образом, для примера, стало возможно отображать и мейн сервер и тест-сервер на одном окне логина в списке доступных шардов. До нас эта система в полноценном виде была реализована только у официалов.

Второе состояло в том, что сервер уже перешел на оплату хостинга за мой счет, потому что денег перестало хватать, что было вполне закономерной реакцией людей на тот бардак, что царил у нас последнее время. И хотя и я, и скриптер работали бесплатно, расходы все равно были выше. Тут надо пояснить, что сервер работал в минус и первые полтора года своего существования, и не редко — несколько месяцев в каждом году и в дальнейшем. Но тут я решил окончательно (опять же благодаря своему выгоранию), что, если Inceptum хочет жить — он должен самоокупаться любыми способами, но работать хоть на рубль, но в плюс и без участия моего кармана.

Первое, что было сделано — сокращены расходы на все лишнее, часть инфраструктуры переехала обратно в Россию, а все необязательные веб-сервисы переехали с выделенных VDS на одну. Второй волной был пересмотрен весь магазин пожертвований — исходя из покупательского спроса были скорректированы расценки на то, что в нем находилось. И наконец последнее, что было сделано — наше физическое железо было вывезено из датацентра. Как сейчас помню, это было в лютый летний дождь, когда затопило пол-Москвы, и я под дождем пол часа ждал такси из Химок, надеясь на то, что парни в ДЦ, любезно предложившие запаковать все в пупырку, чтобы не залило водой, сделали это на совесть. Пока я смотрел в окно машины на потоки воды, доходившие до порогов, в голове созрел план.

Мое лицо в отражении окна того такси, везущего меня через затопленную Москву.<br />
Мое лицо в отражении окна того такси, везущего меня через затопленную Москву.

За неделю я продал сервер на авито, обеспечив нам небольшой задел по деньгам на несколько месяцев. После чего я откопал свой аккаунт на серч энгайнс, и в разделе хостингов создал тему, содержание которой можно свести к следующему: Мы делаем рассылки по нашей базе пользователей раз в пару месяцев на примерно 10 тысяч человек, у нас есть сайт с посещаемостью в день такой-то, есть игра, есть соц. сети и группы в мессенджерах, работаем много лет. Мы размещаем везде вашу рекламу включая ингейм, и в рассылки вставляем блок, который вы отправите, взамен нам нужно железо бесплатно, с конфигом не ниже указанного, на длительный срок.

Честно говоря, надежд у меня было совсем мало, однако сразу откликнулось два человека. Первый был от совсем маленького хостера, второй был от крупного хостера. Пребывая в режиме «я не очень умный» и решив, что с мелкими ребятами будет проще по-свойски решать вопросы, я выбрал первых. Через два неполных месяца наше сотрудничество прекратилось, потому что в какой-то момент мне написал их менеджер, и сказал — сорян, но у вас три дня, потом сервер мы освобождаем. Удалив всю их рекламу у нас и подумав, какие же это чудесные люди, я написал вторым, с вопросом, актуально ли еще их предложение, потому что мы кажется обделались с выбором. Мне ответил их директор, тогда еще сидевший под своей учеткой сам. Это был максимально странный экспириенс с моей стороны, воспринимающийся как параллельная ветка вселенной. Я разговаривал с человеком, который летел в самолете на переговоры в другую страну, на блог компании которого я был подписан на хабре, и обсуждал с ним игру, которой был 21 год.

Начало разговора с моей стороны, ретроспектива.<br />
Начало разговора с моей стороны, ретроспектива.

Честно описав ему ту бездну, на которую они подписываются и ее перспективы, я получил на выбор ряд серверов. Предложения были от — на год мы можем дать вот это, или на сколько хотите — вот это. Поскольку на год нам предложили сервер способный взломать пентагон, обсчитывая прогноз погоды на пятое тысячелетие, я выбрал наиболее подходящий вариант «на насовсем». У меня было полное ощущение, что все показатели и расклады, которые я ему давал, ему совершенно не важны и не интересны, тем не менее, с вежливостью они все были выслушаны. Я понял, что основное это «я просто так хочу» а не «мне от вас надо это и это».

Забегая вперед, скажу, что мы уже 5 лет как размещены у них же бесплатно, и никогда никто с нас не требовал никаких отчетов ни по одной рассылке или рекламе с нашей стороны. За это время нам несколько раз меняли конфигурацию железа (она всегда оставалась в рамках наших запросов) перенося с ноды на ноду, несколько раз писала поддержка — объясните, как вы у нас размещаетесь бесплатно, и несколько раз писал я, когда у нас были технически проблемы, которые всегда устранялись оперативно. Поэтому даже если завтра нас отключат без всяких предупреждений — я безмерно благодарен за это время и возможность, потому что во многом это позволяло нам работать следующие годы. Если кому-то будет интересно, и кто-то до сюда дочитает — логотип хостера у нас на главной сайта.

А к концу года был установлен рекорд по количеству патчнотсов за год, который удерживается до сих пор. Почти дойдя до цифры в 500 пунктов. Если отбросить цифры и сконвертировать в более понятные величины — несколько тысяч изменений на сервер-сайде. Наш второй администратор и по совместительству новый кодер в свой первый полноценный год прибывал в том же режиме и состоянии, что и я в свой первый — интересно, новый опыт, новые вызовы, надежда на лучшее еще не мертва, жизненная энергия еще вращает маховик ответственности. И за всю эту продуктивность и год, который стоил трех, он получил немного денег, и новые комплектующие с недорогой периферией к ноутбуку, чтобы программировать было комфортнее. А комфортнее — значит больше. Учитывая количество потраченного на сервер времени и нервов с его стороны за этот период, это было грустная и злая ирония. Тем не менее, сумев разобраться со всеми самыми критичными организационными вопросами мы продолжали наш путь в будущее.

2019 – Прыжок в неизвестность

И в этом будущем наконец-то полностью дошли и перешли на систему паблишей (патчнотсов полностью) 1 к 1 с официальных серверов. До этого на протяжении 8 лет мы в большинстве своем работали только по тикетам от пользователей, когда что-то относительно офф. сервера работало не верно. И время от времени делали большой скачок, когда могли ввести все, что вышло на официальном сервере за год-два-три. После — снова правили ошибки после этих заходов. Минус системы был в том, что иногда у нас провисали какие-то механики или геймплей, в том плане, что игра была сшита из разных обновлений за разное время.

Когда пытаешься объяснить игрокам все несостыковки и выстроить логически понятную цепочку обновлений.<br />
Когда пытаешься объяснить игрокам все несостыковки и выстроить логически понятную цепочку обновлений.

Всю эту мешанину мы пытались свести к чему-то одному. К примеру, лучники могли работать с абилками 2016 года, а воины с абилками 2018. И хотя разница в формулах была невелика, система зависела от активности и добросовестности игроков — сдавать выгодные ошибки никто не хочет, но каждый хочет занерфить соседа. К этому году бесконечный поток сообщений вида «это работает не так, как на офе, вот ссылки и видео» иссяк. И впервые за все время мы начали переносить обновления по мере их выхода, сократив отставание от серверов разработчиков игры до нескольких месяцев, и придя к понятной линейной структуре апдейтов.

В этом же году первыми из крупных серверов, и первым — на последних обновлениях, поддержали разработчиков альтернативного клиента игры, и первыми среди всех серверов, что им пользовались, сделали рассылку с рекламой клиента по нашей базе. Забегая вперед, можно сказать, что по состоянию на конец 2023 на нем сейчас играет довольно много наших пользователей. Тут можно просто вставить цитату с форума:

«Не любите 3D клиент? Любите 2D, но слишком топорно, угловато и дергано? Кажется, у нас есть пилюля для вас — «2D» на стероидах, плавно, резво, красиво. Начнем издалека.

Моя история знакомства с данным творением такова — в конце декабря 16-го мне написал разработчик клиента с вопросом по uop-ам, к сожалению, помочь я с ним не смог, т.к. мы сами так и не доковыряли файлы анимации из новых версий (на тот момент), как пример, но зато мне стало известно вообще о том, что такой клиент существует.

С запуском на нашем сервере, на тот момент, было множество проблем, ибо мы всегда на острие апдейтов.

Последние офф. клиенты только-только вышли, а мы уже были переведены на них, в то время как с дремучих времен ничего не меняется, и большая часть серверов в СНГ как сидело на 2-4 версиях клиентов, так и сидит. Вполне ожидаемо, пилится все в первую очередь под них. В итоге, дай бог и с граблями все доходило до запуска игры по факту, но черного экрана по итогу, о чем я и указал, и через какое-то время вообще забыл об этом разговоре, как и о клиенте.

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

После чего была проведена большая работа, по итогам которой гордимся тем, что сейчас сервера использующие данный альтернативный клиент и последние аддоны игры идут про проторенной усердием разработчиков, и во многом — нашими баг-репортами, дороге.

Однако, на этом все хорошие новости за этот год заканчиваются. И хотя с точки зрения обновлений мы работали как обычно (несколько сотен пунктов + паблиши целиком), но действительно монументального и интересного ничего не делали, сосредоточившись на сокращении остывания от официалов. Учитывая то, что рекламу мы так больше и не давали, а у старых игроков накопилась усталость, мы вполне закономерно пришли к каскадной убыли онлайна с относительно небольших потерь в начале. Устали игроки, устали мы, нового притока нет. И мы решили — раз уж все и так хуже некуда, надо сделать прыжок в пропасть — сделать все правки, духу на которые раньше не хватало. И исправить все ошибки, которые мы допускали за все эти годы, так, как если бы сразу со старта у нас был наш опыт в почти десять лет. Ведь когда есть онлайн — непопулярные решения чреваты его потерей. А когда ты уже его теряешь — какая к черту разница? И мы приступили к делу.

Если вы дочитали до этого момента и решили попробовать поиграть: с 10.10.23 по команде в чате [DTF вам выдаст мешок с подарками, включая фамильяра — рыжего кота Кокоса (тупое выражение морды передать не удалость, используйте фантазию). Всего 50 кодов.

На этом пока все. Продолжение — во второй части. Она будет в любом случае, вне зависимости от лайков, просто потому, что нужно подвести какую-то черту за столько лет.

14K14K показов
14K14K открытий
1010 репостов
201 комментарий

Привет! Редакция выбрала твой текст победителем нашего конкурса лонгридов — прилагаем награду и благодарим от всей команды DTF. Все детали — в этом посте: https://dtf.ru/life/2183771

Ответить

Вот это олдскулы свело. Смахнул скупую слезу

Ответить

На корм коту :*

Ответить