RTS game loop
Пытаюсь понять, как сделать игровой цикл в стретегии с огромным количеством юнитов на карте (как минимум 1к не должно тормозить на телефоне, а лучше 8к и больше). Есть следующие ограничения:
мир обновляется около пяти раз в секунду, следующее состояние мира детерминировано вычисляется на основе предыдущего состояния и пользовательских действий: state(x+1) = f(state(x), input) Поскольку время вычисления следующего состояния может оказаться больше, чем время обновления экрана, я разбиваю карту на куски и первым делом рассчитываю тот кусок, который видит пользователь, и на основе старой и новой позиции юнитов p0 и p1 интерполирую промежуточную как p0 + (p1-p0)*t Кто пробовал писать rts, поделитесь опытом: как бы вы это сделали? Какая задержка при отдаче команд юнитам заметна? Тут не старкрафт, несколько сотен раз в минуту в экран тыкать осмысленно вряд ли можно. |
Ответ: RTS game loop
Опыта разработки RTS нет, но первое что приходит в голову это разделить юнитов стоящих и идущих/сражающихся. Я думаю что вторых в разы меньше, а первых обновлять не надо или очень редко. Предложение с кусками карты, которые видит пользователь, тоже дельное, но я думаю сложнее и его реализовывать надо после выше предложенного. Ещё вроде как в Total War обрабатываются отряды целиком, какими то общими формулами, а если на него смотрит пользователь, то исходя из состояния отряда генерируются отдельные юниты и их действия. По этой причине движок Total War не может симулировать современные сражения, где нет отрядов.
|
Ответ: RTS game loop
Спустя 4 года отвечаю еще раз.
Цитата:
Цитата:
|
Ответ: RTS game loop
Цитата:
|
Ответ: RTS game loop
Цитата:
https://astralax.ru/articles/pathway Чтобы подобный алгоритм повторить, нужно быть крайне продвинутым. Я бы советовал начать с простого приближения без применения поиска пути, а потом уже пробовать поиск пути. Пример алгоритма приближения: Код:
if(xtarget>xpos)xpos++; А вообще тема разработки RTS очень объемная, там очень много всяких алгоритмов. |
Часовой пояс GMT +4, время: 21:46. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot