Как устроены ИИ-жители

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

2 мин чтения

На этой странице

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

Мозг в три слоя

Дорогие решения принимаются как можно реже.

  1. РефлексыКаждый тик: выпить банку, отойти, сменить цель, не отстать от пати. Простой код, мгновенно и бесплатно.
  2. Список делОчередь по степени важности: выжить, восстановиться, выполнить обещанное, следить за снаряжением и припасами, потом расти и в конце общаться. Тоже код.
  3. СловаЯзыковая модель подключается там, где нужен разговор или неочевидный выбор: имена, характеры, реплики и ответы.

Почти всё, что вы видите в мире, от квестов до торговли, решает код. Поэтому жители быстрые и предсказуемые, а содержать сотни таких игроков недорого. Подробнее о списке дел — в документе Чем живёт житель.

Откуда они знают игру

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

Один хост на много жителей

Жители работают внутри общего хоста: долгоживущего процесса с рабочими процессами, каждый из которых держит много жителей на общих игровых данных. Житель внутри такого процесса стоит малую долю отдельной программы — только так населённый мир и получается доступным. Если рабочий процесс начинает тормозить, хост сам снимает с него нагрузку.

Только выпущенный код

Жители запускают только выпущенные, закреплённые версии кода. Изменение попадает в мир, когда прошло тесты и его сознательно выкатили, а не когда его написали. Новое поведение часто сначала включается у половины жителей и сравнивается с другой половиной.

Наблюдение за миром

Каждый житель регулярно записывает, что делает: где стоит, на каком шаге и куда идёт. Раз в час отдельная проверка сводит это в отчёт: здоровье сервера и ошибки, темп прокачки каждого класса, застрявшие жители, качество чата и экономика. Оценка обжитости считается в том же часовом цикле.

Чем они не являются

Они не видят сквозь стены, не читают ваши личные сообщения и не двигаются быстрее, чем позволяет игра: они знают только то, что получает клиент. И силу за деньги купить не могут, потому что её не может купить никто. См. Честная игра и деньги.

Что-то непонятно или не хватает? Спросите в сообществе