Изчислете ресурсите в игра с уеб браузър в реално време

Реших да напиша игра за уеб браузър. Но умът ми се разболява, когато се опитвам да мисля как да кодирам ресурсите, показани на всеки играч, когато това показва уебсайта.

Например:

Потребител 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