Как реализуются очереди в онлайн-играх?

Меня всё мучает вопрос, как в обычных браузерных играх, в играх в соц.сетях реализуется выполнение задач по времени: постройка юнитов, зданий, отправка юнитов.


Есть задание, есть время когда оно должно выполниться. Но всё это должно выполняться в реальном времени. Т.е. вне зависимости от того есть я или нет меня в игре, мои противники все равно увидят результат.


Какие инструменты и способы существуют для решения подобных задач?
  • Вопрос задан
  • 3215 просмотров
Решения вопроса 1
damirazo
@damirazo
Software developer
Как-то потребовалось создать модуль для браузерной игры, отвечающий за восстановления уровня жизни персонажа. Задача решилась денормализацией БД — добавил поле hp_last_update. Значение данного поля обновлялось при каждом обращении к объекту пользователя, вне зависимости от того есть он в сети или нет. А дальше уже дело техники — у нас есть текущее значение уровня жизни и максимально допустимое, а также скорость ее восстановления. С помощью несложной формулы мы, при следующем обновлении, можем подсчитать на сколько должен был восстановиться уровень жизни с момента предыдущего обновления и меняем данный параметр. Подобный метод применим и к другим игровым объектам.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Отдельная таблица для текущих задач с полем времени выполнения. По необходимости проверяется время если оно подошло то, задача выполняется. Выполненную задачу лучше удалять (хотя зависит от ситуации).
За абсолютным «реалтайм» не гонитесь — это не достижимо, погрешности будут всегда.
Ответ написан
Комментировать
Eternalko
@Eternalko
Страшное слово такое: крон.
Ответ написан
Sect0R
@Sect0R
Full Stack Developer
Нужно делать 2 вещи:
1. да, отдельное поле в бд или таблица
2. для реалтайма — frontend скрипт (js или flash не важно) который сам будет проверять завершено задание или нет.

Тут даже крон не нужен и реалтаймом попахивать будет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы