Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование игр, графики и искусственного интеллекта > Тик времени в браузерных играх


Автор: ShellRaiser 1.5.2012, 20:07
У меня возник вопрос, как сервером обычно отрабатывается следующая логика:
-добыча урана 5 едениц в час. 

1) просчитывает ли сервер эту информацию в режиме реального времени, 
либо как мне сейчас пришла мысль в голову:
2) при запросе данных игрока, произвести калькуляцию добытого урана с момента прошлого обновления по текущее?

просто тут еще возникает момент например:
-строится рудник по добыче урана, который даст еще +5 к добыче в час
-теперь при запросе надо прочитать время и добытые ресурсы до постройки + тоже самое только после постройки?
* к примеру в таком случае как я видел в играх добыча приостанавливалась

во втором варианте более экономно по ресурсам будет как я понимаю

собственно как этоти моменты прощитываются в обычных браузерных играх?

Автор: Yahmos 22.6.2012, 16:39
Если 5 единиц в час, то в сессии игрока ставится счетчик на число выполнений в час, который обнуляется при первом обновлении в след. часе. 

Автор: nucer 3.11.2012, 17:49
Кстати, вопрос интересный, и касается он не только браузерных игр, но и риалтаймовых в том случае, если игрок ушёл в оффлайн, а шахта продолжает качать smile А таких шахт/лесопилок/рудников/свиноферм/итдитп может быть несколько десятков и даже сотен тысяч...

1) Делать что то навроде очереди (демона отдельным потоком, либо cron в случае браузерок) и проверять раз в n-времени каждый объект... Вариант рабочий, но при большом количестве объектов интервал проверки каждого объекта будет достаточно велик.
а) Нужно предусмотреть механизм немедленного (досрочного) обновления объекта - например, при заходе игрока онлайн или же изменении параметров объекта. Например, если в отсутствие игрока шахту вдруг разрушили, тогда нужно добавить ему в "копилку" то, что ей было добыто до этого.
б) Также нужно предусмотреть механизм синхронизации. Особенно для браузерных игр, где возможна ситуация, когда скрипт, работающий по крону выбрал из базы "пачку" объектов для обновления и в этот самый момент заходит юзер...

Может кто то подскажет более эффективные решения, чем демон или крон?))

Автор: DeLuxis 6.12.2012, 09:27
Я бы данную проблему решил через события.
Каждая шахта добывает ресурсы допустим раз в пять секунд, определенное количество.
И каждые пять секунд у шахты созавать событие на добычу ресурса.
Обработчик ловит событие и добавляет ресурсы в копилку. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)