Перейти к основному содержимому
Живая игра

Эта страница ещё не переведена — показана английская версия.

Как написать мозг бота

Мозг — это обычный код, который отвечает на один вопрос: что этот бот сделает дальше. Он работает там, где вам удобно, — в облачной функции, в вашем собственном сервисе, в headless-клиенте — и общается с комнатой через те же интерфейсы, что и клиент живого игрока. Эта страница описывает разъём, к которому подключается мозг: что он получает, что и когда может отправить в ответ. Как ввести бота в комнату, описано на странице Bots.

Что уже решено и на что можно опираться сегодня

Игрового ИИ платформа не поставляет. Ни деревьев поведения, ни системы полезности, ни навигационного мозга. Граница проходит здесь: решения принимаете вы, а задача модуля — сделать так, чтобы ваши решения нельзя было отличить от решений игрока.

Мозг — это не хук. Хук оборачивает один из наших шагов. Мозг вообще не наш шаг: он работает вне комнаты, по своему расписанию, и платформе всё равно, с какой стороны было открыто соединение. Поэтому мозгом может быть облачная функция, ваш сервис или headless-клиент, и ни один из этих вариантов не «роднее» остальных.

Разъём устроен просто: на входе восприятие, на выходе команды, и обе стороны — те же, что у игрока:

Что это
восприятиеровно то, что получил бы игрок (player) на этом месте: те же дельты, отфильтрованные теми же правилами видимости. Видеть сквозь стены бот может не больше, чем игрок.
командыровно то, что отправил бы игрок на этом месте (seat). Привилегированного канала ввода нет.

Если бот видит больше — в отладочном режиме, в режиме обучения, — это объявленное расширение, а не побочный эффект того, что он бот.

Тик мышления объявляется, и это не тик симуляции. Мозги работают снаружи, поэтому думают в своём темпе.

Между двумя решениями действует последняя команда

Если мозг (brain) думает медленно, бот не стоит на месте, а продолжает делать то, что решил в последний раз. Проектируйте мозг с учётом этого.

На случай пропажи мозгов объявлено поведение, и значения по умолчанию нет. Вы сами указываете для каждого типа комнаты, что происходит, когда мозг перестаёт отвечать. «Мозги недоступны» — хранимое событие: подписчик, пришедший позже, узнаёт текущее положение дел, а не только будущие изменения.

Чем бот намеренно быть не может

Это не пробелы, а осознанные отказы.

  • Бот — не игрок. У него нет прав владения, покупок и записей в таблицах лидеров (leaderboard). Если бы бот мог всё это иметь, через ботов можно было бы всё это накручивать.
  • Флаг бота существует всегда, и платформа всегда его видит. Показывать ли его игрокам, решаете вы, а вот существует ли он, — нет.
  • Модуль не хранит историю того, что бот решил и почему. Это ваша забота и ваша телеметрия: платформа — не место для хранения рассуждений вашего ИИ.