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

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

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

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


Модератор
Рейтинг канала: 5(167)
Репутация: 376
Сообщения: 27975
Откуда: Моск.
Зарегистрирован: 12.10.2004
Всем надо где-то набираться опыта, Варгеймовцам в том числе - нигде не учат делать игровые движки. Давайте назад к передаче данных.
_________________
Трещит земля как пустой орех
Как щепка трещит броня
    Добавлено: 00:52 24-02-2011   
Aerton
 70 EGP


Рейтинг канала: 1(8)
Репутация: 4
Сообщения: 67
Откуда: Новосибирск
Зарегистрирован: 20.08.2004
Во-первых, размер маленького пакета * кол-во пакетов = пропускная способность - это неверное уравнение. Маленькими пакетами средняя скорость всегда будет ниже. Во-первых, чем меньше пакет, тем больший процент занимают накладные расходы на заголовки UDP, IP (+Ethernet или через что оно там передаётся). К тому же, например в случае Ethernet есть ограничение на минимальный размер пакета в 64 байта. Кроме того, между посылкой пакетов должна выдерживаться некоторая пауза. Так что если по локалке посылать по 48 байт, скорость будет в несколько раз ниже, чем если посылать пакеты максимального размера.

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

Вообще, это очень сильно зависит от того, с какой скоростью перемещаются объекты. Причём значение имеет скорость относительно габаритов объекта. Медленные тяжёлые махины изменяют курс очень долго - их координаты можно передавать в 20 раз реже, чем данные про маленькие, юркие ракеты, которые каждый кадр пролетают расстояние в несколько своих корпусов.

Во-вторых, самое важное - это не чтобы все данные точно соответсвовали друг другу, а чтобы у игрока было впечатление плавной игры без лагов. Если этого добиться честным путём нельзя - значит придётся прибегать к фокусам.

Например, что самое важное для игрока? Это его КА и КА, в который он целится. Если союзник, который тащится где-то за спиной окажется на несколько метров не в том месте, это не беда (особенно, если он в камеру вообще не попадает). А вот цель немного не в том месте - это уже чревато промахом, особенно раздражающим, если на мониторе игрока выстрел был произведён абсолютно точно в цель.

Про интерполяцию и компенсацию лагов стрельбы очень хорошо написано на сайте Valve. http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking

double в сетевых пакетах, - это колоссальная трата бит на ветер. Большая часть такого числа в условиях реальной игры либо никогда не меняется, либо содержит совершенно ненужную точность. Начать с 11 бит под порядок - это позволяет хранить данные в огромном диапазоне, но координаты кораблей изменяются в достаточно ограниченном пределе. Кроме того, точность как в double, так и во float, распределена неравномерно - чем дальше от 0, тем хуже точность. Гораздо лучше использовать int. Например, в 20 бит влезет координата в диапазоне 100км с точностью 10см. Причём это только для передачи по сети - если в движке используется float/double, то преобразование делается в одно умножение.

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

Когда я делал сеть (в одной не-ММО игре), я в каждом пакете делал две части - одна содержала координаты, которые можно было потерять, вторая - данные о подобные собитиях, доставка которых гарантировалась механизмом, похожим на то, как это сделано в TCP.

Поэтому вопрос сформулирован неправильно. Надо брать какой-то лимит (128 кбит - это явно слишком много для игры про космолёты) и когда передача всех данных будет готова его превысить, то надо выстраивать приоритеты, и жертвуя чем-то неважным, вписываться в лимит. Ещё раз повторю основную мысль - главное, какое будет впечатление у игрока. Если будут мелкие расхождения, никто на них не обратит внимание, пока то, что непосредственно касается игрока, работает как надо.
    Добавлено: 20:28 03-03-2011   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
Aerton :
Во-первых, размер маленького пакета * кол-во пакетов = пропускная способность - это неверное уравнение. Маленькими пакетами средняя скорость всегда будет ниже. Во-первых, чем меньше пакет, тем больший процент занимают накладные расходы на заголовки UDP, IP (+Ethernet или через что оно там передаётся). К тому же, например в случае Ethernet есть ограничение на минимальный размер пакета в 64 байта. Кроме того, между посылкой пакетов должна выдерживаться некоторая пауза. Так что если по локалке посылать по 48 байт, скорость будет в несколько раз ниже, чем если посылать пакеты максимального размера.
Спасибо Кэп. Дальше почитайте... Считалось что одновременно будет посылаться слепок мира, возможно разбитый на части.
Aerton :
Вообще, это очень сильно зависит от того, с какой скоростью перемещаются объекты. Причём значение имеет скорость относительно габаритов объекта. Медленные тяжёлые махины изменяют курс очень долго - их координаты можно передавать в 20 раз реже, чем данные про маленькие, юркие ракеты, которые каждый кадр пролетают расстояние в несколько своих корпусов.
Это интересное замечание. Спасибо.
Aerton :
Это его КА и КА, в который он целится.
И которые в него целятся.
Aerton :
Про интерполяцию и компенсацию лагов стрельбы очень хорошо написано на сайте Valve.
Мы тут все туда ночевать ходим. Я серьезно.
_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 21:57 03-03-2011   
Kann
 64 EGP


