История
Я строю мир, в который сам хочу играть
Меня зовут Макс. Днём я занимаюсь кибербезопасностью, а вечера и выходные отдаю своему серверу. Вот как всё началось и как оно устроено сейчас.
Иллюстрации проекта
Логотипы и иллюстрации, которые задают настроение проекта. Это не скриншоты игры.





01 · Откуда всё взялось
Два окна и пустой чат
Я играл на Comeback PW, на классической версии 1.3.6: Воином и Жрецом одновременно, в двух окнах. Воин бьёт, Жрец лечит и бафает. Второе окно заменяло мне пати: по вечерам в будни группу не найти, хила нет, в чате тишина. Я стоял в Городе Драконов, писал «ищу пати» и через полчаса понимал, что играю сам с собой.
Для меня эта игра всегда была про людей: про пати, про клан, про то, как в пятницу вечером собираешься на босса. И мне хотелось, чтобы мир жил, даже когда в нём нет моих друзей.
02 · Хобби вышло из-под контроля
Сначала я просто хотел посмотреть, как это устроено
Поднять свой сервер, залезть внутрь и разобраться. Серверы Perfect World я раньше не администрировал, так что каждый шаг был первым: установка, права, бэкапы, баги, из-за которых клиент закрывался без объяснений.
Потом я написал первого бота: Жреца-компаньона, который ходит за мной и лечит, чтобы не держать второе окно. За ним появился бот, который сам берёт и сдаёт квесты. Потом бот, который пишет в чат. Сейчас в мире их сотни, и каждый живёт своей жизнью.
03 · Кто они такие
ИИ-игроки: не скрипты и не NPC
Каждый ИИ-игрок подключается к серверу по сетевому протоколу, как обычный клиент игры, со своим персонажем и по тем же правилам, что и я: сам ходит и летает, получает опыт и деньги за квесты, умирает, пишет в мировой чат. Имена, истории и манеру речи многим из них написала языковая модель. Примерно каждый пятый пишет по-английски, а человеку все отвечают на его языке. Решения принимает в основном обычный код, а нейросеть включается там, где нужен разговор.
Теперь они умеют и работать в команде: откликаются на зов в мировом чате и идут с человеком в данж, предлагают помощь с боссом культы, слушаются команд в чате пати, держат лавки и ставят заявки на бирже голда. Что из этого проверено и как, написано на главной и в планах.
Как это устроено внутри, я подробно рассказал в девлоге: «Как устроены ИИ-игроки».
04 · Почему я не остановлюсь
Я хочу, чтобы здесь было безумно хорошо играть
Главная причина простая: я сам хочу играть в этот мир. Не в «сойдёт для тестов», а в по-настоящему хороший, куда хочется возвращаться каждый вечер. Планка высокая, поэтому разработка не останавливается: пока мир не станет таким, каким я его вижу, я буду его доделывать.
Одному такое не потянуть, и разработка у меня идёт без выходных: над кодом работают рои ИИ-агентов. Они пишут код и тесты, а я решаю, что и в каком порядке мы строим, смотрю на результат и сам проверяю всё, что попадает в мир. Агент предлагает, решаю я.
Я стараюсь работать как нормальная инженерная команда:
- Автотесты. На 26 октября в репозитории 524 файла с тестами и 9 834 теста.
- CI на каждый пуш. GitHub прогоняет тесты, линтер, проверку зависимостей на известные уязвимости и поиск случайно закоммиченных паролей и ключей на каждом пуше и каждую ночь. Красным он тоже бывает: тогда я чиню причину, а не тест.
- Релизы по версиям. Боты работают только на выпущенных, зафиксированных версиях кода. То, что я не выкатывал сознательно, до живого мира не доезжает.
- Телеметрия и A/B. Каждый час автоматическая проверка собирает здоровье сервера, темп прокачки классов, качество чата и экономику. Новое включаю на половине ботов и сравниваю с остальными.
- Безопасность. Пакет сервера я не писал и не доверяю ему на слово: сделал аудит, нашёл слабые пароли по умолчанию и опасную панель управления. Мир уже работает на выделенном сервере, и до того, как пустить туда людей, я пройду отдельный список мер: наружу смотрит только вход в игру, а админка, база и SSH из интернета недоступны.
- Бэкапы. Копии мира делаются каждый час. Я проверял, что копия разворачивается в отдельную папку. Полную репетицию восстановления живого мира проведу до беты.
- Человек в цепочке. Всё, что едет в мир, проверяю я сам.
05 · Мечта с детства
Я впервые делаю что-то такого размера
Свой онлайн-мир мне хотелось сделать ещё в детстве. Проект такого масштаба у меня первый, поэтому я учусь на ходу: на ошибках, на графиках, на ваших вопросах. Бывает и смешно, и страшно, но мне нравится, куда всё движется.
Работа в безопасности приучила меня не верить словам. Поэтому на сайте только то, что я могу проверить: цифры идут прямо с сервера, а у каждой возможности честная пометка. Что работает сегодня, что я делаю сейчас и что в планах, собрано на странице «Планы».
06 · Что дальше
Хочу собрать сообщество
Сначала идея была ближе к подписке в WoW без покупки силы за реальные деньги. Потом понял, что благодаря основной работе могу оплачивать это хобби и мечту с детства: сделать мир для себя и поделиться им с сообществом. Сейчас проект бесплатный; если получится жить на добровольной поддержке, так и предпочту оставить. Если хостинг, разработку и обслуживание не удастся покрыть, придётся перейти на подписку с предупреждением заранее. Силу персонажа за деньги продавать не буду. В принципах поддержки — ориентир бюджета, учтённые расходы и возможность обсудить другие миры.
Закрытого клуба и отбора не будет. Сначала закрытая бета на несколько человек, потому что я один и хочу успевать отвечать, потом открытая.
Сегодня можно три вещи: читать девлог, зайти в сообщество или оставить контакт на главной. Когда начнётся набор на тест, я напишу вам первым.