Тип: интеграция карта-сервер
Статус: концепт
Статус: концепт
Концептуальное описание не является финальной версией. Оно может измениться в любое время.
Описание
В некоторых картах полезна функция хранения данных на сервере. Данная спецификация описывает инициализацию и способ использования переносимой хеш таблицы.
Основные термины
Фейкплеер - неконтролируемый игрок. Карта его определяет как игрока, но на стороне хостбота он не является игроком. Хостбот от его лица может отправлять сетевые команды.
SlotId или SID - номер занимаемого слота игроком.
AccountId - уникальный номер учетной записи на стороне хостбота.
Интеграция
Предварительные условия
- Карта должна предусмотреть слот для фейкплеера. Этот слот может быть изначально занят ботом, но карта не должна ломаться если бота заменит фейкплеер.
- Игра должна запускаться через лаунчер UjAPI версии, в которой есть поддержка синхронизации хештаблицы.
- Вы теряете первый ключ. Он зарезервирован для SlotId
Описание процесса интеграции
- После загрузки карты необходимо инициализировать хештаблицу. Для этого создаем ее, помещаем по ключу [-1] [0] cтроку Init. Синхронизируем ключ.
- Бот берет из базы данных сохраненные ранее ключи и их значения. Данные привязываются по AccountId, то есть под одним ключом хеш-таблицы могут храниться разные данные у разных игроков.
- Происходит конвертация AccountId в SlotId. Это необходимо для того, чтобы карта могла без дополнительных поисков обращаться сразу по нужной паре ключей за значением.
- Бот выполняет синхронизацию своей копии хеш-таблицы с игрой.
- После отправки данных бот генерирует синхронизацию по ключу [-1][1] со значением, которое соответствует режиму учета изменений (см. следующий раздел). Получение данной синхронизации говорит о том, что хеш-таблица готова к использованию.
- По мере необходимости синхронизируйте новые значения через эту хеш-таблицу.
- Проводите чтения из хеш-таблицы по следующему алгоритму ht[SlotId][key], где key - это ключ под которым сохранялись ранее данные.
Режимы учета
Планируется к реализации 3 режима учета:
Номер типа | Описание |
---|---|
0 | Синхронизация своих данных. Синхронизированные данные будут привязаны к игроку, который отправляет синхронизацию. При этом первый ключ игнорируется. |
1 | Ведущий игрок. Хостбот выбирает ведущего игрока, от которого он будет учитывать данные для синхронизации. Все синхронизируемые данные должен отправлять только он. |
2 | Всё от всех. Каждую синхронизацию отправляют все оставшиеся игроки. Синхронизация будет учтена, если нет разногласий в отправленных данных |