За последние 24 часа нас посетили 18497 программистов и 1607 роботов. Сейчас ищут 853 программиста ...

Создание многопользовательской браузерной онлайн игры

Тема в разделе "Прочие вопросы по PHP", создана пользователем damage220, 10 ноя 2013.

  1. damage220

    damage220 Новичок

    С нами с:
    10 ноя 2013
    Сообщения:
    1
    Симпатии:
    0
    Собственно, интересует любая литература по данному вопросу. Если конкретно, то не знаю как справиться с такой нагрузкой, опыта не было совсем. Подскажите куда смотреть: node.js, phpDaemon?
    Если совсем конкретно, подскажите как реализовать следующее:
    Допустим у нас есть фабрики, которые добывают необходимые ресурсы, продуктивность которых постоянно растет. Как сделать, чтобы пользователь в реальном времени видел сколько у него ресурсов? Предположим, через Ajax можно сделать запрос к бд, но и бд в таком случае будет слишком нагружена, ведь каждую секунду придется делать запрос, да и пользователь не один.
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    а писать эти данные в БД кто будет? :) В реалтайме планируете? У вас же будет какая-то формула рассчета этого производства. Храните в мемкеше каком-нибудь переменные, используемые в момент времени для рассчета и переменную, указывающую время последнего обновления. В браузере по той же формуле считайте прогресс на JS. А на сервере просто по факту обращения делайте рассчет исходя из того, сколько прошло времени.

    Если выше написал несколько сумбурно, то попытаюсь разъяснить - соль в том, чтобы не было никаких рассчетов в реальном времени. Вообще. Есть такой прием как "восстановление данных". Например, задача: пользователь копает руду. В минуту он копает тонну. Задача разделяется на две части - визуализация и сохранение данных. У пользователя браузер открыт 5 минут подряд. Он хочет видеть прогресс. Можно рассчитывать в реальном времени его прогресс на сервере и раз в минуту дергать ajax. А можно вообще не нагружать сервер, раз в минуту просто добавляя единичку в браузере js-ом. При этом на сервере нет никаких нагрузок - когда пользователь закончил копать, мы просто сравниваем время начала копания со временем конца и домножаем на количество руды в минуту. То же самое, если пользователь обновил страничку. Просто рассчитываем в данный момент количество и снова тикаем время. Потом то, что получится, прибавим к тому, что уже имелось при последнем обновлении. Фокус в том, что пользователь видит числа. Не важно, рождены они браузером или пришли с сервера. Важна только стартовая информация.