Jump to content

Ракеты в DCS


Recommended Posts

Posted

So look at the effect of what you suggest:

 

Server does the resolution, so the server now needs possibly more advanced algorithms, and it has a higher processing load to accomplish all these tasks. Ping becomes worse for everyone.

 

Instead, how about you just kick anyone with >250 ping if high-pingers are such a big problem for you. Problem solved with minimal effort.

 

Так что посмотрим на эффект, что вы предлагаете:

 

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

 

Вместо этого, как насчет вас просто удар у кого> 250 пинг, если высоких пингеров есть такая большая проблема для вас. Проблема решена с минимальными усилиями.

 

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

Пример с задержкой лазера ничего не оправдывает. Есть такие игры как quake и counter strike, надеюсь слышали о таких? Есть там и лазеры и ракеты. Там тоже все оружие имеет задержку и людям прекрасно известно что с пингом выше 100 играть смысла нет. Пуская ракету с высоким пингом еще и ждать приходится пока она полетит, или же довольствоватсья иллюзией, при этом на сервер происходит совершенно другое реальное событие с учетом реальной задержки.

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

[sIGPIC][/sIGPIC]

Reminder: SAM = Speed Bump :D

I used to play flight sims like you, but then I took a slammer to the knee - Yoda

Posted
О как.Надо настройку такую от ED для сервера(в настройках сервера),чтобы ввел в поле цифру 200 для непонятных и их автоматом кикало через прау-тройку секунд.

п.с.Кто захочет тот поставит.

 

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

★★★ 🇷🇺 ★★★

Posted

Шутеры конечно плохой пример, там растояния и время полета патрона не те. Ошибка наведения аккумулируются очень быстро с нашими дистанциями и времеными рамками.

 

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

 

Сейчас получается что стрелок имеет точные координаты своей ракеты, а цель имеет более точные координаты своего ЛА. И в этом случае ракета выигрывает если цель маневрирует с задержкой...

Posted

Вместо этого, как насчет вас просто удар у кого> 250 пинг, если высоких пингеров есть такая большая проблема для вас. Проблема решена с минимальными усилиями.

 

Вот именно, что она решена минимальными усилиями. Другими словами, она вообще не решена, вы просто дали возможность считать ракеты на клиенте и назвали это решением.

Уверен, что если бы такими усилиями все решалось и в других шутерах, то онлайн бы вообще не развился дальше чем LAN.

 

От того, что сервер начнет считать 5-10 вв ракет в минуту, врядли что-то изменится. Это все жалкие килобайты информации, если не байты, для нынешних процессоров и мощностей это тоже не может быть проблемой.

 

====

 

That's it, that it's solved minimal effort. In other words, it generally does not help, you're just given the opportunity to consider the missile on the client and call it a solution.

I am sure that if such efforts are solved in other shooters, then online would never developed further than the LAN.

 

From the fact that the server will assume 5-10 missiles per minute, hardly anything will change. It's all pathetic kilobytes of information, unless the bytes for the current processor and power is also not be a problem.

★★★ 🇷🇺 ★★★

Posted
Шутеры конечно плохой пример, там растояния и время полета патрона не те. Ошибка наведения аккумулируются очень быстро с нашими дистанциями и времеными рамками.

 

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

 

Сейчас получается что стрелок имеет точные координаты своей ракеты, а цель имеет более точные координаты своего ЛА. И в этом случае ракета выигрывает если цель маневрирует с задержкой...

 

Сервер считает свои ракеты, по-моему все довольны как он это делает?

Так почему бы ему не считать все ракеты?

Проблемы будут только у тех у кого высокий пинг. Это справедливо и вполне естественно.

★★★ 🇷🇺 ★★★

  • ED Team
Posted
А мне кажется что вся проблема в том что ракеты считаются на клиенте, а должны на сервере.

Тогда все будут видеть кривой полет ракеты.

Представляешь, ты пускаешь ракету, а она улетает не с твоего самолета а где-то из точки в радиусе сотни метров вокруг. При этом проблема задержки все равно будет.

Единственный урок, который можно извлечь из истории, состоит в том, что люди не извлекают из истории никаких уроков. (С) Джордж Бернард Шоу

  • ED Team
