![]() |
#76 | |
Маньяк
|
Re: Первые впечатления о ПвП
Вы говорите почти об одном и том же, только понять друг друга не можете
![]() А есть какие-нибудь обзоры от организованных гильдий, пытавшихся что-то сделать нормальным рейдом? Что бы отчёт был не в форме "бегал за толпой, бардак, ничего не понятно", а "собрались гильдией, опробовали такие-то действия, то-то работает, то-то не работает" Например я ни разу не услышал об использовании комбинаций умений, хотя в ГВ это основа слаженных действий. |
|
![]() |
![]() |
#77 | ||
Предводитель
|
Re: Первые впечатления о ПвП
![]() Цитата:
![]() 2) Сервер ничего не диктует ![]() ![]() Пример рассинхронизации неверный. Такая реализация как раз и оставляет кучу возможностей с проходом сквозь объекты и вечным портом в точку сервера. Именно поэтому обработка коллизий - на клиенте, а серверу шлются результаты, в случае коллизий - просто положения игроков. Если бы всё происходило так, как вообразил (нафантазировал) себе ты, то сервер бы загнулся, а управление персом полностью зависело бы от пинга, т.к. клиенту сначала требовалось бы 1) послать команду на выполнение движения 2) дождаться ответа от сервера, что движение возможно и только потом 3) отрисовать и осуществить его. Если в случае статики (мира, объектов, деревьев) это ещё реально (хотя совершенно не нужно - клиент сам определить куда можно, а куда нельзя), то в условиях непредсказуемого перемещения игроков это попросту нереально! Игра превратиться в пошаговую стратегию ![]() Если бы все расчёты происходили на клиенте, то на кой хрен тогда сдался сервер? Там помимо коллизий и физики рассчётов дофига и больше. А уж физику и коллизии всегда оставляли на клиенты. Иначе все красоты физики и коллизий были бы давно в примитивнейших игрушках, идущих на калькуляторах - всё равно ведь обработка на сервере ![]() Если и после этого ты так ничего не понял - я умываю руки. ![]() P.S: Я в своё время занимался эмулятором ВоВ, непосредственно кодом. Да, в ВоВ нет физики и коллизий тел. Но вот простой факт - поставишь ты в мире скамеечку какую, бочку, сундук, объект в общем. Перс может на него запрыгнуть и сквозь него не проходит. Будешь удивлён - код сервера за это не отвечает - он отвечает лишь за положение объекта в мире, то, что на него можно запрыгнуть (или нельзя - слишком высоко), на нём можно стоять - определяется клиентом, который, оценив, можно ли встать на эту бочку - просто отсылает серверу координаты персонажа. |
||
![]() |
![]() |
#78 | ||
Гуру
|
Re: Первые впечатления о ПвП
Ну да, сравнил, что называется, жопу с пальцем. В синглах не нужно никуда данные отправлять.
![]() Цитата:
Ведь поэтому в большинстве ММО ты не сможешь сдвинуться с места, пока сервер не откликнется и не "даст добро". Но да, некоторые внутриигровые характеристики могут быть заложены в клиенте, чтобы сократить объём пересылаемых от клиента данных. Но на сервере происходит проверка этих данных с учётом некоторых возможных переменных, во избежание хаков. Например, скорость персонажа = 100% + 10% от экипировки и +10% от баффа. Таким образом, предельный показатель равен 120%, и этот предел прописан на сервере. Если сервер получит аномальные показатели, то он их просто отфильтрует, оставив положенные 120%. Ты удивишься, но до сих пор нет полноценных эмуляторов ВоВ. Точнее, все они - говно. А ещё, тебя, возможно, удивит тот факт, что ММО на говноэмуляторах ломаются через артмани, а официальные сервера - нет. Как думаешь, почему? А вот как раз потому, что кривые эмуляторы полагаются на расчёты в клиенте, а нормальные сервера осуществляют все процессы непосредственно "в себе". Тут просто не может быть иначе, пойми. Если бы клиен играл главенствующую роль в обработке всех процессов, то кулхацкеры преспокойно игрались с пакетами и пялили сервер под хвостик, присылая ему фэйковые данные о содержимом инвентаря, количестве денег, и прочем-прочем. Не знаю, даже. как тебе ещё можно это доказать. |
||
![]() |
![]() |
#79 | |||
Предводитель
|
Re: Первые впечатления о ПвП
![]() Есть мультиплееры. Без серверов как таковых. С физикой и коллизиями... Сервер обрабатывает??? Да. Но не коллизия и физика ![]() Цитата:
И не путай проверку максимальной скорости не больше ли она определённого порога и расчёт коллизий и физики. Вот уж точно жопу с пальцем сравнивать. ![]() Нет, коллизии, конечно, можно оставить на сервер... Этож логично - пусть сервер обрабатывает коллизии ото всех подключенных пользователей, чем этим будет заниматься клиент только для своего персонажа, в движке которого это зашито. Оптимизация, чё уш там... ![]() ![]() Цитата:
![]() Что касается подмены пакетов, так подменяют же! И за это сразу бан на официальных серверах. Везде предупреждения на этот счёт. И именно поэтому, коллизии реализованы в движке игры - так их не подменить и с пингом геммора не будет. Ещё один простой пример. Игра, есть коллизии. Сервер лаганул - ты бежишь дальше на встречу другому персу, серв этого не видит. Ты думаешь, что если нет ответа - вы пробежите друг сквозь друга??? Нифига подобного. Коллизия отрабатывается на стороне клиента, тебе клиент не даст пройти насквозь. ![]() Всё, больше в этой теме не участвую, спорить с человеком, который в этом ничего не понимает - просто бессмысленно... ![]() P.S: Перенести отработку и физики, и коллизий и всего чего угодно - можно. Вопрос, насколько это разумно... Гвозди тоже можно утюгом забивать ![]() Последний раз редактировалось Kirixoid_renamed_1055396_19012023; 01.10.2013 в 15:30. Причина: Добавлено сообщение |
|||
![]() |
![]() |
#80 | ||
Гуру
|
Re: Первые впечатления о ПвП
Цитата:
![]() Коллизия же должна быть и на сервере и на клиенте, иначе она и яйца выеденного не будет стоить. Будет только на сервере - будет глючить клиент. Будет только на клиенте - будет глючить всё. О, мудрый айтишник, явись в этот тред, да рассуди неразумных, просвети непросвещённых! ![]() |
||
![]() |
![]() |
#81 | |
Маньяк
|
Re: Первые впечатления о ПвП
Кириксоид, тут ты не прав. Я просто приведу пример на основе старых чатов, где не требовался сервер. Они загибались, как только сетка выростала свыше 100 человек. Ибо пакеты ходили между клиентскими программами, а не через сервер, что вызывало адскую нагрузку на сеть. Это так же как отход от хабов в сторону свитчей. Вроде по сути делают одну работу, но блин они это делают по разному. Да и представь например себе ММО игру с сервером например в европе. Большая часть работы в этой ММО берет на себя клиент. т.е. по сути если что данные будут пересылаться между самими клиентами, в обход сервака. Тут как уже говорилось, первое - большое раздолье для взлома клиента и читов, чем если бы информация фильтровалась через сервер. Второе - пинг. Ну представь ты находишься на камчатке, второй клиент рядом с сервером в европе, третий клиент в америке, а четвертый тоже на камчатке. Если большенство обсчета будет на клиенте, то бегая с персом с камчатки, ты (так как ты тоже от туда) особых проблем не заметишь. Однако, если тебе встретиться человек из америки, то он скорее всего будет для тебя лагером, как и ты для него. Т.е. для камчатника ты будешь отображаться норм, для европейца с подлагиванием, а америкос будет жутким лагером и ты для него. Там будет очень тяжело понять кто из вас прав, когда вы будете друг друга бить. Ведь попал или нет, будет обсчитывать клиент. Как ты это себе представляешь? А я видел такое. Просто у тебя будет на экране одно, а в действительности может быть всё совсем по другому. То ты его первый ударил, а у него ты до него ещё и не добежал. То наоборот, ты видишь как он портается и не уследив за моментом, где он последний раз был, пропускаешь от него удар. Вообщем общение клиентов между друг другом - бред + нереальная нагрузка на сеть. А как бы это было при сервере? Да всё было бы проще. От тебя до сервера одно расстояние, он американца тоже одно. Сервер конечно сделает небольшую поправку на пинг, но всё равно преимущество будет у того, кто находится рядом и у кого пинг меньше. Но при этом не будет такой ахрененной рассинхронизации, которую ты увидишь, при реализации данного механизма без сервера.
__________________
Vanguard - Chivalry:MW
Скальд, миник, бард имеют SoS - На инках часто он спасает! Как будто прихватил понос, И маг от трейна убегает... |
|
![]() |
![]() |
#83 | |||
Предводитель
|
Re: Первые впечатления о ПвП
Цитата:
![]() При чём здесь пакеты и их объём??? Всё, что требуется и клиенту и серверу - координаты точки, где находится персонаж. Ну если тут никто не понимает, распоследний раз: Что такое коллизии и что именно должен просчитать сервер и переслать клиенту? А если клиент и так знает, что на точку положения другого перса и в опред радиусе от неё он встать не может, что ещё ему должен слать сервер кроме координат точки??? И проблема синхронизации тут СОВЕРШЕННО НЕ ПРИ ЧЁМ. Она есть с коллизиями или без, проблема лишь в том, как клиент отработает столкновение точек, когда с сервера придут координаты. Ограничивать передвижение сервер не будет - это всё на клиенте, в движке. При чём тут попадания? Попадания как раз на сервере. Но коллизии и прохождение сквозь к этому имеет весьма и весьма косвенное отношение. Во всяком случае в ТЕСО точно так. В других играх действительно могут гланды через анус удалять... Цитата:
![]() ![]() Не, я конечно, понял о чём ты, вот только а) коллизии немного не то б) физика будет на стороне клиента в первую очередь, а уж он отправит потом серверу инфу о том, куда там приземлился тот или иной обломок, а задача сервера - принять эту инфу и отослать другим, что в точке Х находится какой-то обломок. Но никак не отрисовывать физику, на все клиенты ![]() Про коллизию и там и там. Ещё раз - у нас есть точка положения перса. Клиент знает, что в эту точку и опред радиус от неё встать нельзя - непроходимо. Что нужно обрабатывать и синхронизировать серверу??? Вывод просто - в синхронизации нуждается ТОЛЬКО ЛИШЬ ТОЧКА ПОЛОЖЕНИЯ. Остальное сделает клиент. Ну или опиши мне, как ты себе представляешь, как сервер будет просчитывать коллизии? ![]() |
|||
![]() |
![]() |
#84 | |
Гуру
|
Re: Первые впечатления о ПвП
Совершенно верно, ибо он (сервер) её просчитывает. А без этого динамические объекты не смогут адекватно реагировать на изменение положения в пространстве. Кстати, ты имеешь представление о такой вещи, как геодата и её функциях?
Геодата - это инструмент, который позволяет проконтролировать некоторые действия клиента (а именно - передвижение и взаимодействие с другими объектами с точки зрения геометрического положения в пространстве). NPC проходящие сквозь стены, игроки стреляющие через препятствия - всего этого можно избежать если использовать геодату. Именно она позволяет серверу проверить может ли обьект пройти от точки А в точку Б; можно ли как-то возамодействовать с обьектом в точке Б, находясь в точке А; может ли вас видеть обьект находящийся в точке Б и многое другое.
Сервер геодаты может быть как встроенным так и внешним, который можно запустить на отдельном компьютере. |
|
![]() |
![]() |
#85 | |
Маньяк
|
Re: Первые впечатления о ПвП
Про объем пакетов речи в моем посте не шло. Ты прав что надо обсчитывать координаты игроков вместе с коллизиями. Но получается при обсчёте координат игрока обсчитывается тем самым и коллизия. И если коллизии нет, т.е. персонажи не проходят через друг друга, т.к. они прошли мимо, то сервер всё равно обсчитает, где они были. Так же и если коллизия была, то сервер же показал где будет коллизия клиентам, а не сами клиенты до этого додумались, они же не передавали эти данные между друг другом. Соответственно, то что ты описываешь - работа сервера, а не клиента. Понял? Представь 100 человек на карте и каждый клиент каждому будет посылать координаты где он находится? Вот в этом случае обсчёт коллизий и местоположения идет без сервера, о чем я и говорил, что это анреал и просто будет полный пиндос при большом замесе.
По поводу физики. Будет синхронизация клиентов, для того, что бы у всех показывалось одно и то же. Ибо клиент не знает, что у первого плеера вылетела молния, пока об этом ему не сообщит сервер. Так же как и второй клиент не узнает о том, что молния дошла до третьего плеера, если сервер это не сообщит. Получается, что бы все узнали что молния вылетела в одном месте и попала в другое, нужно всем клиентом об этом сказать. Этим занимается сервер, а не клиент, думаю это понятно? И что бы у всех отображалось это одинаково, то сервер будет это всё синхронизировать со всеми клиентами, дабы не получилось так, что у одного молния уже влетела в плеера, тогда как у другого она еще не вылетела. Плюсом ко всему физика, если она обрабатывается только на клиенте, будет видна только тому клиенту на котором она обрабатывается, как бы масло маслянно это не звучало. Пример МО, где после смерти, тушка трупа вполне себе может быть перемещена игроком. Только вот не задача, если на одном клиенте я тушку пнул в реку, то у другого игрока, тушка так и лежит на месте или он может ей играть в футбол и запнуть скажем на дом. Т.е. у каждого будет свой объект и каждый будет видеть своё. Надеюсь закончим на этом?
__________________
Vanguard - Chivalry:MW
Скальд, миник, бард имеют SoS - На инках часто он спасает! Как будто прихватил понос, И маг от трейна убегает... |
|
![]() |
![]() |
#86 | |||||
Предводитель
|
Re: Первые впечатления о ПвП
Нет, за физику отвечает клиент, а вот сделать так, чтобы обломок отлетел в какой-то место и там и остался и принят был сервером и в дальнейшем был виден другим игрокам - другое дело. И это уже не физика. Связано с ней, но не просчёт физики. Цитата:
![]() ![]() То, что перс не может пройти сквозь стены - это работа клиента и только. Вон в том же вов есть чит позволяющий проходить сквозь все стены. На оффе он сработает точно также, вот только античит засечёт его и моментом бан словишь. Вот только это ещё раз доказывает, что обработка идёт на стороне клиента, а сервер может лишь отследить не было ли допущено то, чего быть не должно, но не может запретить это. Стрельба через препятствие, полёт снаряда сквозь них, возможность взаимодействия, видимость. Всё это да - на стороне сервера. Но коллизии тел персонажей здесь при чём, если для их отработки достаточно иметь функцию в клиенте и посылать ему верные координаты местоположения? Цитата:
![]() Координаты тел посылает сервер всем - это да. А вот коллизии между этими телами просчитываются клиентом, клиенту для этого нужны лишь координаты. И ещё, что именно-то должен сервер в этих коллизиях просчитывать-то? Кто мне может объяснить, что он там просчитает и что отправит клиенту??? Цитата:
2) Это ежу понятно, что всё это шлёт и отрабатывает сервер (после того, как тот, кто касатнул молнию, послал свои сведения самому серверу). Цитата:
2) Физика, она и в африке физика. Если клиенту дают инфу, что с севера на юг до объекта Х с силой Y вылетел объект и достиг его - отрисовать. То, где бы клиенты не находились - отрисуется у всех одинаково. Заданные параметры у всех одинаковы, где бы при этом не находились разные игроки. 3) Пример с тушкой из МО - это не пример рисования физики только клиентом. Это проблема НЕ передачи инфы о том, что тело было перемещено и куда оно было перемещено. К физике как таковой отношения не имеет. Отрисовка физики (куда как и что полетело) - это проблемы исключительно клиента. Последствий действий этой физики (где что осталось) - сервера. Вот на этом закончим. Засим, прощаюсь с вами в теме обсуждения коллизий и физики, "обрабатываемых на сервере". Об этой фантастике общайтесь дальше без меня ![]() |
|||||
![]() |
![]() |
#89 | |
Guest
|
Re: Первые впечатления о ПвП
Что каждый из вас имеет в виду, когда говорит "просчитать коллизию"?
Мб если вы ответите на это, вам будет проще друг друга понять. (просто клиент просто не дает двигаться, когда координата перса совпадает с координатой препятствия. А считает их не клиент. Он ничего не считает же) |
|
![]() |
![]() |
#91 | |
Guest
|
Re: Первые впечатления о ПвП
А с другой стороны, кто координаты считает? Сервер же не знает, куда идет персонаж, например.
Как это происходит? Комп отправляет серверу, что я нажал W, а он считает? Вряд ли, скорее комп получает координаты, а потом в зависимости от того, сколько я удерживаю, высчитывает координаты и отправляет их серверу уже... Чтоб он отправил их другим клиентам. Вот тогда получается уже, что сервер ничего не считает. А координаты считает как раз клиент,А не сервер. п.с. я понятия не имею, как это происходит. Вот у меня две версии. Я не спорю,я прошу, чтоб меня просветили и сказали, есть ли смысл в том, что я говорю. п.п.с я вообще длинные посты не читал. Только в начале, на предыдущей странице. ![]() Последний раз редактировалось Nordgar_renamed_1066131_03052020; 02.10.2013 в 03:23. |
|
![]() |
![]() |
#92 | |
Гуру
|
Re: Первые впечатления о ПвП
Ну да, это я начудил немного с формулировкой.
Добавлено через 4 минуты Хотя, так не во всех играх. Некоторые стопорят персонажа сразу, как прервётся поступление пакетов от клиента. Например, как в Айоне. Кстати, на фришках при дисконнекте можно было ещё какое-то время "вхолостую" по карте бегать, но не более. Последний раз редактировалось 404 Not found_renamed_1074634_30122024; 02.10.2013 в 03:00. Причина: Добавлено сообщение |
|
![]() |
![]() |
#94 | |
Гуру
|
Re: Первые впечатления о ПвП
Ты меня, похоже, не так понял. Вот небольшой пример:
1. Ты идёшь/едешь вперёд. 2. Происходит дисконнект. 3. Ты переподключаешь интернеты. 4. Видишь, что твой персонаж уже стоит уже далеко от того места, где произошло отключение. Такое происходит не во всех ММО, но имеет место быть. |
|
![]() |
![]() |
#95 | |
Guest
|
Re: Первые впечатления о ПвП
А у меня еще бывало и что он не доходил до того места реально.
Вот помню на пиратке вов, где была куча дисконнектов. Там получается, тебя как бы уже выкинуло, но ты еще бежишь.... А заходишь за пару метров до того, где с твоей точки зрения тебя кинул. Или это откаты баз данных?(каких-нить). Или что все это значит? хД Кто считает тогда?) |
|
![]() |
![]() |
#96 | |
Предводитель
|
Re: Первые впечатления о ПвП
Offtopic:
Заходишь ты вновь в игру (или фриз у сервака прошёл и он снова стал обрабатывать входящие пакеты), сервер отвечает тебе и шлёт клиенту последние полученные данные (на момент фризза/лага) - твой клиент получает их и синхронизируется с сервером (сервер тут имеет приоритет) => телепорт на точку указанную клиенту сервером. |
|
![]() |
![]() |
#98 | |
Маньяк
|
Re: Первые впечатления о ПвП
Скорее работает как-то так:
1. Пользователь нащимает кнопку W 2. Клиент одновременно начинает отрисовывать бег вперёд, если нет известных ему препятствий и отсылает серверу информацию вида "начал движение в такую-то сторону" 3. Сервер обрабатывает информацию и отвечает клиенту одно из двух: Либо персонаж успешно движется вперёд, либо впереди появилось какое-то препятствие и пойти вперёд не удалось. 4. Клиент получает данные от сервера и корректирует прорисовку в соответствии с ними. При хорошем пинге это незаметно, при плохом могут появляться рывки и что-то ещё. При дисконнекте клиент продолжает отрисовывать бег персонажа, но при реконнекте персонаж возвращается в точку, где его последний раз успел обсчитать сервер. Т.е. я считаю, что обсчитывается всё и на клиенте, и на сервере. На клиенте - для прорисовки без задержек, на сервере - для собственно механики. |
|
![]() |
![]() |
#99 | ||
Предводитель
|
Re: Первые впечатления о ПвП
Offtopic: Цитата:
2. Тоже верно, но только не начал движение в такую-то сторону, а двигаюсь по таким-то координатам (как покадровая съёмка, когда делается несколько снимков в секунду) - постоянно передаёт координаты перемещения. Определяет доступность этого перемещения, конечно, клиент сам. 3. Почти так. На сервере может существовать проверка "а действительно ли такое движение возможно"? Это НЕ обработка. Это - ПРОВЕРКА. А вот в случае неудачной проверки вариантов может быть несколько... 4. Корректирует прорисовку только в том случае, если клиент по каким-то причинам присылает значение отличные от тех, что есть в клиенте в текущий момент. Если сервер при проверке выясняет, что движение, что прислал клиент невозможно - два варианта: кик игрока с сервера, порт назад, на последнюю правильную точку. Последний вариант может вызвать множество лагов (телепортов) при малейшем фризе сервера, поэтому возможность/невозможность пробежать сквозь предметы обрабатывается клиентом. 5. Т.к. на сервере осуществляется лишь проверка, а клиент шлёт не направление, а точки - даже при плохом пинге рывков почти не будет - клиент сам проверяет корректность движения и шлёт пакеты, на сервер они приходят нормальные, проверка проходит и никого никуда не портует. А вот если бы было как говорят - всё проверялось бы действительно на сервере, рывки и порты были бы даже при довольно невысоком пинге, т.к. клиенту не успел бы прийти "запрет" на движение и он бы продолжил движение сквозь стену, а сервер потом его остановил бы... Именно поэтому обработка возможности перемещения реализована на стороне клиента. 6. Обсчитывается - широкое понятие. Да, обсчёты есть и там, и там, вот только какие именно... Взять тот же самый вов. Сервер не контролирует, может ли игрок пройти сквозь дерево, стену дома или какой-то объект (не запрещает и не разрешает это - просто игнорирует - это должен делать клиент). Но на сервере может быть установлена проверка, которую я описал выше. Это касается движения персонажа! А вот каст заклинания на цель, находящуюся за стеной или деревом - это уже проверяет сервер, хотя могло бы быть реализовано и на стороне клиента... Для примера работы сервера в вов: у каждого спелла есть радиус действия. Так вот если цель слишком далеко - заклинание не даст скастовать сам клиент! Штатной проверкой в нём самом. Но если он даёт совершить каст - сервер всё-равно проверяет у себя возможность каста (мало ли из-за рассинхронизации клиент видит цель ближе, чем она есть на самом деле). Т.е. элементарные запреты чего-либо реализованы в самом клиенте, а если же клиент всё-таки что-то разрешает, то доступность этого действия сервер проверяет. Все разговоры выше велись и начались с коллизии именно тел персонажей. Это тот самый пример, где участие какой-то обработки со стороны сервера попросту вовсе не требуется. Можно сделать проверку на сервере, но просчёт и обработку... ![]() Кому что ещё интересно по этой теме - в ЛС. Хватить оффтопить... |
||
![]() |
![]() |
#100 | ||
Гигант мысли
|
Re: Первые впечатления о ПвП
Цитата:
__________________
Есть только два вида в жизни ошибок: непоправимые чужие и незначительные свои.
|
||
![]() |