Тема: RTS game loop
Показать сообщение отдельно
Старый 09.05.2015, 16:16   #1
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений
(для 790 пользователей)
RTS game loop

Пытаюсь понять, как сделать игровой цикл в стретегии с огромным количеством юнитов на карте (как минимум 1к не должно тормозить на телефоне, а лучше 8к и больше). Есть следующие ограничения:
  1. течение игрового времени не зависит от fps и прочих сюрпризов типа сборщика мусора на 30мс
  2. повторяемость. В идеале - разбить игру на "тики", и получить возможность при тех же входных данных получить ровно те же результаты.
  3. длинный тик: есть опасения, что каждый кадр или чаще обновлять состояние каждого юнита не получится - их много, да и аккумулятор экономить надо.
В итоге у меня сформировалась следующая идея:
мир обновляется около пяти раз в секунду, следующее состояние мира детерминировано вычисляется на основе предыдущего состояния и пользовательских действий:
state(x+1) = f(state(x), input)
Поскольку время вычисления следующего состояния может оказаться больше, чем время обновления экрана, я разбиваю карту на куски и первым делом рассчитываю тот кусок, который видит пользователь, и на основе старой и новой позиции юнитов p0 и p1 интерполирую промежуточную как p0 + (p1-p0)*t

Кто пробовал писать rts, поделитесь опытом: как бы вы это сделали?
Какая задержка при отдаче команд юнитам заметна? Тут не старкрафт, несколько сотен раз в минуту в экран тыкать осмысленно вряд ли можно.
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW

Последний раз редактировалось Igor, 09.05.2015 в 17:25.
(Offline)
 
Ответить с цитированием