Автор |
Сообщение |
Koala
[10.7]
<Альфа Притон>
Сервер: Свежеватель Душ
2х2: 192
3х3: 575
|
0
Вопрос для философов и программистов.
Tremere писал(а):
Мне лень читать твое 0 и 1. Представь, что ты начал кастить хекс первым, но обратно пакеты от сервера к тебе дошли медленней из-за пинга - то есть сервер отправил твой хекс ранше, но дошел он позже, потому что ты нищеброд из мухосранска с говенным 3г инетом. Как тебе такой расклад?
это не отменяет того факта, что есть 2 события и одно из них произошло раньше другого, чисто технически. Если чувак с Владика играет с пингом 1000 - это его проблемы, я не хочу сидеть в хексе после того, как сам же его отправил в конец каста шаману-противнику. В компьютере невозможна "одновременность" в принципе, это же очевидно, следовательно отследить чей хекс пришёл первым, взяв как раз поправку на пинг, про которую говорил Deathmont не представляет труда.
Мизеракль писал(а):
Скорее уж больше вопросов вызывает попадание в циклон с баффом рефлекта. Эту ситуацию я пока ничем обьяснить не могу
ну это та же самая ситуация. Баги с граундингом, рефлектом, кики из контроля - ноги у всего этого растут из одного места: близы по какой-то причине не заложили алгоритм, который отвечал бы за взаимоисключение даблконтроля при значениях каста, приближающемся к максимуму. А так получается на некоторые доли секунды мы играем в пошаговую стратегию, вместо мморпг
|
20 ноя 2013, 11:21 |
|
|
Мизеракль
[-0.7]
<Братство Тайного Огня>
Сервер: Черный Шрам
2х2: 1461
3х3: 576
|
0
Вопрос для философов и программистов.
Koala писал(а):
Мизеракль писал(а):
Скорее уж больше вопросов вызывает попадание в циклон с баффом рефлекта. Эту ситуацию я пока ничем обьяснить не могу
ну это та же самая ситуация. Баги с граундингом, рефлектом, кики из контроля - ноги у всего этого растут из одного места: близы по какой-то причине не заложили алгоритм, который отвечал бы за взаимоисключение даблконтроля при значениях каста, приближающемся к максимуму
Не совсем. К примеру, варлок в тебя прокастовал хаосболт - и ты во время полета ХБ даешь локу контроль(стан, пом-шип..). Хаосболт же все равно прилетает?
Вот и с хексами та же ситуация. Идет проверка у шамана только на "спелл прокастован/нет"(т.е. не сбили, не залосали - нужно вешать кд), и все, после этого спелл считается вылетевшим.
Дальше, по идее, должна идти проверка при прилете спелла - т.е. наложении дебаффа/нанесении урона - на различного рода иммуны и т.д.
Фактически это можно обьяснить, предположив, что все спеллы имеют некое "время полета" до цели - в случае хаосболта это довольно большая величина, в случае хексов/шипов/фиров - доля секунды. Но в эту долю секунды противник может "выпустить" свой спелл.
И есть такое подозрение, что это "время полета" есть вне зависимости от пинга, т.е. специально вложено в код. Зачем - не знаю.
С циклоном немного непонятно, т.к. циклон дает иммун к наложению баффов/дебаффов, и рефлект дает иммун к наложению магических дебаффов. Т.е. если бы рефлект не вешался(но в кд уходил) - я бы понял еще.
|
20 ноя 2013, 11:33 |
|
|
Tremere
[7.6]
<Черёмуха>
Сервер: Страж Смерти
2х2: 1484
3х3: 96
|
0
Вопрос для философов и программистов.
Koala писал(а):
это не отменяет того факта, что есть 2 события и одно из них произошло раньше другого, чисто технически. Если чувак с Владика играет с пингом 1000 - это его проблемы, я не хочу сидеть в хексе после того, как сам же его отправил в конец каста шаману-противнику. В компьютере невозможна "одновременность" в принципе, это же очевидно, следовательно отследить чей хекс пришёл первым, взяв как раз поправку на пинг, про которую говорил Deathmont не представляет труда.
Ты щас очень на гуманитария похож
|
20 ноя 2013, 11:42 |
|
|
Alaron
[30.5]
Пилигрим
|
0
Вопрос для философов и программистов.
Всю тему не читал, кроме первого поста Коалы, даже удивительно, что вы подняли этот вопрос, т.к. это обсуждалось лет восемь назад.
|
20 ноя 2013, 12:45 |
|
|
Amazing
[0.9]
|
0
Вопрос для философов и программистов.
Тебе не накладывается иммун к хексу если ты захексил другого шамана, так что тут и думать нечего, просто издержки пинга.
|
20 ноя 2013, 12:51 |
|
|
Уточка
[11.2]
|
0
Вопрос для философов и программистов.
tunguss писал(а):
сложно представить в реальности ситуацию, когда какое-то явление осталось совсем без последствий для окружения.
Скажем, упавшее дерево могло испугать белку, которая выскочила на дорогу и чувак, допустим, пытаясь ее не переехать, улетел в кювет. А он ехал к твоему братюне передать деньги за работу, скажем. Этот братюня планировал на это бабло с тобой всю ночь по кабакам ходить.
Выходит, хоть звука ты и не слышал, он привел в действие цепочку изменений, которые коснулись даже тебя, хотя ты и не понял связи. Получается, слыщал/не слышал, а звук был.
А в компьютерной игре всё запрограмированно и действие может не иметь последствий. Вопрос был про игру!
|
20 ноя 2013, 13:27 |
|
|
Уточка
[11.2]
|
0
Вопрос для философов и программистов.
Хотя ведь скрипт, выполняемый в компьютерной игре лишь запрограммированная ситуация, которую я могу воспринимать как "событие", как отражение ситуации в игре, хотя оно точно ни на что не влияет и не может влиять, если иного не запрограмированно. Другими словами простая программа, генерирующая цифры 1 и 2 с веростностью 50% тоже есть событие, но я не буду задаваться вопросом, происходит ли оно или нет.
И вообще запрограммированное "событие" в компьютерной программе есть часть события в реальной жизни, такое, как написание этой программы и программирование событий в ней.
#640
|
20 ноя 2013, 16:06 |
|
|
lorti
[12.9]
the observer
|
0
Вопрос для философов и программистов.
Koala писал(а): Tremere писал(а):
Мне лень читать твое 0 и 1. Представь, что ты начал кастить хекс первым, но обратно пакеты от сервера к тебе дошли медленней из-за пинга - то есть сервер отправил твой хекс ранше, но дошел он позже, потому что ты нищеброд из мухосранска с говенным 3г инетом. Как тебе такой расклад?
это не отменяет того факта, что есть 2 события и одно из них произошло раньше другого, чисто технически. Если чувак с Владика играет с пингом 1000 - это его проблемы, я не хочу сидеть в хексе после того, как сам же его отправил в конец каста шаману-противнику. В компьютере невозможна "одновременность" в принципе, это же очевидно, следовательно отследить чей хекс пришёл первым, взяв как раз поправку на пинг, про которую говорил Deathmont не представляет труда.
Мизеракль писал(а):
Скорее уж больше вопросов вызывает попадание в циклон с баффом рефлекта. Эту ситуацию я пока ничем обьяснить не могу
ну это та же самая ситуация. Баги с граундингом, рефлектом, кики из контроля - ноги у всего этого растут из одного места: близы по какой-то причине не заложили алгоритм, который отвечал бы за взаимоисключение даблконтроля при значениях каста, приближающемся к максимуму. А так получается на некоторые доли секунды мы играем в пошаговую стратегию, вместо мморпг
В этом и суть работы сервера. С точки зрения игрока - игра идет плавно и без задержек. С точки зрения сервера игра - это последовательность событий, между которыми существует огромный временной промежуток, когда не происходит ничего. Алгоритм, о котором ты говоришь, невозможно реализовать без потери плавности игры для игрока. Мизеракль писал(а): Скорее уж больше вопросов вызывает попадание в циклон с баффом рефлекта. Эту ситуацию я пока ничем обьяснить не могу
Очень просто. Между юзом абилки и непосредственно появлением бафа для противников существует огромный промежуток времени. Просто твой игровой клиент показывает тебе наличие бафа сразу же по отправке информации об успешном касте на сервер, не дожидаясь, пока он эту информацию примет и отправит противрикам. В итоге пока информация об успешном касте доходит до сервера, а потом от сервера до друида, клиент друида успевает отправить информацию об успешном касте циклона. Итог - оба каста успешны.
|
21 ноя 2013, 00:37 |
|
|
Suslik
[15]
|
0
Вопрос для философов и программистов.
По идее когда идет даблхекс сервер должен расчитать у кого он прошел 1м и соответственно у другого игрока откатить эффект и кд(как бывает когда ты летишь на флае куда то во время лагов а тебя потом откидывает назад или когда был этот спаммакрос который пидорасы юзали на блейдэйдже и который показывал что игрок бегающий рывками спрыгнул с моста а на самом деле он остался на нем), но почему то этого не происходит.
|
21 ноя 2013, 05:45 |
|
|
lorti
[12.9]
the observer
|
0
Вопрос для философов и программистов.
Потому что сервер понятия не имеет, у какого игрока хекс по факту был раньше. То, что один из игроков прислал информацию об успешном касте раньше, вовсе не значит, что он действительно раньше его скастил. Даже если бы можно было реализовать систему проверу, если бы все происходило именно так, как ты говоришь, игра напоминала бы цирк с постоянными телепортами и откатами. Да и нагрузка на сервер возросла бы в неколько раз.
В сетевом протоколе TCP/IP, по котором работает вся система, просто невозможно реализовать то, что вы хотите. Ради интереса, если у вас есть два аккаунта, зайдите в игру дважды на одном и том же компьютере, откройте оба окна одновременно, и сделайте одновременно в обоих окнах например блайнд. В каждом окне будет казаться, что другой игрок дал блайнд гораздо позже. Так работает протокол и ничего тут не сделать.
|
21 ноя 2013, 09:43 |
|
|
Suslik
[15]
|
0
Вопрос для философов и программистов.
lorti писал(а):
Потому что сервер понятия не имеет, у какого игрока хекс по факту был раньше. То, что один из игроков прислал информацию об успешном касте раньше, вовсе не значит, что он действительно раньше его скастил. Даже если бы можно было реализовать систему проверу, если бы все происходило именно так, как ты говоришь, игра напоминала бы цирк с постоянными телепортами и откатами. Да и нагрузка на сервер возросла бы в неколько раз.
Я плохо в этом разбираюсь, но разве сервер не может определить время отклика от пользователя и на основании этого рассчитать у кого каст прошел 1м считая относительно серверного времени?
|
21 ноя 2013, 09:48 |
|
|
Koala
[10.7]
<Альфа Притон>
Сервер: Свежеватель Душ
2х2: 192
3х3: 575
|
0
Вопрос для философов и программистов.
Susliklol писал(а):
lorti писал(а):
Потому что сервер понятия не имеет, у какого игрока хекс по факту был раньше. То, что один из игроков прислал информацию об успешном касте раньше, вовсе не значит, что он действительно раньше его скастил. Даже если бы можно было реализовать систему проверу, если бы все происходило именно так, как ты говоришь, игра напоминала бы цирк с постоянными телепортами и откатами. Да и нагрузка на сервер возросла бы в неколько раз.
Я плохо в этом разбираюсь, но разве сервер не может определить время отклика от пользователя и на основании этого рассчитать у кого каст прошел 1м считая относительно серверного времени?
Я кстати не услышал ни 1 вразумительного ответа на этот вопрос, кроме "азазай ты гуманитарий" или "азазай обсуждали уже 8 лет назад". Приходит 2 пакета о хексе от разных пользователей с разницей в десятую долю секунды, например. Сервер оценивает время отклика (пинг) каждого пользователя, вычитает его из этой разницы в 0,1 секунды и на этом основании "хексует" проигравшего. В чём трабл-то? Нагрузка на сервер? А разве сейчас обмен пакетами происходит не по такому же сценарию? Я действительно даже близко не программист, но пока никто ничего вразумительного не написал.
|
21 ноя 2013, 10:10 |
|
|
lorti
[12.9]
the observer
|
0
Вопрос для философов и программистов.
Koala писал(а):
Приходит 2 пакета о хексе от разных пользователей с разницей в десятую долю секунды, например. Сервер оценивает время отклика (пинг) каждого пользователя, вычитает его из этой разницы в 0,1 секунды и на этом основании "хексует" проигравшего.
А в игре в этот момент все стоят и ждут, правильно я понимаю? Вы просто не можете понять, это все не происходит мгновенно. Просто вам так кажется, потому что ваш игровой клиент не ждет фактического отклика от сервера, а уже сразу вам показывает результат. Если бы на каждом касте вы бы ждали, пока сервер проделает все, что ты описал, игра превратилась бы в слайдшоу. Просто задумайся, какое количество информации отправляется от каждого игрока на сервер и обратно.
Я предвижу твой ответ вроде "ну можно сделать проверку же только для хекса и других сс спеллов, не надо делать для всех спеллов", и поэтому сразу скажу - нельзя. Сетевая структура так не работает. Да и даже если можно было бы, все равно контроля такое огромное количество, что играть было бы так или иначе невозможно.
Как вы думаете, почему когда кто-то лагает, он телепортируется? Потому что твой клиент постоянно предугадывает его движения, и если корректировки от сервера приходят с запозданием, клиент вынужден корректировать свои "предугадывания". Если бы такого не было, то игроки всегда двигались бы рывками, абсолютно все.
|
21 ноя 2013, 11:07 |
|
|
Suslik
[15]
|
0
Вопрос для философов и программистов.
Да не тут базара ноль, близы и другие разработчики все ровно в этом плане сделали и даже более того если б не эта система то играть в ммо можно было бы только в локалке(и таким образом это бы уже были никакие не ммо) или были бы пошаговые как в боях питомцев что полная хуйня и убивает любую динамику и драйв. Тут просто с теоретической точки, пушо те же роги же абузят эту шнягу со спамом противоположных стрейфов на спринтах и ведь когда то даже это имело смысл. Просто забано, если 2 вара будут долбить друг друга до 5% хп а потом оба умрут от экзекутов(кстати опять же интересно, что на арене такая херня раньше случалась и помойму даже ничью давали а вот в дуэлях ничьих не бывает никогда).
|
21 ноя 2013, 11:29 |
|
|
userTim
[30.6]
|
0
Вопрос для философов и программистов.
Никогда не качали 2 персонажей на фоллоу? Не задавались вопросом - почему в одном окне расстояние между персонажами меньше, а в другом больше.
|
21 ноя 2013, 11:37 |
|
|
Suslik
[15]
|
0
Вопрос для философов и программистов.
userTim писал(а):
Никогда не качали 2 персонажей на фоллоу? Не задавались вопросом - почему в одном окне расстояние между персонажами меньше, а в другом больше.
А ЕЩЕ Я НА БГ ВСЕГДА ПЕРВЫМ ИЗ ВОРОТ ВЫЕЗЖАЮ КАКОЙ Я МОЛОДЕЦ
|
21 ноя 2013, 11:38 |
|
|
Koala
[10.7]
<Альфа Притон>
Сервер: Свежеватель Душ
2х2: 192
3х3: 575
|
0
Вопрос для философов и программистов.
Susliklol писал(а):
в дуэлях ничьих не бывает никогда
Именно по этой причине мне видимо не понять, в чём проблема исключить одновременный контроль, если аналогичная система уже реализована.
|
21 ноя 2013, 11:38 |
|
|
lorti
[12.9]
the observer
|
0
Вопрос для философов и программистов.
Ну наверное в том, что после окончания дуэли уже пофиг на все остальное? Как только от кого-то приходит инфа о киллинг блоу, сервер может забить болт на все остальные пакеты и спокойно отправить обоим информацию об окончании дуэли. На арене такое не прокатит.
|
21 ноя 2013, 11:41 |
|
|
streeter
[-0.1]
Сервер: Азурегос
2х2: 1466
|
0
Вопрос для философов и программистов.
Susliklol писал(а):
Нет но тут явно не катят стори про мухосранск и зг интырнеты.
И с другой стороны: на локальных пиратках почти никогда не было даблконтролей рефлектциклоне, кик в шипе и т.д., но при этом постоянно присутствовали лаги и высокий пинг.
Таки да бк и половину лк играл на пираточке и не припомню чтобы я блядь получал циклон в блейдшторм\рефлект.
Susliklol писал(а):
Просто забано, если 2 вара будут долбить друг друга до 5% хп а потом оба умрут от экзекутов(кстати опять же интересно, что на арене такая херня раньше случалась и помойму даже ничью давали а вот в дуэлях ничьих не бывает никогда).
У меня был такой случай 1х1 когда я и команда противника получила по -12. Весь прикол в том , что я убил раньше , на милисекунды(?).
|
21 ноя 2013, 17:22 |
|
|
Emilio
[1]
|
0
Вопрос для философов и программистов.
если лес находится в космосе то нет звука не будет если лес находится на земле то он по законам физики должен воспроизводить звук от дерева. Квантовая механника немного не так работает
|
21 ноя 2013, 18:41 |
|