Рейтинг канала: 3(45)
Репутация: 7
Сообщения: 232
Откуда: Москва
Зарегистрирован: 11.04.2008
Aerton :
А вот цель немного не в том месте - это уже чревато промахом, особенно раздражающим, если на мониторе игрока выстрел был произведён абсолютно точно в цель.

Про интерполяцию и компенсацию лагов стрельбы очень хорошо написано на сайте Valve. http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking

мне интересно как вы обеспечите лагокомпенсацию в масштабах ММО, у валве этот текст написан для КС.... хранить слепки мира до секунды и сдвигать потом объекты на величину лага, по моему несколько проблематично с учетом количества игроков, так же надо учитывать то что используется скажем так мгновенные попадания по цели, а если у нас космос где например плазменный заряд имеет время полета до цели ?
    Добавлено: 21:59 03-03-2011   
Sh.Tac.
 151 EGP


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

Зарегистрирован: 27.07.2005
Aerton :
скорость будет в несколько раз ниже, чем если посылать пакеты максимального размера

вот тут есть небольшая загводка, теоретически размер UDP пакета ничем не ограничен, хоть 64к посылай, а на практике есть магическое число в 576 байт Улыбка
_________________
This is what you get ...
(c) Radiohead
    Добавлено: 00:01 04-03-2011   
Aerton
 70 EGP


Рейтинг канала: 1(8)
Репутация: 4
Сообщения: 67
Откуда: Новосибирск
Зарегистрирован: 20.08.2004
Warstone :
Спасибо Кэп
Улыбка

Warstone :
Aerton :
Это его КА и КА, в который он целится.
И которые в него целятся.
А зачем? Мы может вообще его не видим. Даже если и видим, то чаще всего всё равно издали не очень-то понятно, как он там целится. Тогда уж куда интереснее например, ракеты, которы уже летят в нас, особенно самонаводящиеся.

Kann :
мне интересно как вы обеспечите лагокомпенсацию в масштабах ММО,
Накладные расходы на один объект возрастают не слишком сильно, да и хранить надо не слепки всего мира, а только координаты двигающихся объектов. "Неспящих" по терминологии физических движков.

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

Т.к. все подобные приёмы работают на создание иллюзии у игрока, то они должны расчитываться из специфики каждой конкретной игры. Если игра по динамике не похожа на сокростной шутер, где важную роль играют хедшоты, то надо придумать что-то другое. Для той же EVE эта техника не даст ничего.

Например, я считал физику по тому, как её видит сервер, а клиентам координаты подлетающих (самнонаводящихся) ракет шли как относительные от стрелка и от цели. На клиенте пропорционально расстоянию брались веса для обоих и так отображалось. В результате, смотрелось нормально, даже если для стрелока или цели позиция была рассинхронизированна.

Sh.Tac. :
от тут есть небольшая загводка, теоретически размер UDP пакета ничем не ограничен,
Если его посылать не силой мысли, а по реальным проводам, то упирается в лимиты нижележащих протоколов. чаще всего это ethernet, через котороый всё равно проходит на каком-то участке пути до пользователя.

Sh.Tac. :
а на практике есть магическое число в 576 байт
А вот про него, я честно говоря, совсем забыл, как про сугобо теоретическое Улыбка Интересно, где такое вылезит на практике? Учитывая, что лимит даже не на уровне железа, в каких системах из этого тысячелетия он может быть?
    Добавлено: 21:31 04-03-2011   
KAV13
 88 EGP


Репутация: 13
Сообщения: 99
Откуда: :адуктО
Зарегистрирован: 03.03.2010
Цитата:
Интересно, где такое вылезит на практике? Учитывая, что лимит даже не на уровне железа, в каких системах из этого тысячелетия он может быть?

Включая 2К точно есть, ХР - не знаю, к моменту ее широкого распространения успел уволиться из той конторы. Насчет 576 байт тоже не знал, эмпирическим путем выставил ограничение 512 байт.
БОльшие объемы отправлял другим методом, но в данном случае он неактуален, задержка в полсекунды-секунду никого не интересовала.
Ну а на практике - пакет просто не приходит. На каком этапе режется - тоже особо не интересовался, тот софт небольшие задержки вполне допускал.
    Добавлено: 15:27 27-04-2011   
Delta_Q
 245 EGP


