Куча юнитов через модем
От: CaDIsT  
Дата: 10.01.05 09:19
Оценка:
Такая незадача: у игрока в армии до 50-ти человек, он со своими 9-ю союзниками (так же игроками с 50 юнитами у каждого) нападает на замок, который защищают 10 вражеских игроков (опять же у каждого по 50 юнитов). итого на одном клочке мира сражаются около 1000 юнитов. Многие юниты могут не только дратся но и кастовать магию на автопилоте и др.
Вопрос в следующем: реально ли эту битву передать по модему со скорость 56кбс без лагов?
Кто с чем к нам зачем, тот от того и того!!!
Re: Куча юнитов через модем
От: yxiie Украина www.enkord.com
Дата: 10.01.05 09:41
Оценка:
Здравствуйте, CaDIsT, Вы писали:

CDI>Такая незадача: у игрока в армии до 50-ти человек, он со своими 9-ю союзниками (так же игроками с 50 юнитами у каждого) нападает на замок, который защищают 10 вражеских игроков (опять же у каждого по 50 юнитов). итого на одном клочке мира сражаются около 1000 юнитов. Многие юниты могут не только дратся но и кастовать магию на автопилоте и др.

CDI>Вопрос в следующем: реально ли эту битву передать по модему со скорость 56кбс без лагов?

в Казаках по-моему и по-больше было...
... << RSDN@Home 1.1.3 stable >>
Re: Куча юнитов через модем
От: antidogm  
Дата: 10.01.05 09:47
Оценка:
Здравствуйте, CaDIsT, Вы писали:

CDI>Такая незадача: у игрока в армии до 50-ти человек, он со своими 9-ю союзниками (так же игроками с 50 юнитами у каждого) нападает на замок, который защищают 10 вражеских игроков (опять же у каждого по 50 юнитов). итого на одном клочке мира сражаются около 1000 юнитов. Многие юниты могут не только дратся но и кастовать магию на автопилоте и др.

CDI>Вопрос в следующем: реально ли эту битву передать по модему со скорость 56кбс без лагов?

а как насчёт передавать по модему только команды игрока на сервер — их ведь меньше чем изменений состояния юнитов заведомо на порядок. а сервер сам будет двигать юнитов. трафик в разы упадёт ?
natural born flamer
Re: Куча юнитов через модем
От: akasoft Россия  
Дата: 10.01.05 12:25
Оценка:
Здравствуйте, CaDIsT, Вы писали:

CDI>Вопрос в следующем: реально ли эту битву передать по модему со скорость 56кбс без лагов?


Ну давай прикинем... 56К это будет что-то вроде 6 кБ/сек в среднем (при моих 4 кБ/сек на 33.6). Если у тебя РТС, то весь вопрос, сколько у тебя игровых тиков секунду.

Пусть за основу возьмём пропускную способность 4 кБ/сек, т.е. грубо говоря 4000 байт. В этот пакет мы должны поместить всю инфу о ходе битвы. В начале битвы пакет данных может быть и поболе, игрок может подождать несколько секунд синхронизации и не застрелится. Тут передаётся полный пакет: положение юнитов, их характеристики, инфа о местности и т.п.

Ну а теперь передаются только изменения в мире: кто куда переместился, какую магию на кого вызвал и т.п. Вполне может хватить, особенно если оптимизировать данные: координаты упаковать в байт (0..255 или -128..127) вместо двойного слова, то же и с магией, использовать индексы юнитов в "глобальном массиве" вместо полной их передачи со всеми характеристиками.

Возможно, стоит предусмотреть и полную синхронизацию игрового мира со всей инфой, раз в минуту или чаще/реже...
... << RSDN@Home 1.1.4 beta 3 rev. 273 silent >>
Re: Куча юнитов через модем
От: AshenAngel  
Дата: 10.01.05 13:17
Оценка:
CDI>Вопрос в следующем: реально ли эту битву передать по модему со скорость 56кбс без лагов?

Думаю вполне реально, однако, попотеть придётся.

Для начала поделим все пакеты на update и control.

Посылать update-данные будем каждые 40млсек.
В них мы указываем какому юниту какой приказ дан.
Понадобиться максимум 1 байт и 3 float'а (координаты цели например).
Если приказ с предыдущего раза не изменился, ничего посылать не надо.
Получив такой пакет мы будем просто отдавать этот приказ своей копии
юнита (т.о. игра идёт в реальном времени на каждом клиенте).
Пиковая нагрузка (почти невозможна):
Исходящий поток: 50*sizeof(updatepack_t) = 50*(1+3*4) = 650 байт
Входящий поток: 18*50*sizeof(updatepack_t) = 11700 байт
Компрессия в модеме срежет эти цифры раза в 4 минимум.

Однако тут есть проблема, а именно рассинхронизация миров на разных
клиентах. Для её решения делаем ещё control-пакеты.
Эти пакеты будем отсылать каждую секунду, данные в пакете характеризуют
полное состояние юнита (координаты, скорость, текущие действия и приказы...)
Трафик можешь сам посчитать исходя из особенностей геймплея.

PS: некоторые замечания по геймплею. К сведению, число атакующих должно
быть в 5-7 раз больше числа осаждённых, иначе осада не имеет смысла.
Re: Куча юнитов через модем
От: CaDIsT  
Дата: 13.01.05 16:08
Оценка:
Всем спасибо. Понятно, что это реально, и что придется попотеть. основные идеи так же уловил.

ЗЫ: to AshenAngel по науке на одного солдата в окопе требуется по умолчанию 3 солдата атакующего. Соответственно для осады замка действительно требуется 5-7 к одному.
Кто с чем к нам зачем, тот от того и того!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.