Вот насчёт плавно возвращаеться имхо правда. Просто плавно получаеться а-ля уфолёт с вертикальным взлётом.
Вид для печати
Вот насчёт плавно возвращаеться имхо правда. Просто плавно получаеться а-ля уфолёт с вертикальным взлётом.
"Клиент всегда прав" - ОЧЕНЬ спорное утверждение. Клиент может быть в лаге во время выстрела, жертва тоже может быть в лаге в этот момент. Из-за этого быть они оба могут совсем в разных точках - и что же теперь, засчитывать попадание?Цитата:
Originally posted by pwl
почти правильно, но сервер не интересует где реально была жертва. твой клиент сказал что ты попал, а клиент всегда прав...
сервер ждет сообщения от цели чтобы узнать какой эффект на нее произвело попадание
Жертва кстати тоже... того... клиент ;)
Я все-таки продолжаю считать, что сервер (как решающая, нейтральная сторона) один способен решить, было попадание или нет. Дать эту возможно компьютеру атакующего либо атакуемого, как мне кажется, некорретно.
Разумеется это мое имхо и так ли это все в ЗС я не знаю, но такой вариант очевиден и опровержений его я пока не видел.
"факт попадания фиксируется на стороне стреляющего" - это как? А если лобовая? Оба стреляли - кто прав?
Как мне обьяснили - причина лагов была не в сетевом коде, а в ошибке вычисления координат камеры... чего бы это ни значило... :)
Как гриться, хрен придерешься :DЦитата:
Originally posted by ROSS_Youss
в ошибке вычисления координат камеры... чего бы это ни значило... :)
Так имеет смысл стрелять по самолетом которые явно в лагге или нет ?
Если он из лага вернется- еще как имеет. Он же по прямой летит. Только надо вовремя остановиться, чтобы не весь БЗ в него всадить.Цитата:
Originally posted by Mephisto
Так имеет смысл стрелять по самолетом которые явно в лагге или нет ?
Вот это как раз ключевой вопрос.Цитата:
Originally posted by deCore
Если он из лага вернется- еще как имеет. Он же по прямой летит. Только надо вовремя остановиться, чтобы не весь БЗ в него всадить.
Мне почему-то кажется что стрелять по крафту в лаге бесмыссленно (кроме случая когда жертва действительно все время лага летит по прямой), поскольку когда связь восстановится и уточнится точное местоположение жертвы в момент стрельбы, и окажется, что все мимо - попадания учтены не будут.
Вообще это легко проверить - нужно "всего лишь" два компа под рукой в сетке с ЗС.
Нужно направить жертву прямолинейно, отрубить у нее сеть, после чего увести жертву в сторону, а атакующим пострелять по жертве в лаге. Потом подключить сеть и посмотреть результат. Очень интересно!
Может кто проведет такой эксперимент?
У меня нету просто двух компов сейчас которые потянут ЗС ;(
Программер наверно: Абсолютно точно и бесполезно =).Цитата:
Originally posted by ROSS_Youss
Как мне обьяснили - причина лагов была не в сетевом коде, а в ошибке вычисления координат камеры... чего бы это ни значило... :)
Кстати где-нить описан протокол/реализация (идеологическая) онлайна ?
Ты предлагаешь зделать как в Quake. А это означает, что ни один чел с пингом больше 150-200 нормально играть не сможет никогда.Цитата:
Originally posted by dets
"Я все-таки продолжаю считать, что сервер (как решающая, нейтральная сторона) один способен решить, было попадание или нет. Дать эту возможно компьютеру атакующего либо атакуемого, как мне кажется, некорретно.
Разумеется это мое имхо и так ли это все в ЗС я не знаю, но такой вариант очевиден и опровержений его я пока не видел.
Я ПРОВЕРЯЛ! Все так как я писал. Уже давно проверено. При обсчете всего сервером в большинстве случаев никто никуда не попадет при таких скоростях. Лучше уж так как есть - дает возможность играть в сети большому количеству людей со всей страны и даж мира. Сам представь: допустим пинг у нас с тобой по 200. В сумме 0.4 секунды. При скорости 300 км/ч цель в реале находится в 80 метрах от видимого места. Как будешь попадать?Цитата:
Originally posted by dets
Вот это как раз ключевой вопрос.
Мне почему-то кажется что стрелять по крафту в лаге бесмыссленно (кроме случая когда жертва действительно все время лага летит по прямой), поскольку когда связь восстановится и уточнится точное местоположение жертвы в момент стрельбы, и окажется, что все мимо - попадания учтены не будут.
....................
Может кто проведет такой эксперимент?
У меня нету просто двух компов сейчас которые потянут ЗС ;(
А что проверял? То что я предалагал проверить? И какой результат то?Цитата:
Originally posted by boRada
Я ПРОВЕРЯЛ! Все так как я писал. Уже давно проверено. При обсчете всего сервером в большинстве случаев никто никуда не попадет при таких скоростях. Лучше уж так как есть - дает возможность играть в сети большому количеству людей со всей страны и даж мира. Сам представь: допустим пинг у нас с тобой по 200. В сумме 0.4 секунды. При скорости 300 км/ч цель в реале находится в 80 метрах от видимого места. Как будешь попадать?
А насчет 80 метров - да действительно, но через 0.2 секунды сервер узнает где ты находишься теперь, твое новое местоположение. Также он узнает и мое местоположение и тот факт что я стрелял. Таким образом сервер знает твою траекторию (пусть это две точки, но другого не дано). А также серверу известно траектория полета моего снаряда. Сервер может сопоставить эти траетории и определить, пересекались ли они. Я не утверждаю что так оно и присходит, но это логично - согласись!
Давай отвлечемся. Представь - есть боевое столкновение. Кто-то по кому-то стрельнул. Есть три стороны - атакующий, жертва, сервер:
1) однозначно, кто-то должен сопоставить траектории полета снаряда и жертвы. Иначе ничего не будет вообще.
2) однозначно, этот кто-то должен быть _один_ из трех вышеперечисленных. Один - потому что если таких будет больше, кто-то решит что попадание было, кто-то - что не было - будет коллизия. А ведь этот один должен еще всем разослать результат - было попадание или нет.
Согласен с пунктами?
Если да, то по каким причинам ты думаешь что этот один - не сервер?
Во-первых вопрос - почему ты так думешь? Как это следует из того что я сказал?Цитата:
Originally posted by MoHaX
Ты предлагаешь зделать как в Quake. А это означает, что ни один чел с пингом больше 150-200 нормально играть не сможет никогда.
Во-вторых, "нормальная" игра в квейк где игрок может в любую милисекунду переместиться в трехмерном пространстве при пинге больше 300-400 не существует в принципе. Поэтому я говорю не про quake! Я говорю про ЗС. Самолет (или снаряд) не может моментально полететь назад или вбок. Именно поэтому мы может играть в ЗС при пинге 400-500. И именно поэтому есть возможность _в_принципе_ рассчитать траекторию движения самолета по двум точкам, интерполировать ее и получить близкую к реальной траекторию.
Блин да не надоело обсуждать то всё уже полтора года (с выхода ил-2Ш), а то и раньше.
Попадания на стороне КЛИЕНТА обсчитываются, ущерб от них - на стороне ЦЕЛИ. Сервер только пересылает и рассылает информацию остальным участникам (если сам не играет в данный момент). По-другому никак не сделать, если играть через интернет.
Нет 23AG_Oves ты частично не прав, сервер не только пересылает инфрмацию но и следит за её корректностью. Например для написанного тобой - сервер сам считает повреждения нанесенные цели и ей уже передает, что её пробило - оторвало. И следит, чтобы цель корректно на это отреагировала, например если до цели не дойдут пакеты с повреждениями за определенное кол-во секунд, то сервер её кикнет.
это атакующий.Цитата:
Originally posted by dets
Давай отвлечемся. Представь - есть боевое столкновение. Кто-то по кому-то стрельнул. Есть три стороны - атакующий, жертва, сервер:
1) однозначно, кто-то должен сопоставить траектории полета снаряда и жертвы. Иначе ничего не будет вообще.
это свыше.Цитата:
2) однозначно, этот кто-то должен быть _один_ из трех вышеперечисленных. Один - потому что если таких будет больше, кто-то решит что попадание было, кто-то - что не было - будет коллизия. А ведь этот один должен еще всем разослать результат - было попадание или нет.
Согласен с пунктами?
Если да, то по каким причинам ты думаешь что этот один - не сервер?
2 dets Есть дофига способов более хитрых подходов. Пример: CS стреляешь, клиент примерно знает куда попадёшь, если попал, то рисует попадание, кровь, все дела. Потом Сервер уже обсчитывает кто куда попал, и сответственно хелсы отнимает. Можно заставить клиента говорить серверу попал он или нет, отрисовку и обсчёт патронов на клиентов - каждому своё, если попали в тебя, то с задержкой 0.4 секунды тебе покажут взрыв.
Идеал конечно - кваковский вариант, но не с таким пингом.
Мы говорим о том как хотеось бы, или о том как есть?Цитата:
Originally posted by dets
А что проверял? То что я предалагал проверить? И какой результат то?
........Если да, то по каким причинам ты думаешь что этот один - не сервер?
Проверял на модем-модем. В сетке проблематично тыкатся шнуром.
Типичная ситуация(сервер-напарник), подобную наверняка видели все: лечу за ботом - с 6 даю несколько очередей, вижу вспышки от попаданий(значит всеж у МЕНЯ попадания идут?), через секунду он оказался в 300-500 метрах сбоку (оказывается он во время лага моего, резко дал влево) и тут же у него отваливается крыло. Там, в стороне. Так как это был бот - значит с сервера только что пришли повреждения вместе с новым местоположением. Т.е. реально я стрелял в пустое место (для сервера) Сервер в этот момент точно знает где цель-бот. Если противник не бот, а сервер сторонний, то с точки зрения сервера, если у нас пинг достаточно большой, мы всегда будем находится не там, где видим у себя на компах, "скорость самолета / пинг" даст большую погрешность, значит сервер будет "идиотски хохотать", глядя как мы лупим далеко мимо цели.
Меня это иногда подводит. Смотрю, вражина на шесть заходит, встаешь в вираж и с интересом смотришь как он, под углом ко мне градусов 45 и более, страстно поливает из всех шлангов, очереди идут далеко мимо и ВДРУГ, к удивлению у меня начинают отваливаться запчасти, а часто уже на это некому смотреть - ПК.
Повторюсь - это типичные ситуации, на основе которых я сделал свои выводы. Разработчики никогда наверно не признаются, как на самом деле обстоят дела.
А это и есть мой подход! ;)Цитата:
Originally posted by MikeR
[B]2 dets Есть дофига способов более хитрых подходов. Пример: CS стреляешь, клиент примерно знает куда попадёшь, если попал, то рисует попадание, кровь, все дела. Потом Сервер уже обсчитывает кто куда попал, и сответственно хелсы отнимает.
Все правильно - клиент стреляет (причем точно знает куда), и рисует как он стреляет и даже вспышку попадания в жертву.
А сервер сопоставляет все данные от атакующего и жертвы и делает вывод было попадание или нет.
Из этого следует очень важный вывод. Пока сервер не подтвердит что попадание было, комп атакующего может рисовать хоть сколько вспышек от попаданий, но жертва НИКОГДА не разваливается и не падает! Комп атакующего ждет подтверждения что попадание действительно было, после чего жертва получает положенные ей повреждения.
Именно этот факт рождает 1000 писем (половину от всего количества по этой теме) в месяц на этом форуме о том что какой-то крафт бетонный, мол в него попали 4 37 мм снаряда а он летит дальше. А они в него не попадали вовсе. Просто не было подтверждения попадания из-за того что реальные траектории полета снаряда и жертвы не совпали.
А вот вопрос - почему ты так решил?Цитата:
Originally posted by pwl
это атакующий.
Может быть это и так на самом деле. Но подумай - атакующему чтобы сопоставить траекторию полета своего снаряда и жертвы нужно вдвое (если пинг обоих участников равен) больше времени чем серверу.
А теперь представь - узнал атакующий что было например попадание - ему же нужно ВСЕМ другим игрокам разослать информацию об этом. Ну пусть он не сам рассылает каждому, а отсылает на сервер, и тот уже потом совершает "массовую рассылку" на каждого игрока. Все равно время, через которое обновится картинка у постороннего игрока (не участвующего в столкновении, зрителя) УВЕЛИЧИВАЕТСЯ как минимум на время пинга атакующего.
Теперь вопрос - ЗАЧЕМ такие сложности, если все эти функции можно возложить на сервер?
А нафига серверу обсчитывать все за всех? Ведь тогда и общую инфу он будет посылать каждому! И фиг ты на модеме поиграешь ! Я вот по 120 кб линии пробовал в СS поиграть - 1 фпс с долгими лагами, меня ножом просто резали.. А в ил и 14400 можно летать.
1. Не нужен пинг. Я стреляю и попадаю по тому "призраку", что у МЕНЯ на экране, ты читаешь о чем я писал в примерах? Оно мож и нечестно, но дает возможность вообще летать в сети не только по выделенке. А таких наверно всеж больше.Цитата:
Originally posted by dets
Но подумай - атакующему чтобы сопоставить траекторию полета своего снаряда и жертвы нужно вдвое (если пинг обоих участников равен) больше времени чем серверу.
А теперь представь - узнал атакующий что было например попадание - ему же нужно ВСЕМ другим игрокам разослать информацию об этом. Ну пусть он не сам рассылает каждому, а отсылает на сервер, и тот уже потом совершает "массовую рассылку" на каждого игрока. Все равно время, через которое обновится картинка у постороннего игрока (не участвующего в столкновении, зрителя) УВЕЛИЧИВАЕТСЯ как минимум на время пинга атакующего.
Теперь вопрос - ЗАЧЕМ такие сложности, если все эти функции можно возложить на сервер?
2. Да задержки в показе есть. Иногда вообще, смотришь - летят два самолета метров в 100 друг от друга, и вдруг оба разваливаются. Оказывается у кого-то из них на компе они столкнулись. Глюкаво - да. Но повторюсь я согласен на такое за возможность летать в инете.
сервер не считает повреждения цели - их считает сама машина цели. Т.е. на машину цели приходят данные о попаданиях и программа (ил2 ЗС в данном случае) в соответствии с моделью повреждений решает, какой ущерб нанесён. И отправляет обратно на сервер, который пересылает атакующему и всем остальным данные о повреждениях.Цитата:
Originally posted by operok
...сервер сам считает повреждения нанесенные цели и ей уже передает, что её пробило - оторвало.
В догонку, службу QoS отключать совсем не надо, потому что она все равно при этом будет жрать 20%. Ей просто нужно указать вместо 20% 0%, и проверить стоит ли галочка этой службы в свойствах соединения...
Это к чему вдруг про качество-в-обслуживании вспомнили?
Кстати добраться до этой диковинки, кою инородцы-буржуины повыдумали можно только через хитрое окошко заморское аки зовущееся консолью (типа gpedit.msc)
этот файл валяется в папку виндовс/Систем32, вполне доступно...
Как полностью отключить службу QoS (Quality of Service). Как её настроить? Правда ли что она ограничивает скорость сети?
Действительно, по умолчанию Quality of Service резервирует для своих нужд 20% от пропускной способности канала (любого, хоть модем на 14400, хоть гигабитный Ethernet). Причём, даже если удалить службу QoS Packet Scheduler из Properties соединения, этот канал не освобождается. Освободить канал, или просто настроить QoS, можно так - запускаем апплет Group Policy (gpedit.msc). В Group Policy находим Localcomputer policy и нажимаем на Administrative templates. Выбираем пункт Network - QoS Packet Sheduler. Включаем Limit reservable bandwidth. Теперь cнижаем Bandwidth limit 20% до 0, или просто отключаем его. При желании здесь же можно настроить и другие параметры QoS. Для активации произведённых изменений остаётся только перезагрузиться.
У меня стоит XP Home. Так вот этот файлик (gpedit.msc) найти не удалось. А можно как-либо еще к этой службе добраться?
Отключать ее совсем ненадо, уж поверьте... Ей надо просто ставить 0%, ибо эта служба как такова не ОТКЛЮЧАЕМА, а фишка с отключением в настройках сделана для Вашего душевного покоя... Если Вы поставите точку ОТКЛЮЧИТЬ, то она все равно будет работать как и при 20%... Многие читают подобные факи, и отключают... и обламываются в итоге...
До всего можно добраться через РЕЕСТР.
И просто маленький совет, не надо юзать ХОММ версии ни ХР ни 2000, ибо там много "настроенно и сделанно" руками мелкософта, якобы для нашего удобства, а я бы по этим рукам да топориком :)
....... топориком.
:) :) :)
А где в реестре?:confused:Цитата:
Originally posted by ROSS_Barhan
До всего можно добраться через РЕЕСТР.
Усе правильно. Только дело в том, что они не читают комментарии к данной настройке, там же, в апплете. Просто в этом дибильном переводе под "Теперь cнижаем Bandwidth limit 20% до 0, или просто отключаем его" подразумевается не "поставьте 0 или просто поставьте крыжик "отключить лимит"", как думает каждый нормальный человек, а "поставьте 0, что будет означать отключение резерва".Цитата:
Originally posted by ROSS_Barhan
Отключать ее совсем ненадо, уж поверьте... Ей надо просто ставить 0%, ибо эта служба как такова не ОТКЛЮЧАЕМА, а фишка с отключением в настройках сделана для Вашего душевного покоя... Если Вы поставите точку ОТКЛЮЧИТЬ, то она все равно будет работать как и при 20%... Многие читают подобные факи, и отключают... и обламываются в итоге...
А в комментарии русским по белому сказано: "если лимит отключен, используется дефолтное значение в 20%".
Он же ответил: "это свыше". Он правду говорит, зачем тебе знать "почему"? Тебе привели кучу доказательств, что это так (см., например, посты боРады).Цитата:
Originally posted by dets
А вот вопрос - почему ты так решил?
ТОЛЬКО для того, чтобы "совмещать прицел с целью".Цитата:
Originally posted by dets
Может быть это и так на самом деле. Но подумай - атакующему чтобы сопоставить траекторию полета своего снаряда и жертвы нужно вдвое (если пинг обоих участников равен) больше времени чем серверу.
А теперь представь - узнал атакующий что было например попадание - ему же нужно ВСЕМ другим игрокам разослать информацию об этом. Ну пусть он не сам рассылает каждому, а отсылает на сервер, и тот уже потом совершает "массовую рассылку" на каждого игрока. Все равно время, через которое обновится картинка у постороннего игрока (не участвующего в столкновении, зрителя) УВЕЛИЧИВАЕТСЯ как минимум на время пинга атакующего.
Теперь вопрос - ЗАЧЕМ такие сложности, если все эти функции можно возложить на сервер?
Это несправедливо, но это-так.
его не интересует "реальное" положение жертвы. Он использует то положение, в котором оно рисуется у атакующего.Цитата:
Originally posted by dets
Может быть это и так на самом деле. Но подумай - атакующему чтобы сопоставить траекторию полета своего снаряда и жертвы нужно вдвое (если пинг обоих участников равен) больше времени чем серверу.
задам твой-же вопрос: ЗАЧЕМ ему рассылать информацию о каждом в него попадании?Цитата:
А теперь представь - узнал атакующий что было например попадание - ему же нужно ВСЕМ другим игрокам разослать информацию об этом.
вот если изменится его статус "покоцанности", тогда он сообщит об этом серверу.
QoS на серваке, если не один прописывать надо =)).
"А теперь представь - узнал атакующий что было например попадание - ему же нужно ВСЕМ другим игрокам разослать информацию об этом. "
Ему серверу сказать надо, а сервер кому надо и оттошлёт (при нормальном протокоеле всем, кто далеко достаточно отослать - была вспышка, кто совсем рядом - попадание в такую-то часть).
Каждый каждому в старкрафте используеться.
А вообще такие протоколы - такой просто для читов. Иногда радуешься, что не все в ил-2 летают.
Правду тут может сказать только разработчик сетевого кода ЗС.Цитата:
Originally posted by deCore
Он же ответил: "это свыше". Он правду говорит, зачем тебе знать "почему"? Тебе привели кучу доказательств, что это так (см., например, посты боРады).
Ни один пост не доказывает мою неправоту и не отвечает на вопрос - кто же из трех сторон (атакующий, жертва, сервер) _решает_ - было попадание или нет.
Я по прежнему считаю, что с точки зрения здравого смысла лучше всего чтобы это был сервер.
То есть иными словами - если у жертвы лаг и она летит прямо (и рисуется соответствующим образом на экране атакующего), атакующий может ее подбить, так?Цитата:
Originally posted by pwl
его не интересует "реальное" положение жертвы. Он использует то положение, в котором оно рисуется у атакующего.
Во первых - ты не сможешь подбить самолет в лаге.
Во-вторых, зачем тогда все эти сообщения "кто-то жульничает", которые появляются тогда, когда с атакуемым пропадает связь.
А если сервер - первоисточник данных о попаданиях, то и сообщать ему не надо вообще - он сам сделает вывод о покоцанности (как и все остальные клиенты которые получат информацию от сервера о попадании).Цитата:
задам твой-же вопрос: ЗАЧЕМ ему рассылать информацию о каждом в него попадании?
вот если изменится его статус "покоцанности", тогда он сообщит об этом серверу.
"но дает возможность вообще летать в сети не только по выделенке"Цитата:
Originally posted by boRada
1. Не нужен пинг. Я стреляю и попадаю по тому "призраку", что у МЕНЯ на экране, ты читаешь о чем я писал в примерах? Оно мож и нечестно, но дает возможность вообще летать в сети не только по выделенке. А таких наверно всеж больше.
2. Да задержки в показе есть. Иногда вообще, смотришь - летят два самолета метров в 100 друг от друга, и вдруг оба разваливаются. Оказывается у кого-то из них на компе они столкнулись. Глюкаво - да. Но повторюсь я согласен на такое за возможность летать в инете.
"Но повторюсь я согласен на такое за возможность летать в инете"....
Слушай - объясни плиз, чем расчет попаданий на сервере мешает игре в инете (или вообще в сети), как ты говоришь??
Я никак понять не могу...
Нда.. я конечно извиняюсь, но мож ты прикалываешься над нами? Шутник. А в инете ты вообще летал? Месяца полетов должно хватить чтоб набрать нужную статистику. А затем проанализировать.
Вся рота не в ногу...
Ты с программированием сталкивался?Цитата:
Originally posted by dets
"но дает возможность вообще летать в сети не только по выделенке"
"Но повторюсь я согласен на такое за возможность летать в инете"....
Слушай - объясни плиз, чем расчет попаданий на сервере мешает игре в инете (или вообще в сети), как ты говоришь??
Я никак понять не могу...
Представь два варианта:
1 Я стреляю- попадаю - отсылаю на сервер точки попадания и их мощность. Он отсылает всем эти точки и то что я вообще стреляю. Цель обрабатывает точки и высчитывает повреждения и отсылает серверу. Тот отсылает всем пакет "повреждений" и т.д.
2 Я стреляю - отсылаю серверу траекторию КАЖДОЙ пули и снаряда - сервер просчитывает траекторию каждого элемента - сравнивает, где был самолет цели в момент пролета каждого снаряда и куда и как он попал, причем видимо он должен отсылать всем данные этих пулек, причем интересно посмотреть, что будет, если к тебе через полсекунды придет просчитанная сервером визуализация твоих же выстрелов... или он должет фильтровать кому что посылать?
Даже писать дольше, а если копнуть, там еще больше "камней"....
Теперь скажи хостящим миссии в ВЭФ что их компу надо считать и отсылать на порядок больше.... или попробуй полетать сам на 166ммх.
Неужели не понятно??? Не-е, наверно прикалываешься...
Можно я объясню? спасибо.Цитата:
Originally posted by dets
Слушай - объясни плиз, чем расчет попаданий на сервере мешает игре в инете (или вообще в сети), как ты говоришь??
Я никак понять не могу...
При твоем подходе прежде чем открыть огонь, придется (игроку) рассчитать разницу пингов и выбрать соответствующее упреждение (около 10 метров на каждую 100мс). Причем если у тебя пинг сильно больше чем у жертвы, то на самом деле не ты у нее на 6-ти, а она у тебя. А если не сильно больше, то вы вообще летите внутри друг-друга.
По порядку.Цитата:
Originally posted by boRada
Ты с программированием сталкивался?
Представь два варианта:
1 Я стреляю- попадаю - отсылаю на сервер точки попадания и их мощность. Он отсылает всем эти точки и то что я вообще стреляю. Цель обрабатывает точки и высчитывает повреждения и отсылает серверу. Тот отсылает всем пакет "повреждений" и т.д.
2 Я стреляю - отсылаю серверу траекторию КАЖДОЙ пули и снаряда - сервер просчитывает траекторию каждого элемента - сравнивает, где был самолет цели в момент пролета каждого снаряда и куда и как он попал, причем видимо он должен отсылать всем данные этих пулек, причем интересно посмотреть, что будет, если к тебе через полсекунды придет просчитанная сервером визуализация твоих же выстрелов... или он должет фильтровать кому что посылать?
Даже писать дольше, а если копнуть, там еще больше "камней"....
Ты стреляешь - _каждый_ (!) твой выстрел и так отсылается на сервер и потом всем остальным. Это факт и с ним можно не спорить. Согласен? Таким образом ВСЕ имеют тректорию полета твоего снаряда.
Дальше, жертва летит, ее самолет меняет направление полета - _каждый_ (один за сколько-то милисекунд) раз изменившиеся координаты жертвы пересылаются на сервер и потом всем остальным. Таким образом ВСЕ имеют траекторию полета жертвы! Это тоже факт.
Таким образом ВСЕ игроки и сервер (с разной задержкой) имеют траектории полета твоего снаряда и жертвы.
Дальше, КТО-ТО _один_ (!) из ВСЕХ должен постоянно сравнивать тректории полета движущихся объектов на предмет обнаружения коллизий (в частности попадания снаряда в жертву).
Вот мой вопрос - почему этот КТО-ТО не сервер?!!
Слишком большая нагрузка на сервер?
Обработка коллизий? Небольшая я уверен. В конце концов в оффлайне это делает один комп (а он это делает, иначе никто никогда никого на сбил бы в оффлайне), причем делает это иногда для большего количества объектов, и ничего.
Больше надо пересылать данных? Неправда! Они и так пересылаются!
Зачем же так категорично-то? А вот и поспорю! Тебе приходит информация о том что я стреляю, а твой комп уж сам высчитывает куда летят трассы по положению моего самолета, которое он видит(знает на данный момент). И по моему не стоит путать загрузку компа в оффлайне и в сети. Это как скажи мысленно: " На дворе трава.. и т.д." и потом вслух отчетливо то же самое.Цитата:
Originally posted by dets
По порядку.
Ты стреляешь - _каждый_ (!) твой выстрел и так отсылается на сервер и потом всем остальным. Это факт и с ним можно не спорить. Согласен? Таким образом ВСЕ имеют тректорию полета твоего снаряда.
Дальше, жертва летит, ее самолет меняет направление полета - _каждый_ (один за сколько-то милисекунд) раз изменившиеся координаты жертвы пересылаются на сервер и потом всем остальным. Таким образом ВСЕ имеют траекторию полета жертвы! Это тоже факт.
Таким образом ВСЕ игроки и сервер (с разной задержкой) имеют траектории полета твоего снаряда и жертвы.
Дальше, КТО-ТО _один_ (!) из ВСЕХ должен постоянно сравнивать тректории полета движущихся объектов на предмет обнаружения коллизий (в частности попадания снаряда в жертву).
Вот мой вопрос - почему этот КТО-ТО не сервер?!!
Слишком большая нагрузка на сервер?
Обработка коллизий? Небольшая я уверен. В конце концов в оффлайне это делает один комп (а он это делает, иначе никто никогда никого на сбил бы в оффлайне), причем делает это иногда для большего количества объектов, и ничего.
Больше надо пересылать данных? Неправда! Они и так пересылаются!
И вообще мне надоело из пустого в порожнее. Я закончил с этой темой.
Кто бы спорил... тока найти там, не зная где что тяжеловато...Цитата:
Originally posted by ROSS_Barhan
До всего можно добраться через РЕЕСТР.
dets
Дальше, жертва летит, ее самолет меняет направление полета - _каждый_ (один за сколько-то милисекунд) раз изменившиеся координаты жертвы пересылаются на сервер и потом всем остальным. Таким образом ВСЕ имеют траекторию полета жертвы! Это тоже факт.
Дальше, КТО-ТО _один_ (!) из ВСЕХ должен постоянно сравнивать тректории полета движущихся объектов на предмет обнаружения коллизий (в частности попадания снаряда в жертву).
Вот мой вопрос - почему этот КТО-ТО не сервер?!!
Факт в том что траекторию имеют, но координаты самолета будут у всех разные в зависимости от сетевой задержки. поэтому сервер не определит попадания по самолету при модемной связи например, если будет сам высчитывать попадания. Кстати есть игры, в которых сервер считает попадания, но в них при наличии 32-х игроков на модеме из-за задержки в передаче данных ты будешь попадать только по стоящим мишеням, пример дельта-форс или коунтер-страйк. Поэтому то что в ЗС факт попадания определяет компьютер стреляющего позволяет нормально играть на модемной связи большому кол-ву людей даже при относительно больших сетевых задержках. Если бы считал сервер то попадания по противнику, которые они видят на своем компе в большинстве случаев просто бы игнорировались, т.к. у сервера координаты противника были бы в другом месте и их патроны пронза ли бы пустое место (с точки зрения сервера).
2 dets
Пожалуйста, задумайся:
У тебя есть свое видение сетевого протокола. Оно имеет право на жизнь (не в чистом виде, конечно: то как ты описываешь работать не будет, но, с некоторыми доработками вполне). Но какие у тебя основания считать, что в Ил2 реализовано так, как ты хочешь? Только по тому, что ты считаешь более совершенным свой подход (я даже не затрагиваю вопрос так ли это)?
Видимо, таковых нет.
А вот у людей есть основания считать, что в Ил2 реализовано так, как они говорят.
Так что, сначала определись: хочешь ли ты рассуждать о красивых абстрактных сетевых протоколах или хочешь рассуждать о протоколе Ил2.
Что ж - допустим ты прав! Попадания считаются на клиенте.Цитата:
Originally posted by operok
Факт в том что траекторию имеют, но координаты самолета будут у всех разные в зависимости от сетевой задержки. поэтому сервер не определит попадания по самолету при модемной связи например, если будет сам высчитывать попадания. Кстати есть игры, в которых сервер считает попадания, но в них при наличии 32-х игроков на модеме из-за задержки в передаче данных ты будешь попадать только по стоящим мишеням, пример дельта-форс или коунтер-страйк. Поэтому то что в ЗС факт попадания определяет компьютер стреляющего позволяет нормально играть на модемной связи большому кол-ву людей даже при относительно больших сетевых задержках. Если бы считал сервер то попадания по противнику, которые они видят на своем компе в большинстве случаев просто бы игнорировались, т.к. у сервера координаты противника были бы в другом месте и их патроны пронза ли бы пустое место (с точки зрения сервера).
Тогда вот тебе ситуация из жизни - ты атакуешь жертву - стреляешь в нее крупным калибром, видишь как твой снаряд попадает в нее, потом проходит (часто довольное ощутимое) время, после чего жертва разваливается.
Внимание, вопрос - ПОЧЕМУ?
[Сюда писать ответ ;) ]
P.S. Если ты скажешь что твой компьютер ждет от компа жертвы отчета о повреждениях, то это бред, поскольку твой комп
может и сам ЛЕГКО посчитать результат попадания.
Цитата1:Цитата:
Originally posted by deCore
2 dets
Пожалуйста, задумайся:
У тебя есть свое видение сетевого протокола. Оно имеет право на жизнь (не в чистом виде, конечно: то как ты описываешь работать не будет, но, с некоторыми доработками вполне). Но какие у тебя основания считать, что в Ил2 реализовано так, как ты хочешь? Только по тому, что ты считаешь более совершенным свой подход (я даже не затрагиваю вопрос так ли это)?
Видимо, таковых нет.
А вот у людей есть основания считать, что в Ил2 реализовано так, как они говорят.
Так что, сначала определись: хочешь ли ты рассуждать о красивых абстрактных сетевых протоколах или хочешь рассуждать о протоколе Ил2.
"Но какие у тебя основания считать, что в Ил2 реализовано так, как ты хочешь?"
Цитата2:
"А вот у людей есть основания считать, что в Ил2 реализовано так, как они говорят."
Да, у меня нет никак оснований считать что в ЗС реализовано так как я говорю или хочу. (Я кстати всегда стараюсь делать оговорки на эту тему). Но такого основания нет ни у кого, кроме разработчиков.
В идеале я просто хотел бы понять, как некоторые сетевые вещи сделаны в ЗС.
Сейчас у меня есть свои мысли и идеи на этот счет.
Если ты хочешь оспорить/опровергнуть мои идеи, пожалуйста, я буду только рад и скажу - да, здесь я был неправ.