Привет. Это первая запись девлога, и начать я хочу с главного: зачем всё это.
Я хочу в это играть
Если совсем коротко, то потому, что я сам хочу в это играть. Perfect World забрал у меня много вечеров, а потом началась взрослая жизнь, и «сходить в данж» превратилось в «найти того, кто сходит в данж». Я играл Воином и Жрецом одновременно, в двух окнах, потому что напарников по вечерам не было. Это работает, но удовольствия от такой игры меньше, чем хотелось бы.
Поэтому я делаю мир, в котором всегда есть с кем поиграть. И я хочу, чтобы он был не «сойдёт для тестов», а безумно хорошим: чтобы каждый вечер хотелось зайти, а не заставлять себя. Из этого желания растёт всё остальное, и поэтому разработка у меня не останавливается.
Ещё одна причина, чуть более личная. Свой онлайн-мир я хотел сделать с детства, это моя давняя мечта. Сначала я назвал этот сервер своим первым бизнесом. Поправка от 27 октября: я отношусь к нему как к хобби и мечте, которые позволяет оплачивать основная работа. Хочу поделиться миром, в котором самому интересно играть, покрывать расходы и сохранить бесплатный доступ, если добровольной поддержки хватит. Сейчас это направление и возможность подписки описаны в принципах поддержки; заметки о разработке ниже относятся к 25 октября.
Кто я
Днём я специалист по кибербезопасности в компании, которую называть не буду. Сервер для меня — вторая работа, а начиналась она как хобби: поднять сервер, залезть внутрь, понять, как он устроен. Серверы Perfect World я раньше не администрировал, поэтому почти всё здесь я делаю впервые и ошибаюсь вслух. Эти ошибки я буду описывать в девлоге.
Работа в безопасности повлияла на то, как я строю проект. Я не верю словам, в том числе своим, поэтому сначала измеряю, а уже потом пишу. Так же устроен и сайт: каждая цифра идёт с сервера, у каждой возможности честная пометка, а там, где данных нет, стоит «нет данных», а не красивый ноль.
Как с этим работают агенты
Одному такой проект не потянуть. Поэтому над кодом у меня работают рои ИИ-агентов: они пишут код и тесты, разбирают отчёты, ищут причины багов. Что строим, в каком порядке и что попадёт в мир, решаю я. Ничего не уходит в живой мир, пока я не посмотрел на результат своими глазами. Агент предлагает, решаю я.
Чтобы эта скорость не превращалась в хаос, я стараюсь работать как нормальная инженерная команда:
- Автотесты. В репозитории около 470 файлов с тестами, порядка 8 000 проверок. Их гоняют перед релизами.
- Релизы по версиям. Боты запускаются только на выпущенных, зафиксированных версиях кода. «Залил и посмотрел на живых» у меня не работает.
- Телеметрия и A/B. Каждый час автоматика собирает здоровье сервера, темп прокачки классов, качество чата и экономику. Новое включаю на части ботов и сравниваю с остальными.
- Безопасность. Пакет сервера я не писал, поэтому первым делом сделал его аудит: нашёл слабые пароли по умолчанию и опасную панель управления. Пока всё закрыто внутри моей сети. Перед тем как пускать чужих людей, пройду отдельный список исправлений: он уже составлен.
- Бэкапы. Копии мира делаются каждый час, и я проверил, что копия разворачивается в отдельную папку. Полную репетицию восстановления живого мира ещё проведу.
Чего пока нет, так это проверки на каждый коммит (CI). Её я сейчас настраиваю. До тех пор тесты запускаю сам перед каждой выкаткой.
Что работает, а что нет
| Что | Состояние |
|---|---|
| Мир и ИИ-игроки | работает. Потолок, который я измерил на своём ноутбуке, около 400 одновременно. Сколько сейчас, видно на странице «Живой мир» |
| Кланы с рангами | работает. Раздача званий падала с ошибкой, я исправил и проверил вживую |
| Мировой чат | работает по-русски, английский в разработке |
| Пати по ролям | в разработке. ИИ-игрок зовёт недостающую роль, и жрец откликается. Босса такой группой пока не убили |
| Лавки и аукцион | в разработке. Лавки открывать умеют, живого рынка пока нет |
| Смена эпох без вайпа | в разработке. Проверена на файлах, на живом мире не применялась |
| Живые игроки, оплата, арендованный сервер | пока нет |
Что дальше
Сначала мир, потом всё остальное. Пока мир не ощущается живым, я никого в него не зову. В следующей записи расскажу про ночную репетицию запуска.
Если вам интересно, чем это кончится, заходите в сообщество или просто оставьте контакт: я напишу, когда начнутся тесты.