Рейтинг канала: 2(12)
Репутация: 46
Сообщения: 1722
Откуда: Русь
Зарегистрирован: 07.02.2001
Из своего опыта работы с сетями могу сказать следующее:
Каждый кадр передавать нет смыла. Иногда банально проще передавать 1-5 данных в секунду. При такой скорости потока линейное интерполяция более менее приемлема.
Сложность возникает когда надо очень много объектов. Естественно для этого посылают данные реже чем 1 раз в 1 секунду. Но тогда возникает уже сильная погрешность и появляется эффект (вы иногда его видели когда играли в сетевые игры)вы видите что объект как бы дёргается рывками.
В шутерах это сложно решит ибо там высокая динамика движения, но для задач где динамика движения является более инерциальной то это решается так называемым способом "Сплайн интерполяцией". Идея проста система математически как бы предсказывает где будет находится объект. при таком подходе уже можно передавать данные 1 раз в 2 секунды и более. Всё зависит от динамики.
Я встречал библиотеку сетевую в которую уже были встроены мат.функции таких интерполяций. Если таких нет то можно написать самим.
_________________
Двенадцатый пилот.
In nomine patris, et filii, et spiritus sanctis.

Последний раз редактировалось: Delta_Q (18:03 27-04-2011), всего редактировалось 1 раз
    Добавлено: 18:02 27-04-2011   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Как рассказывал мне мой лид - в CryEngine2 (который он тогда делал) сетевой двиг работает без предсказаний. Но в нем реализована техника сжатия. То есть передается протокол в xml виде, в котором описаны все типы пакетов что будут передаваться по сети (будь то статус игрока или еще что-то) и содержание этих пакетов. Содержание - это размер и характер данных. Например если характер данных - мировые координаты - сжимать их не нужно. А если количество здоровья - то они лежат в границе (0..100).

А вообще - юзайте какой-нить RakNet
_________________
MOV topka, C++
    Добавлено: 18:10 27-04-2011   
3d.Maxuz
 1032 EGP


Рейтинг канала: 3(28)
Репутация: 47
Сообщения: 6023
Откуда: Краматорск, Донецкая область!
Зарегистрирован: 28.09.2004
Есть вопрос по местной специфике.
Игра - Фрилансер
Ситуация: по утверждению некоторой группы пилотов, наблюдается определённая взаимосвязь между включенной/отключенной вертикальной синхронизацией и отображением положения корабля игрока у других игроков в онлайне. Конкретно, при отключении всинк, ОС Вин7 (только! в ХП не проявляется), и определённых видеодрайверах (не всех и вроде как только для нвидии) в ситуации если fps выходит на значение 180, корабль игрока начинает зверски прыгать по экрану (или же второй вариант мелко дрожать при движении, т.е. теже рывки, только очень короткие) других игроков при pvp. Т.е. полный эфект лагов. При этом конект абсолютно нормальный (пинг, трейс, флюкт, потери и прочее). И у этого игрока на экране всё нормально.
Вопрос - реально ли это.
Т.е. я понимаю, если бы это проявлялось у всех и всегда при 180 fps, но тут не всё так просто. Или как?
_________________
Гоп-стоп, мы подошли из-за угла,
Гоп-стоп...
    Добавлено: 18:44 27-04-2011   
Guest
 2075 EGP


Модератор
Рейтинг канала: 5(167)
Репутация: 376
Сообщения: 27975
Откуда: Моск.
Зарегистрирован: 12.10.2004
3d.Maxuz :
Вопрос - реально ли это.

Потенциально - реально всё.
На практике - зависит. При отрубленном vsync и асинхронной отправке сетевых пакетов может быть забивание одного потока другим.
Впрочем, это крайне маловероятно, а вот вариант полной синхронизации по апдейту, т.е. обработка всего с частотой draw (вспомнить год выхода Фрила) - может.
Я не знаю, есть ли ограничение в протоколе по количеству пакетов, отправляемых в секунду, но 180 пакетов могут и не пролазить. Часть теряем, часть плавает во времени (задержка разная) - вот вам и лаги или их имитация Улыбка

добавлено спустя 44 секунды:
А у игрока всё нормально, т.к. ему приходят пакеты с нормальной частотой.
_________________
Трещит земля как пустой орех
Как щепка трещит броня

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


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

Зарегистрирован: 27.07.2005
жесть, я думал они там головастые ребята Улыбка
а так напоминает банальное вотЪ
_________________
This is what you get ...
(c) Radiohead
    Добавлено: 15:25 28-04-2011   
Guest
 2075 EGP


Модератор
Рейтинг канала: 5(167)
Репутация: 376
Сообщения: 27975
Откуда: Моск.
Зарегистрирован: 12.10.2004
Sh.Tac. :
жесть, я думал они там головастые ребята