Posted (edited)
Сейчас люди с высоким пингом это вообще непобедимое нечто, с пушки в них не прицелишься, ракеты летят мимо, за то их ракеты убивают на расстоянии 200 м и больше.

Не верно.

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

 

В Ил-2 сделано также, в Фалконе ЕМНИП тоже.

Edited by Chizh

Единственный урок, который можно извлечь из истории, состоит в том, что люди не извлекают из истории никаких уроков. (С) Джордж Бернард Шоу

Posted (edited)
Тогда все будут видеть кривой полет ракеты.

Представляешь, ты пускаешь ракету, а она улетает не с твоего самолета а где-то из точки в радиусе сотни метров вокруг. При этом проблема задержки все равно будет.

 

Не будет такого если она будет пускаться с задержкой.

На сколько это будет играбельно, смею предположить что задержки в 1 десятую секунды (ping 100) для ракетного боя это не так критично. То есть не должно вызывать видимых неудобств то, что ракета сойдет и полетит всего на 100 милисекунд позже, верно?

 

В Ил-2 сделано также

 

Для пушек же кроме фантома действительно ничего лучше не придумаешь, ибо заставить людей стрелять с упреждением (как это делают в CS или Quake) так начнут возмущатсья что это нереалистично, мало того попадать станет крайне сложно.

Но вопрос все же о ракетах по этому настаиваю на дальнейших исследованиях.

Edited by prok

★★★ 🇷🇺 ★★★

Posted
Не будет такого если она будет пускаться с задержкой.

На сколько это будет играбельно, смею предположить что задержки в 1 десятую секунды (ping 100) для ракетного боя это не так критично.

 

Вы хотите, чтобы на сервере была координированная картинка с задержкой. Тут возникают проблемы играбельности и причинно-следственные проблемы (causality).

 

Играбельность: все данные о вводе рулят самолетами в прошлом, что крайне неприятно, задержка в 200мс будет ощущаться руками.

 

Causality: Предположим, что максимальная задержка координации клиентов 200 мс, т.е. "координированная реальность" отстает от реальности на 200мс. Вы нажимаете на гашетку, ракета сходит с пилона и улетает, отстреливается игровой триггер. Информация о всех этих событиях пришла на сервер на 150-ой мс. Но на 100-ой мс вас уже убило ракетой, т.е. выпустить ракету вы не могли и выстрелить триггер тоже, хотя эта информация придет к вам на клиент только еще через 50 мс. Начинается рекурсивный butterfly-effect, нужно постоянно откатывать транзакции на всех клиентах, чтобы отменять действия после того как они уже не могли произойти. А клиенты-то на разных пингах сидят, т.е. откатываемые транзакции-то разной длины.

 

Eve Оnline, к примеру, так и работает, но там все события просто записываются в базу данных и ни о какой симуляции и реальном времени речи не идет.

  • ED Team
Posted
Не будет такого если она будет пускаться с задержкой.

На сколько это будет играбельно, смею предположить что задержки в 1 десятую секунды (ping 100) для ракетного боя это не так критично. То есть не должно вызывать видимых неудобств то, что ракета сойдет и полетит всего на 100 милисекунд позже, верно?

Ты про какую задержку?

 

 

Для пушек же кроме фантома действительно ничего лучше не придумаешь, ибо заставить людей стрелять с упреждением (как это делают в CS или Quake) так начнут возмущатсья что это нереалистично, мало того попадать станет крайне сложно.

Но вопрос все же о ракетах по этому настаиваю на дальнейших исследованиях.

Хорошо, другой пример.

Целимся ракетой в ближнем бою. Загнали врага в прицел и нажали гашетку. Но на сервере враг находится в сотне метров от позиции твоего фантома и не обязательно впереди или сзади, а может быть еще и сбоку. В результате твоя ракета просто не успевает довернуть и мажет.

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

 

В общем не вариант. Думали уже.

Единственный урок, который можно извлечь из истории, состоит в том, что люди не извлекают из истории никаких уроков. (С) Джордж Бернард Шоу

Posted
Вы хотите, чтобы на сервере была координированная картинка с задержкой. Тут возникают проблемы играбельности и причинно-следственные проблемы (causality).

 

