Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Расчет теоретического пика коннектов для UDP игр. | страница 1
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 1 из 2
На страницу: 1, 2  След. | Все страницы
Поиск в этой теме:
Канал Игры Мечты: «Расчет теоретического пика коннектов для UDP игр.»
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
Итак дано:
ММО Space Shooter.

Метод обновления контента: UDP.

Необходимо: Реализовать максимально эффективную схему передачи данных считая что сервер бесконечно быстрый.

Итак... Мои мысли на этот счет:

Что надо передавать? Для каждого КА в момент времени (в кадр) надо знать его X, Y, Z и 3 компоненты поворота. (Не помню правильного их название... Тангаж, Рысканье и еще что-то).
Допустим в тупую: 6 double'ов... Это 6 * 8 = 48 байт на 1 КА. Если считать что у нас 30 кадров и 128КБит/сек, то будет: 11 КА. Все... Дальше не вытянет.

Мысли для оптимизации:
1) Всегда передавать координаты, с 0 точкой в КА наблюдателя и сократить XYZ до single. Тогда пакет на 1КА будет уже 3 * 4 + 3 * 8 = 36 байт.

2) Использовать механизм передачи изменений с синхро кадрами.
Допустим у нас есть КА. Мы знаем его текущие координаты и ориентирование. Передаем только приращение каждой из этих характеристик. и раз в, допустим, одну секунду - полный набор параметров.
Приращение будем передавать в половинной точности. Там примерно 3 знака точность.
Итого: 6 * 2 = 12 Байт и 48 байт на синхро кадр.

Для 30 кадров и 128Кбит/сек это уже 41 КА.

Ваши мысли?

добавлено спустя 3 минуты:
Да, 128Кбит взято из расчета что 1Гбит теоретически выдержит 9632 подключения по 128Кбит.
_________________
WARNING: By reading this post you accept that this post is genius.

Последний раз редактировалось: Варсик (13:11 31-01-2011), всего редактировалось 1 раз
    Добавлено: 13:11 31-01-2011   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
Репутация: 14
Сообщения: 1426

Зарегистрирован: 27.07.2005
Warstone :
Всегда передавать координаты, с 0 точкой в КА наблюдателя


и как тогда понять де корабель? Совсем запутался...
или хочешь передавать постоянно координаты всех статических объектов тож? Хы...

EDIT: углы Эйлера лучче заменить на один кватернион гоню

забыл идентификатор корабля, хотя можно сделать "однопользовательскую ММО" типа Spore

Warstone :
Ваши мысли?


ненада это делать для 3D а также для "необозримого" космоса который помещается в диапазон double Улыбка

тогда полный слепок можно сделать 8 байт

добавлено спустя 9 минут:
я к тому что собсно приращения и UDP слегка несовместимы Гы-гы
_________________
This is what you get ...
(c) Radiohead

Последний раз редактировалось: Sh.Tac. (13:44 31-01-2011), всего редактировалось 2 раз(а)
    Добавлено: 13:44 31-01-2011   
Kann
 64 EGP


Рейтинг канала: 3(45)
Репутация: 7
Сообщения: 232
Откуда: Москва
Зарегистрирован: 11.04.2008
зачем передавать каждый кадр ?
10 раз в секунду возможно достаточно, далее написать алгоритм предсказания движения на клиенте
    Добавлено: 14:53 31-01-2011   
Guest
 2075 EGP


Модератор
Рейтинг канала: 5(167)
Репутация: 376
Сообщения: 27975
Откуда: Моск.
Зарегистрирован: 12.10.2004
Warstone :
2) Использовать механизм передачи изменений с синхро кадрами.
Допустим у нас есть КА. Мы знаем его текущие координаты и ориентирование. Передаем только приращение каждой из этих характеристик. и раз в, допустим, одну секунду - полный набор параметров.
Приращение будем передавать в половинной точности. Там примерно 3 знака точность.
Итого: 6 * 2 = 12 Байт и 48 байт на синхро кадр.

