Задать вопрос
@kosarinin

Как происходит начисление ресурсов в онлайн играх (травиан)?

Привет и спасибо за потраченное время!

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

Дано:
- Игровой сервер имеет n пользователей и у каждого пользователя своя скорость добычи ресурсов.
- Пользователь имеет скорость добычи дерева 60ед/мин
- Пользователь строит военных юнитов в количестве 1000штук и скоростью 1юнит в 90секунд

Условия:
- Ресурсы должны начисляться каждую секунду;
- Начисление военных юнитов происходит после готовности 1 юнита, а не заказанной "пачки"

Как вижу я:
- Имеем "ресурсный" сервер для обслуживания 1000 пользователей. При старте он рассчитает кол-во начисляемых единиц дерева в секунду для каждого пользователя. Теперь проходим всех пользователей каждую секунду и просто увеличиваем на нужное количество единиц и в конце цикла флашим изменения в хранилище;
- По аналогу имеем сервер "военных юнитов". Когда пользователь заказывает строительство юнитов на сервер попадает "транзакция" . Транзакция - это структура данных с информацией о (типе юнита, требуемом количестве, скорости строительства, количестве уже построенных юнитов и времени последнего построенного юнита). Теперь аналогично каждую секунду проходим по транзакциям и проверяем можем ли увеличить счетчик юнитов на 1, думаю данных из транзакции должно хватить. В конце цикла флашим изменения в хранилище.

Так ли это должно работать и если нет, то кто может рассказать и объяснить как должно? Ссылки по теме приветствуются :)
  • Вопрос задан
  • 175 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Griboks
@Griboks
Нет, неправильно. Подобные вещи работают по модели событий. Игрок входит в игру - игра отправляет событие на сервер, сервер вычисляет все изменения за время оффлайна.
Сам по себе игрок играет в чёрный ящик с кнопками. Игра начинается, когда нажимается кнопка. Чёрный ящик (сервер) обрабатывает действие и результаты предыдущих действий (все подобные игры пошаговые, даже если у вас там какие-то таймеры отображаются). Возвращает красивую картинку.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы