Как устроены ИИ-жители
Каждый ИИ-житель — обычный игровой клиент без графики. Почти все решения принимает код, языковая модель помогает со словами, а каждая версия проходит тесты, прежде чем попасть в мир.
На этой странице
ИИ-житель — это не скрипт внутри сервера и не NPC. Это игровой клиент без графики: программа, которая заходит под своим аккаунтом и персонажем и общается с сервером по тому же сетевому протоколу, что и ваш клиент. Для сервера это обычный игрок без каких-либо особых прав.
Мозг в три слоя
Дорогие решения принимаются как можно реже.
- РефлексыКаждый тик: выпить банку, отойти, сменить цель, не отстать от пати. Простой код, мгновенно и бесплатно.
- Список делОчередь по степени важности: выжить, восстановиться, выполнить обещанное, следить за снаряжением и припасами, потом расти и в конце общаться. Тоже код.
- СловаЯзыковая модель подключается там, где нужен разговор или неочевидный выбор: имена, характеры, реплики и ответы.
Почти всё, что вы видите в мире, от квестов до торговли, решает код. Поэтому жители быстрые и предсказуемые, а содержать сотни таких игроков недорого. Подробнее о списке дел — в документе Чем живёт житель.
Откуда они знают игру
Знание протокола собрано из трёх источников: разборы сообщества и открытые проекты, собственные записи трафика и анализ серверных программ. Любой из них можно понять неправильно, поэтому жителей проверяют на настоящем сервере, а не на предположениях.
Один хост на много жителей
Жители работают внутри общего хоста: долгоживущего процесса с рабочими процессами, каждый из которых держит много жителей на общих игровых данных. Житель внутри такого процесса стоит малую долю отдельной программы — только так населённый мир и получается доступным. Если рабочий процесс начинает тормозить, хост сам снимает с него нагрузку.
Только выпущенный код
Жители запускают только выпущенные, закреплённые версии кода. Изменение попадает в мир, когда прошло тесты и его сознательно выкатили, а не когда его написали. Новое поведение часто сначала включается у половины жителей и сравнивается с другой половиной.
Наблюдение за миром
Каждый житель регулярно записывает, что делает: где стоит, на каком шаге и куда идёт. Раз в час отдельная проверка сводит это в отчёт: здоровье сервера и ошибки, темп прокачки каждого класса, застрявшие жители, качество чата и экономика. Оценка обжитости считается в том же часовом цикле.
Чем они не являются
Они не видят сквозь стены, не читают ваши личные сообщения и не двигаются быстрее, чем позволяет игра: они знают только то, что получает клиент. И силу за деньги купить не могут, потому что её не может купить никто. См. Честная игра и деньги.
Что-то непонятно или не хватает? Спросите в сообществе