Тогда многопоточности ещё не было, насколько я помню Улыбка
_________________
Трещит земля как пустой орех
Как щепка трещит броня
    Добавлено: 16:22 28-04-2011   
3d.Maxuz
 1032 EGP


Рейтинг канала: 3(28)
Репутация: 47
Сообщения: 6023
Откуда: Краматорск, Донецкая область!
Зарегистрирован: 28.09.2004
Guest :
а вот вариант полной синхронизации по апдейту, т.е. обработка всего с частотой draw (вспомнить год выхода Фрила) - может.
Я не знаю, есть ли ограничение в протоколе по количеству пакетов, отправляемых в секунду, но 180 пакетов могут и не пролазить. Часть теряем, часть плавает во времени (задержка разная) - вот вам и лаги или их имитация
Это логичный вариант, но прикол в том почему оно проявляется только в Вин7 и только на некоторых дровах и карточках??? В том и загвоздка, что часть народа утверждает, что это 100% проверенный факт, а другая часть говорит "вот у меня так и всё нормально".
Т.е. либо это реально глюк фрила, либо что-то постороннее.
Как вариант, может ли Вин7 в отличие от остальных, специфически работать с пакетами по протоколу, делая как ты написал?
_________________
Гоп-стоп, мы подошли из-за угла,
Гоп-стоп...
    Добавлено: 11:53 06-05-2011   
Guest
 2075 EGP


Модератор
Рейтинг канала: 5(167)
Репутация: 376
Сообщения: 27975
Откуда: Моск.
Зарегистрирован: 12.10.2004
3d.Maxuz :
Как вариант, может ли Вин7 в отличие от остальных, специфически работать с пакетами по протоколу, делая как ты написал?

Я не знаю, насколько глубоко переписано ядро Вин7 по сравнению с другими. Вот введение слоя полной абстракции программной части от драйвера для direct- устройств начиная с Висты - вот это доставляло мощно.
Может быть что-то такое есть и в Семёрке.

Лучше всего пользовать vsync и не палить карточку.
_________________
Трещит земля как пустой орех
Как щепка трещит броня
    Добавлено: 13:35 06-05-2011   
3d.Maxuz
 1032 EGP


Рейтинг канала: 3(28)
Репутация: 47
Сообщения: 6023
Откуда: Краматорск, Донецкая область!
Зарегистрирован: 28.09.2004
Guest :
Лучше всего пользовать vsync и не палить карточку.
Это и есть камень холивара. Во фриле курсор програмный, т.е. условно чем выше fps тем выше скорость реакции, что даёт возможность более эффективно вести бой. А всинк рубит частоту на 75-80.
Итого с одной стороны преимущество в скорости, с другой какбы "защитные лаги".
_________________
Гоп-стоп, мы подошли из-за угла,
Гоп-стоп...
    Добавлено: 18:48 06-05-2011   
Shirson
 1605 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 219
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
3d.Maxuz :
Это и есть камень холивара. Во фриле курсор програмный, т.е. условно чем выше fps тем выше скорость реакции

Речь про мышиный курсор? Если да, то как это работает? Всмысле, данные с мышки откуда берутся в программе?
Я просто пытаюсь представить, как тут курсор замешан Улыбка
_________________
У меня бисера не доxеpа.
    Добавлено: 08:01 07-05-2011   
3d.Maxuz
 1032 EGP


Рейтинг канала: 3(28)
Репутация: 47
Сообщения: 6023
Откуда: Краматорск, Донецкая область!
Зарегистрирован: 28.09.2004
Во Фриле мышиный курсор=прицел как в шутерах. Т.е. чем больше fps, тем быстрее и чётче он реагирует на реальное движение мыши, соответсвенно повышается точность огня и прочее. И всё бы ничего, еслибы небыло таких вот подводных камней непонятного происхождения Совсем запутался...
Я не знаю как там это программно работает, но факт есть, при маленьких fps курсор заторможен. На 20 это вообще ппц.
Вот где-то здесь чуть более подробно.
http://www.elite-games.ru/conference/viewtopic.php?p=2567028#2567028
А тут развитие темы
http://www.elite-games.ru/conference/viewtopic.php?p=2606178#2606178
_________________
Гоп-стоп, мы подошли из-за угла,
Гоп-стоп...
    Добавлено: 12:40 07-05-2011   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
Адаффайте оффтопик уберем из темы?
_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 00:19 08-05-2011   
Канал Игры Мечты: «Расчет теоретического пика коннектов для UDP игр.»
На страницу: Пред.  1, 2 | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Макс, советую перекусить тросик ручного тормоза. ... Макс, у тебя, кажись, там не тросик, а рельса стальная. (Juni)

  » Расчет теоретического пика коннектов для UDP игр. | страница 2
Каналы: Новости | 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