Играбельность: все данные о вводе рулят самолетами в прошлом, что крайне неприятно, задержка в 200мс будет ощущаться руками.

 

Causality: Предположим, что максимальная задержка координации клиентов 200 мс, т.е. "координированная реальность" отстает от реальности на 200мс. Вы нажимаете на гашетку, ракета сходит с пилона и улетает, отстреливается игровой триггер. Информация о всех этих событиях пришла на сервер на 150-ой мс. Но на 100-ой мс вас уже убило ракетой, т.е. выпустить ракету вы не могли и выстрелить триггер тоже, хотя эта информация придет к вам на клиент только еще через 50 мс. Начинается рекурсивный butterfly-effect, нужно постоянно откатывать транзакции на всех клиентах, чтобы отменять действия после того как они уже не могли произойти. А клиенты-то на разных пингах сидят, т.е. откатываемые транзакции-то разной длины.

 

Eve Оnline, к примеру, так и работает, но там все события просто записываются в базу данных и ни о какой симуляции и реальном времени речи не идет.

 

Любая современная 3D игра так работает.

Клиенты с пингом 200? Это что за пример такой? :D

нормальных людей такие клиенты вообще не должны волновать, это не RTS и не RPG а самый настоящий FPS на самолетах.

Нормальный пинг для игры всегда был не более 100, это как раз та задержка, в которой нормально работают оптимальные настройки сглаживания и синхронизации между клиентами. То есть можно, например, использовать алгоритмы "прогнозирования" для управления самолетом, чтобы не было задержки при выполнении движений РУСом, то есть положение самолета клиента показывается именно с клиентской части, хотя на сервере оно слегка запаздывает, в то время как ракеты пускаются с задержкой, равной пингу. Я уверен что рано или поздно прийдется создавать подобный код, потмоу что то чт осейчас это просто более менее оптимальный но далеко не лучший вариант, а пинги будут всегда, это единственное что мы не сможем победить, за то алгоритмы разные, и думаю ты не станешь спорить с тем что в каждой игре сетевой код отличается, где-то он сделан лучше а где-то он убог? Именно потому что где-то над этим работали больше и сделали все что могли для достиждения максимальных компромиссов.

★★★ 🇷🇺 ★★★

Posted

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

 

Если это будет означать лишь то что я не попал в цель, что было зафиксировано сервером, то я не против.

Вас же определенно волнует только то, как это будет выглядеть у меня на экране?

Тогда скажу как это выглядит у меня:

В меня пускают ракету и я уворачиваюсь от нее, а спустя полсекунды она убивает меня, нахотясь в 500 метрах позади.

Такой вариант меня должен устраивать?

 

Ты про какую задержку?

 

Почему-то был уверен что ты понимаешь про какую задержку.

Я нажал на гашетку и ракета сошла с пилона только тогда когда это установлено сервером, то есть позже на количество милисекнд, равное моему пингу.

★★★ 🇷🇺 ★★★

  • ED Team
Posted
Если это будет означать лишь то что я не попал в цель, что было зафиксировано сервером, то я не против.

Вас же определенно волнует только то, как это будет выглядеть у меня на экране?

Тогда скажу как это выглядит у меня:

В меня пускают ракету и я уворачиваюсь от нее, а спустя полсекунды она убивает меня, нахотясь в 500 метрах позади.

Такой вариант меня должен устраивать?

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

 

 

Почему-то был уверен что ты понимаешь про какую задержку.

Я нажал на гашетку и ракета сошла с пилона только тогда когда это установлено сервером, то есть позже на количество милисекнд, равное моему пингу.

Я не понимаю что это даст.

Единственный урок, который можно извлечь из истории, состоит в том, что люди не извлекают из истории никаких уроков. (С) Джордж Бернард Шоу

Posted

Я не понимаю что это даст.

 

Это даст то что пуск не будет возникать в радиусе 100 метров от самолета, при этом полет ракеты будет управляться сервером.

★★★ 🇷🇺 ★★★

  • ED Team
Posted
Это даст то что пуск не будет возникать в радиусе 100 метров от самолета, при этом полет ракеты будет управляться сервером.

