Многопользовательский игровой сервер, структура клиентской базы данных - PullRequest
0 голосов
/ 08 сентября 2018

У меня был общий вопрос о том, как хранятся игровые данные для многопользовательских игр. Предметы и персонажи имеют базовую статистику, а также статистику, полученную во время игры через улучшения и т. Д.

Я бы хотел сохранить статистику, полученную в серверной базе данных, но я не был уверен в базовом значении. Специально для мобильной игры, я думал, что объем данных, передаваемых туда и обратно, должен быть максимально уменьшен.

Было бы плохим решением хранить эти базовые значения для клиентской части элементов / символов, используя prefab / scriptable объект (я использую Unity)? Битва будет происходить на стороне клиента, и сервер обрабатывает в основном чтение / запись в базу данных игровых данных игрока. Основное взаимодействие между игроками - это не битва между игроками в реальном времени, а нечто похожее на столкновение кланов.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

То, что я хотел бы сделать, это обеспечить децентрализованную или распределенную базу данных, иметь источник правды, где базовые элементы всегда доступны там, на глобально реплицированной основе (при условии, что это имеет значение), и затем клиент должен также реализовать локальный кэш своих собственных (как это делает React), где необходимые данные хранятся в локальной БД, которая синхронизируется с удаленной БД. Теперь игровой клиент общается только с локальной БД, а умения синхронизации и т. Д. Оставляются на уровне БД, что значительно упрощает код приложения.

0 голосов
/ 11 сентября 2018

На мой взгляд, есть два способа сделать это правильно:

Хранить базовые элементы только на стороне клиента .Если вы хотите обновить их позже, вам нужно будет опубликовать новую сборку вашего проекта, но вам не нужно делать веб-запросы.

Храните базовые элементы на стороне сервера .Вы можете сохранить их в своей базе данных и позволить клиенту получить их, т.е. когда игра начнется.Таким образом, у каждого подключенного игрока всегда будет текущая базовая статистика.

Другая возможность, в зависимости от объема вашего проекта, состоит в том, чтобы иметь две базы данных.Один на стороне сервера и один на стороне клиента.Затем, каждый раз, когда игра запускается, вы проверяете обновления на своем сервере (вы можете использовать некоторую контрольную сумму или номер версии, чтобы сделать это проще).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...