Где хранить пользовательские данные онлайн-игр

Я пытаюсь создать настольную онлайн-игру, используя платформу Play. Это мое первое такое приложение. Важно иметь хорошее время отклика для конечных пользователей. Давайте представим себе игру, похожую на монополию, в которой несколько пользователей играют в эту игру, покупают разные локации, строят дома или отели в этом месте и т. Д. Каждый ход, в который играет пользователь, вносит некоторые изменения в вид доски, характерной для этого пользователя. Например, если у доски есть 40 локаций, когда пользователь1 покупает локацию1, в свой следующий ход доска должна смотреть на него так, как будто локация1 была куплена им. Вид доски различен для разных пользователей, так как они играют в игру, в зависимости от того, какой ход они делают.

Таким образом, вопрос в том, где я могу хранить пользовательские данные по ходу игры, не влияя на время отклика при каждом извлечении данных с доски? Если это кеш, то какой может быть допустимый лимит данных, который можно поместить в кеш для каждого пользователя?

Спасибо

1 ответ

Решение полностью зависит от вашей среды. для кеширования нужно указать стратегию и реализацию.

Если ваше веб-приложение работает только на одном сервере, ваша задача проста, вы можете использовать внутрипроцессный кеш и реализовать его с помощью.Net Cache (если вы используете.Net) или memcache, который можно использовать в большинстве сред. Но если у вас есть более одного сервера для совместного использования и доступа к данным кеша, вам нужно использовать внепроцессный кеш, для которого вы можете использовать memcache или любого другого провайдера кеша, который может дать вам доступ к кешу памяти из памяти вашего приложение.

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

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

Вы также можете использовать базы данных No-Sql, которые работают намного быстрее, чем базы данных SQL (не быстрее, чем кэш в памяти) и гораздо более устойчивы по сравнению с кэшами. Вы можете хранить свои живые игровые данные в базах данных No-SQL и хранить другие данные в базах данных SQL. Таким образом, вы можете иметь смешанный раствор.

Другие вопросы по тегам