При негарантированной передаче данных технику синхрокадров использовать нельзя. Во-первых, можно пропустить несколько приращений - и дальнейший ряд приращений будет ошибочен. Во-вторых можно пропустить несколько опорных кадров - и будет то же самое, но продолжительное во времени. Плохая идея.
Kann :
10 раз в секунду возможно достаточно, далее написать алгоритм предсказания движения на клиенте

10 фпс для точности перемещения может быть маловато и с интерполяцией. А может быть и нет... Тут только практикой.
Но чем больше достоверных точек с метками времени - тем точнее интерполяция.
_________________
Трещит земля как пустой орех
Как щепка трещит броня

Последний раз редактировалось: Guest (15:10 31-01-2011), всего редактировалось 1 раз
    Добавлено: 15:09 31-01-2011   
Kann
 64 EGP


Рейтинг канала: 3(45)
Репутация: 7
Сообщения: 232
Откуда: Москва
Зарегистрирован: 11.04.2008
Guest :

10 фпс для точности перемещения может быть маловато и с интерполяцией. А может быть и нет... Тут только практикой.
Но чем больше достоверных точек с метками времени - тем точнее интерполяция.

согласен, у себя мне хватает 10 кадров, но передача пакетов гарантированна...
так же на самом клиенте управление кораблем дублируется, и предсказание требуется только на соседях
    Добавлено: 15:24 31-01-2011   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
Так... 2 умных мысли: ID КА и такт времени...

добавлено спустя 7 минут:
Допустим ID КА будет 2 байта (64К объектов вы все-равно не увидите). метка времени... 1 байт. Циклично. При 30 фреймах это 8 секунд... За 8 секунд ни одного UDP... Все-равно ресинхронизацию надо будет запускать.
Итого, минимальный слепок: ID КА (2), Timestamp (1), DeltaPosition (2*3), DeltaRotation (2*3) = 15 байт
Sh.Tac. :
и как тогда понять де корабель?
Ну синхро фреим расскажет где корабль, а остальные фреимы расскажут где как он двигается.
Kann :
зачем передавать каждый кадр ?
10 раз в секунду возможно достаточно, далее написать алгоритм предсказания движения на клиенте
Что-бы более точно показать изменения... Чтоб пользователь мог отстрелить пушку у корабля. Вообще идея перетащить CS в космос при большом кол-ве народу.
Guest :

При негарантированной передаче данных технику синхрокадров использовать нельзя.
Можно, я время забыл, каюсь. Если что-то пропустим - сплайны "замажут".
Guest :
Во-вторых можно пропустить несколько опорных кадров - и будет то же самое
Это - хуже. Надо в этом случае просить переслать опорный кадр.
_________________
WARNING: By reading this post you accept that this post is genius.

Последний раз редактировалось: Варсик (15:58 31-01-2011), всего редактировалось 1 раз
    Добавлено: 15:58 31-01-2011   
Guest
 2075 EGP


Модератор
Рейтинг канала: 5(167)
Репутация: 376
Сообщения: 27975
Откуда: Моск.
Зарегистрирован: 12.10.2004
Warstone :
Это - хуже. Надо в этом случае просить переслать опорный кадр.

Чтобы просить переслать опорный кадр - надо понять, что он не дошёл, а у тебя из-за лага может ещё что-то прийти вместо опорного (мусор). Значит нужен по меньшей мере бит метки опорного кадра.

Метку ремени можно из пакета взять... Я могу ошибаться, но кажись метка времени ставится по моменту отправки пакета, а не прибытия. Надо посмотреть доки.

Ты не забывай, что нужно пересылать каждому клиенту положение всех остальных клиентов в радиусе видимости вокруг него.

Warstone :
Ну синхро фреим расскажет где корабль, а остальные фреимы расскажут где как он двигается.

