Тип: интеграция карта-сервер
Статус: концепт
Концептуальное описание не является финальной версией. Оно может измениться в любое время.

Описание

В некоторых картах полезна функция хранения данных на сервере. Данная спецификация описывает инициализацию и способ использования переносимой хеш таблицы.

Основные термины

Фейкплеер - неконтролируемый игрок. Карта его определяет как игрока, но на стороне хостбота он не является игроком. Хостбот от его лица может отправлять сетевые команды.
SlotId или SID - номер занимаемого слота игроком.
AccountId - уникальный номер учетной записи на стороне хостбота.

Интеграция

Предварительные условия

  1. Карта должна предусмотреть слот для фейкплеера. Этот слот может быть изначально занят ботом, но карта не должна ломаться если бота заменит фейкплеер.
  2. Игра должна запускаться через лаунчер UjAPI версии, в которой есть поддержка синхронизации хештаблицы.
  3. Вы теряете первый ключ. Он зарезервирован для SlotId

Описание процесса интеграции

  1. После загрузки карты необходимо инициализировать хештаблицу. Для этого создаем ее, помещаем по ключу [-1] [0] cтроку Init. Синхронизируем ключ.
  2. Бот берет из базы данных сохраненные ранее ключи и их значения. Данные привязываются по AccountId, то есть под одним ключом хеш-таблицы могут храниться разные данные у разных игроков.
  3. Происходит конвертация AccountId в SlotId. Это необходимо для того, чтобы карта могла без дополнительных поисков обращаться сразу по нужной паре ключей за значением.
  4. Бот выполняет синхронизацию своей копии хеш-таблицы с игрой.
  5. После отправки данных бот генерирует синхронизацию по ключу [-1][1] со значением, которое соответствует режиму учета изменений (см. следующий раздел). Получение данной синхронизации говорит о том, что хеш-таблица готова к использованию.
  6. По мере необходимости синхронизируйте новые значения через эту хеш-таблицу.
  7. Проводите чтения из хеш-таблицы по следующему алгоритму ht[SlotId][key], где key - это ключ под которым сохранялись ранее данные.

Режимы учета

Планируется к реализации 3 режима учета:
Номер типа Описание
0 Синхронизация своих данных. Синхронизированные данные будут привязаны к игроку, который отправляет синхронизацию. При этом первый ключ игнорируется.
1 Ведущий игрок. Хостбот выбирает ведущего игрока, от которого он будет учитывать данные для синхронизации. Все синхронизируемые данные должен отправлять только он.
2 Всё от всех. Каждую синхронизацию отправляют все оставшиеся игроки. Синхронизация будет учтена, если нет разногласий в отправленных данных
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.