avatarcommunity
Ретро Игры8 месяцев назад

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

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

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

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

Лонг разделен на несколько частей из-за ограничений сайта:

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

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

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

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

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

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

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

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

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

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

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

Поставленная задача была следующей — постараться сделать шард, имеющий качество иностранных топовых проектов, но расположенный в России, и работающий для игроков из 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 дороже и этим. К сожалению, тогда мне показалось купить маленький недо-ноутбук хорошей идеей.
Картинка из интернета, но отчетливо помню, как стоял в магазине и выбирал между нормальным ноутбуком от MSI который по цене был на 1000 дороже и этим. К сожалению, тогда мне показалось купить маленький недо-ноутбук хорошей идеей.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Я в тот момент.
Я в тот момент.

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

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

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

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

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

16комментариев