Так твой самолет через время пинга может не быть в экстраполируемой точке на сервере. При маневрировании все равно точного соответствия траекторий не получится. Да и цель за время пинга может сильно поменять положение.

Единственный урок, который можно извлечь из истории, состоит в том, что люди не извлекают из истории никаких уроков. (С) Джордж Бернард Шоу

Posted
Любая современная 3D игра так работает.

Клиенты с пингом 200?

 

Нет, любая игра так не работает - вы не имеете предствления о том, что говорите. Вам Чиж привел пример реализации с фантомами выше. Так работает Arma2, Battlefield 3 и т.п.

 

Во-первых я указал 200мс не пингов, а задержки синхронизации транзакции.

Во-вторых транзакционная атомарность даже с неустойчивым 1-phase commit очень сложный и очень медленный алгоритм, минимальные задержки которого растут как О(t), где t - общее время распространения информации от координатора (сервера) ко всем клиентам, т.е. суммарный RTT (сигма два раза пинга на каждом хосте). Т.е. задержка синхронизации это несколько раз суммарный пинг игры.

 

То о чем я говорю, предполагает квантование игрового времени, чтобы получить правильную картинку каждый квант (схоже с тем как сигналы гейтов стабилизируются каждый такт в процессоре). В играх реального времени, таких как DCS, этот процесс работать не может, т.к. если кванты миллисекундные, пинги должны быть максимум десятки микросекунд для десятков клиентов, чтобы успевать в транзакцию. Если пинги десятки миллисекунд, кванты будут секундные, а траектории и поведение кусочно-линейное (ракета будет лететь по сегментарной дуге перескакивая, показания приборов отменятся\скачкообразно меняться раз в несколько секунд).

 

Во всех остальных случаях ни о какой точности речи не идет.

  • Like 1
Posted
Так твой самолет через время пинга может не быть в экстраполируемой точке на сервере. При маневрировании все равно точного соответствия траекторий не получится. Да и цель за время пинга может сильно поменять положение.

 

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

 

 

Да и цель за время пинга может сильно поменять положение.

 

На сколько сильно?

1 десятая секунды это не так уж много.

Тем более если ракету наводит сервер, это уже не так важно для того кто ее пустил?

★★★ 🇷🇺 ★★★

Posted
Нет, любая игра так не работает - вы не имеете предствления о том, что говорите. Вам Чиж привел пример реализации с фантомами выше. Так работает Arma2, Battlefield 3 и т.п.

 

Я так понял что разработчики батлфилда и армы щедро делятся своим сетевым кодом со семи желающими?

Может он работает по схожему принципу, но что-либо утверждать на твоем месте я бы не стал, тем более что касается проектов с миллионым бюджетом ;)

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

Надеюсь и в вашей команде именно этот вопрос когда нибудь станет чьим-то творчеством, и вот тогда ты посмотришь как много еще можно сделать.

★★★ 🇷🇺 ★★★

Posted (edited)
Я так понял что разработчики батлфилда и армы щедро делятся своим сетевым кодом со семи желающими?

 

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

 

И в Арме и БФ3 все те же артефакты что и в DCS.

 

Может он работает по схожему принципу, но что-либо утверждать на твоем месте я бы не стал, тем более что касается проектов с миллионым бюджетом ;)

 

Я архитектор проекта с бюджетом в несколько миллионов и занимаюсь распределенными системами 13 лет.

 

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

 

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

 

Настоятельно рекомендую почитать что-нибудь из научной литературы, типа IEEE Transactions on Parallel and Distributed Systems. Узнаете для себя много нового.

Edited by arcivanov
Posted

Я почитал и понял что все серъезно и интересно... В DCS все сделано верно по обсчетам на клиенте т.к. ракета летит длительный период времени по сравнению с пулей в шутере.

 

Лаги в DSC победить невозможно на сегодняшнем этапе развития сетевой индустрии, но мой вопрос не в этом и немного не относится к трекам и т.д.

 

Зачастую из-за пинга (существенной потери пакетов) происходит следующее:

- У тебя ракета попала и цель горит, а до цели, из-за сбоев сети, информация через сервер не дошла и у него все впорядке и он летает

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