Есть ещё одно бяко - пульсирующая нагрузка на канал. если у тебя, для простоты, каждый 10-й кадр опорный и имеет размер в 4 раза больше промежуточного...
А с чего бы, кстати? Приращение у тебя намного менее точное, чем координаты и углы? Если так - будут прыжки. А если не так - то у тебя приращение всё равно по всем параметрам будет, кроме нулевых значений (можно поскипать, но пакет парсить будет сложнее)... Но нулевое значение приращения какого-либо параметра в экшнах - штука ппц как редкая, почти мифическая.
...да, так вот - если разница между ними в 4 раза - ты получишь пульсацию траффика раз в 10 кадров. Если пульсации по рандому сложатся в белый шум - будет ещё туда-сюда. А если засинхронизируются? Представляешь раскачку? Оборудованию сетевому тоже будет "хорошо" Улыбка

добавлено спустя 3 минуты:
Kann :
согласен, у себя мне хватает 10 кадров, но передача пакетов гарантированна...
так же на самом клиенте управление кораблем дублируется, и предсказание требуется только на соседях

При гарантированной передаче и без требования отстреливать уши пилоту с точностью до кадра всё намного проще - можно раз в такт обсчёта физики (а можно даже и реже раз в 10) передавать пакет с полной информацией всем абонентам. А между ними интерполировать. Или передавать чаще, но экстраполировать (исчезнут прыжки ошибок, но фактически все будут играть в гарантированном прошлом, и траектории иногда будут несколько странными).

Как-то так.
_________________
Трещит земля как пустой орех
Как щепка трещит броня

Последний раз редактировалось: Guest (16:24 31-01-2011), всего редактировалось 1 раз
    Добавлено: 16:24 31-01-2011   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
Репутация: 14
Сообщения: 1426

Зарегистрирован: 27.07.2005
я вот тут вспомнил одну неуспешную отечественную ММО на космическую тематику Улыбка

в World of Tides симулятор был и на клиенте, соответственно передавались тока управляющие воздействия с отметками времени, которые обсчитывались практически идентично

т.е. картинка в целом таже самая у всех с небольшим запаздыванием, за исключением тока себя "родимого" Улыбка

так вот когда "родимый" зарывался слека с точки зрения сервера, то ему в наказание слался полный слепок мира Хы...

Warstone :
Вообще идея перетащить CS в космос при большом кол-ве народу


один раз прокатило, World of Tanks при комнатной организации легко догнал и перегнал EVE по онлайну

второй раз фкозмозе х.з. - стрёмновато Гы-гы
_________________
This is what you get ...
(c) Radiohead
    Добавлено: 16:31 31-01-2011   
Kann
 64 EGP


Рейтинг канала: 3(45)
Репутация: 7
Сообщения: 232
Откуда: Москва
Зарегистрирован: 11.04.2008
Warstone :
Что-бы более точно показать изменения... Чтоб пользователь мог отстрелить пушку у корабля. Вообще идея перетащить CS в космос при большом кол-ве народу.

Для этого используется по моему лаго-компенсация.... так как все равно есть время прохождение пакета по сети от абонента до сервера которое надо учитывать...
вот ссылк вдруг кто не читал ....
http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking:ru
    Добавлено: 16:43 31-01-2011   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
