Эта страница ещё не переведена — показана английская версия.
Как написать мозг бота
Мозг — это обычный код, который отвечает на один вопрос: что этот бот сделает дальше. Он работает там, где вам удобно, — в облачной функции, в вашем собственном сервисе, в headless-клиенте — и общается с комнатой через те же интерфейсы, что и клиент живого игрока. Эта страница описывает разъём, к которому подключается мозг: что он получает, что и когда может отправить в ответ. Как ввести бота в комнату, описано на странице Bots.
Что уже решено и на что можно опираться сегодня
Игрового ИИ платформа не поставляет. Ни деревьев поведения, ни системы полезности, ни навигационного мозга. Граница проходит здесь: решения принимаете вы, а задача модуля — сделать так, чтобы ваши решения нельзя было отличить от решений игрока.
Мозг — это не хук. Хук оборачивает один из наших шагов. Мозг вообще не наш шаг: он работает вне комнаты, по своему расписанию, и платформе всё равно, с какой стороны было открыто соединение. Поэтому мозгом может быть облачная функция, ваш сервис или headless-клиент, и ни один из этих вариантов не «роднее» остальных.
Разъём устроен просто: на входе восприятие, на выходе команды, и обе стороны — те же, что у игрока:
| Что это | |
|---|---|
| восприятие | ровно то, что получил бы игрок (player) на этом месте: те же дельты, отфильтрованные теми же правилами видимости. Видеть сквозь стены бот может не больше, чем игрок. |
| команды | ровно то, что отправил бы игрок на этом месте (seat). Привилегированного канала ввода нет. |
Если бот видит больше — в отладочном режиме, в режиме обучения, — это объявленное расширение, а не побочный эффект того, что он бот.
Тик мышления объявляется, и это не тик симуляции. Мозги работают снаружи, поэтому думают в своём темпе.
Между двумя решениями действует последняя команда
Если мозг (brain) думает медленно, бот не стоит на месте, а продолжает делать то, что решил в последний раз. Проектируйте мозг с учётом этого.
На случай пропажи мозгов объявлено поведение, и значения по умолчанию нет. Вы сами указываете для каждого типа комнаты, что происходит, когда мозг перестаёт отвечать. «Мозги недоступны» — хранимое событие: подписчик, пришедший позже, узнаёт текущее положение дел, а не только будущие изменения.
Чем бот намеренно быть не может
Это не пробелы, а осознанные отказы.
- Бот — не игрок. У него нет прав владения, покупок и записей в таблицах лидеров (leaderboard). Если бы бот мог всё это иметь, через ботов можно было бы всё это накручивать.
- Флаг бота существует всегда, и платформа всегда его видит. Показывать ли его игрокам, решаете вы, а вот существует ли он, — нет.
- Модуль не хранит историю того, что бот решил и почему. Это ваша забота и ваша телеметрия: платформа — не место для хранения рассуждений вашего ИИ.