Механизм синхронизации при длительной потери пакетов работает криво или сбоит, видимо отсутвует какая-нибудь повторная синхронизация. Уже далее вопрос в том как это потом обыграть графически (в шутере тебя на 3 метра назад вернули и убили), но для начала справедливость.

- Хотя бывало в ЛО2 босле боя через минуту загораешься сам по себе - видимо пересинхронизация.

Posted

Я в компах нуб,поэтому вопрос:

Если prok думает что всё так просто и серверу

надо только обсчитать набор данных и это всего несколько кб,

то можно ли использовать машины на которых стояли ГС 1.12?

А вообще сейчас сервер что делает?

Он также отрисовывает все ЛОДы и эфекты?

Если самоли будут летать около камеры сервера (вроде в Краснодаре) он

напряжется?

Т.е владелец сервера если по Ф-11 продвинет камеру на филд или к месту боя он же увидит модели самолей и техники?

Почему при использовании СППУ у меня ФПС норм, а у остальных полный капец?

Сервер считает воду,облака,текстуры земли?

Таки нужен выделенный серверный софт для больших порталов(Авиасибирь,РАФ,РФ и проч которые сидят на выделенных серверах) и мультиплеер ,как сейчас для простых полетушек.

"Человек - не птица, крыльев не имать. Аще кто приставит себе аки крылья деревянна, противу естества творит, за сие содружество с нечистой силой отрубить выдумщику голову, тело окоянного, пса смердящего, бросить свиньям на съедение, а выдумку после священные литургии огнем сжечь"

Иван IV Грозный.

Posted (edited)

Единственный вариант, при котором будет абсолютно честный уход от ракет - расчёт ракеты не на клиенте, его пустившем, и даже не на сервере, а расчёт ракеты на клиенте цели.

Тогда траектория будет без каких-либо задержек и абсолютно честная, как в оффлайне.

 

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

 

Кроме того, если ракета радийная, придётся делать согласования с клиентом пустившего ракету о том, что подсвет цели РЛС идёт успешно.

 

С тепловыми ракетами при такой модели вообще не должно быть никаких проблем, даже их уход на ЛТЦ удобнее расчитывать на клиенте цели, поскольку она сама эти ЛТЦ пускает.

 

Но конечно пускающий ракету будет видеть её траекторию с ошибками, но это уж намного лучше, чем видеть с ошибками траекторию той ракеты, от которой ты уходишь.

Edited by ААК
Posted

FPS игра подразумевает, что играть в нее будут с пингом до 100мс, а еще лучше до 50мс. Sad, but true. Так было всегда и везде. Нужно просто смириться.

  • Like 1

Welcome to the Rock

  • 2 weeks later...
Posted
Ракета Р-27ЕР почти всегда не попадает, потому что уходит на 3-4 диполей. Не слишком ли круто?

В то время как уход на диполи айм120С практически невозможен.

Зависит от ракурса цели, ЭПР цели, высоты и фазы Луны.

Все тоже самое за исключением того, что AIM-120C обладает лучшей помехозащищенностью и естественно требует больше ловушек.

А можно в цифрах сравнение помехозащищенности от диполей ГСН Р-27, Р-77, AIM-7 и AIM-120B, C? Чтобы мы прикинули фазы планет и на сколько, или во сколько раз больше (меньше) ловушек требуется. Думаю, всем давно уже интересно узнать это. Ну и попутно второй вопрос, связанный с первым. Из db_sensors.lua:

["AN/APG-63"] =

{

type = RADAR_AS,

 

...

velocity_limits =

{

radial_velocity_min = 100.0 / 3.6,

relative_radial_velocity_min = 100.0 / 3.6,

======================================

["N-019"] =

{

type = RADAR_AS,

...

velocity_limits =

{

radial_velocity_min = 150.0 / 3.6,

relative_radial_velocity_min = 150.0 / 3.6,

======================================

["N-019M"] =

{

type = RADAR_AS,

...

velocity_limits =

{

radial_velocity_min = 150.0 / 3.6,

relative_radial_velocity_min = 150.0 / 3.6,

======================================

["N-001"] =

{

type = RADAR_AS,

...

velocity_limits =

{

radial_velocity_min = 210.0 / 3.6,

relative_radial_velocity_min = 150.0 / 3.6,

Что значит параметр, выделенный красным?

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...