Guest :
Чтобы просить переслать опорный кадр - надо понять, что он не дошёл, а у тебя из-за лага может ещё что-то прийти вместо опорного (мусор). Значит нужен по меньшей мере бит метки опорного кадра.
Нет, если мы знаем в какой момент времени (время в timestamp байте), должен быть опорный кадр.
Guest :
Метку ремени можно из пакета взять... Я могу ошибаться, но кажись метка времени ставится по моменту отправки пакета, а не прибытия. Надо посмотреть доки.
Так-же надо смотреть доки. Возможно таимстамп не нужен.
Guest :
Ты не забывай, что нужно пересылать каждому клиенту положение всех остальных клиентов в радиусе видимости вокруг него.
Потому и 44 максимально народу пока-что получается.
Guest :
Есть ещё одно бяко - пульсирующая нагрузка на канал.
А разнести синхронизацию по времени? То есть в этот фреим синхронизируются вот те 2 КА, а другой - следующие. Пульсации не будет. Что синхронизируется - договорились при появлении объекта (переслано по TCP или по UDP с подтверждением).
Kann :
Для этого используется по моему лаго-компенсация....
Фраза "сплайны "замажут"" - это как-раз - оно.
Guest :
А с чего бы, кстати? Приращение у тебя намного менее точное, чем координаты и углы?
Конечно. Так как приращение считаем в координатах того КА, к которому "приращаем". Там будут довольно маленькие потери, Так как половинная точность - это гуляющий 4-й знак после запятой, то это 0,1% погрешность (кто скажет точнее - грац.), если мы раз в секунду при 30 кадрах синхронизируемся, то Погрешность будет 3% в секунду. По скорости. По положению ИМХО должно быть меньше.

Есть у кого умнее алгоритм?

добавлено спустя 2 минуты:
Warstone :
Guest :
А с чего бы, кстати? Приращение у тебя намного менее точное, чем координаты и углы?
Конечно. Так как приращение считаем в координатах того КА, к которому "приращаем".
А, или ты про 4 одинарную, а не двойную точноть? Так одинарная потому что это в системе КА считается. А так как он близко, то можно и одинарную точность.

Если КА далеко - можно понижать частоту синхронизации.
_________________
WARNING: By reading this post you accept that this post is genius.

Последний раз редактировалось: Варсик (18:47 31-01-2011), всего редактировалось 1 раз
    Добавлено: 18:47 31-01-2011   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
Посмотрел - в UDP нету метки времени.
_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 12:57 01-02-2011   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
Репутация: 14
Сообщения: 1426

Зарегистрирован: 27.07.2005
ну какбэ в UDP нету ни координат, ни айдишек кораблей Гы-гы
_________________
This is what you get ...
(c) Radiohead
    Добавлено: 21:09 01-02-2011   
istorik
 405 EGP


Модератор
Рейтинг канала: 1(1)
Репутация: 75
Сообщения: 1057
Откуда: Андромеда
Зарегистрирован: 18.02.2010
Warstone :
Посмотрел - в UDP нету метки времени.

Она есть в заголовке IP, опция 4 класс 2, согласно RFC 791.
_________________
Я Вам сейчас расскажу историю...
    Добавлено: 00:10 02-02-2011   
Crush
 285 EGP


Рейтинг канала: 2(10)
Репутация: 48
Сообщения: 1190
Откуда: Владивосток
Зарегистрирован: 23.07.2003
А зачем нужны такие детальные параметры для всех кораблей передавать? Ну понятное для кораблей которые находятся у тебя перед носом на какой то ограниченной дистанции (где их детально видно, а не просто "красный квадратик"), а остальные корабли для тебя по сути дела являются точками на радаре, для них и параметры можно обновлять гораздо реже, да и передавать только координаты точки на радаре.
    Добавлено: 17:00 06-02-2011   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
Crush :
А зачем нужны такие детальные параметры для всех кораблей передавать? Ну понятное для кораблей которые находятся у тебя перед носом на какой то ограниченной дистанции (где их детально видно, а не просто "красный квадратик"), а остальные корабли для тебя по сути дела являются точками на радаре, для них и параметры можно обновлять гораздо реже, да и передавать только координаты точки на радаре.
Вы не были в масс ПвП... Когда с одной стороны 100 игроков и с другой - 100. UDP это не выдержит (с просчетом уровня шутеров).
Ну а во время простого полета - действительно, при большом удалении от корабля необходимо реже обновлять состояние корабля. Это все верно. Но я-то разбираю случай, когда большой замес идет.

Warstone :
Guest :

При негарантированной передаче данных технику синхрокадров использовать нельзя.
Можно, я время забыл, каюсь. Если что-то пропустим - сплайны "замажут".
Тут еще раз подумал... Кажется - вы правы. При UDP нельзя использовать приращения.
_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 23:49 19-02-2011   
Crush
 285 EGP


