Расчет ресурсов в браузерной игре в режиме реального времени

Решил написать браузерную игру. Но мой разум сходит с ума, когда я пытаюсь думать, как закодировать ресурсы, отображаемые каждым игроком, когда он отображает веб-сайт.

Например:

У пользователя 1 сейчас 500 золотых, и он производит +100 золотых каждый час, как я могу показать реальные ресурсы, когда пользователь открывает веб-сайт?

Каков наилучший способ?

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

Думаю, что я понятия не имею, как кодировать.

Любые идеи?

Спасибо


person BugFixer    schedule 21.03.2014    source источник


Ответы (1)


Когда пользователь взаимодействует с вашим веб-сайтом, посмотрите на дату, когда вы в последний раз обновляли его количество золота. Если прошло более 1 часа, увеличьте количество золота на количество часов, прошедших с момента последнего взаимодействия, и обновите сохраненную дату.

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

Обновление: сохраните время следующего обновления вместо последнего, чтобы избежать множественных вычислений (то есть сохраните отметку времени текущего обновления + 1 час). А затем сравните текущее время с сохраненным временем.

person Pascal Le Merrer    schedule 21.03.2014
comment
Спасибо за ответ, но золото увеличивается каждую секунду, а не каждый час. Итак, вы думаете, что было бы неплохо подсчитать фактические ресурсы, когда пользователь входит в систему? - person BugFixer; 25.03.2014
comment
Да, я думаю, что вы должны ограничить количество запросов к серверу, обновляя золото только тогда, когда пользователь подключен и на экране, на котором он видит свое золото. Сколько одновременных игроков у вас будет? - person Pascal Le Merrer; 25.03.2014
comment
Я не знаю, пока. Я еще не программировал, просто думал. Тай - person BugFixer; 26.03.2014
comment
Вы, конечно, не можете делать запрос каждую секунду для подключенных игроков. Я играл в браузерную игру с PHP-бэкэндом, и запросы были гораздо чаще, чем один в секунду, и возвращали гораздо больше данных, чем просто количество золота. Итак, начните с этого, затем, если вы экспериментируете с производительностью или проблемой с полосой пропускания, выполните некоторое профилирование, чтобы убедиться, что именно золотое обновление вызывает проблему, и только затем попытайтесь оптимизировать его. - person Pascal Le Merrer; 26.03.2014