Рейтинг канала: 2(10)
Репутация: 48
Сообщения: 1190
Откуда: Владивосток
Зарегистрирован: 23.07.2003
Действительно, после ЕВЕ с флотами по 1000 человек, масс пвп мне ни о чем не говорит. Гы-гы Но вообще вспоминая тот же фрил и БСГО, ну никак в зоне прямой видимости больше 20-30 кораблей не собиралось в бою (всякие показательные выступления перед камерой не в счет).
    Добавлено: 18:20 21-02-2011   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
Crush :
БСГО,
до 100 каждый день во флотах.
_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 19:31 21-02-2011   
Guest
 2075 EGP


Модератор
Рейтинг канала: 5(167)
Репутация: 376
Сообщения: 27975
Откуда: Моск.
Зарегистрирован: 12.10.2004
Crush :
Но вообще вспоминая тот же фрил и БСГО, ну никак в зоне прямой видимости больше 20-30 кораблей не собиралось в бою

Нельзя рассчитывать на то, что в теории не больше 30 кораблей будет. Нужно рассчитывать всегда на "былинный отказ" - что вся 1К кораблей соберётся в одном месте и захочет пострелять.
При этом сервис упасть не должен.

Вообще это совершенно дикая задача - разруливать лавинную нагрузку. В ряде случаев проще ограничить количество одновременных соединений с сервером.

добавлено спустя 24 секунды:
Яркий пример highload - облака и поисковые системы.

добавлено спустя 2 минуты:
Яркий пример былинного отказа - проблемы с Test Drive Unlimited 2: во время бета-тестирования всё было в норме, но после релиза туда ломанулся народ и сервера - сначала игровые, а потом и авторизации - рухнули.

добавлено спустя 2 минуты:
Warstone :
Ну а во время простого полета - действительно, при большом удалении от корабля необходимо реже обновлять состояние корабля. Это все верно.

Это создаст крайне неприятный эффект "прыжков" цели на расстоянии. Даже если цель "в там" поразить нельзя - прыжки будут люто бешено раздражать, см. историю World of Tanks.
_________________
Трещит земля как пустой орех
Как щепка трещит броня

Последний раз редактировалось: Guest (20:56 21-02-2011), всего редактировалось 4 раз(а)
    Добавлено: 20:56 21-02-2011   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
Guest :
Даже если цель "в там" поразить нельзя - прыжки будут люто бешено раздражать, см. историю World of Tanks.
Они через пол года про сплайны узнали. Это феил на самом деле.
_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 10:05 22-02-2011   
KrIM
 90 EGP


Рейтинг канала: 3(41)
Репутация: 12
Сообщения: 200
Откуда: Russia, St.-Petersburg
Зарегистрирован: 26.12.2009
Warstone :
Guest :
Даже если цель "в там" поразить нельзя - прыжки будут люто бешено раздражать, см. историю World of Tanks.
Они через пол года про сплайны узнали. Это феил на самом деле.


Они, не они... у Варгеймингов покупной движок, исправить в нем неприятные "телепорты" смогли только после обращения к разработчикам оного. Двигло изначально было рассчитано на ближний бой, при удалении же объекта частота обновления информации о его позиции заметно снижалась. Изменить модель позиционирования вышло только сменив версию движка. Т.е. парни из Беларуси просто не смогли бы это сделать - ну кто им даст исходники чужого движка? ... Но знаешь, я иногда поигрываю, и складывается такое чувство, что программисты у них не очень то сильные...
_________________
Бесконечность и ещё дальше! (с)
    Добавлено: 12:24 23-02-2011   
Канал Игры Мечты: «Расчет теоретического пика коннектов для UDP игр.»
На страницу: 1, 2  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: С чего-то нужно начинать. Добрым ты уже был - это не помогает. (donald)

  » Расчет теоретического пика коннектов для UDP игр. | страница 1
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18