Перейти к содержимому

и всё-таки почему?


Heais

Рекомендованные публикации

Игроки
6 273 публикации
51 974 боя
 Сегодня пару раз в игре обращал внимание что танк продолжал ехать после того как я отпускал кнопку. Интернет нормальный. Пинг не прыгал. Да даже если бы и прыгал то по идее после обрыва соединения танк должен остановиться. Должен но не останавливается. Почему?

 


                                
Ссылка на комментарий
Модераторы
59 011 публикация
69 847 боёв
15 авг 2022 - 06:51 пользователь Heais сказал:

 Сегодня пару раз в игре обращал внимание что танк продолжал ехать после того как я отпускал кнопку. Интернет нормальный. Пинг не прыгал. Да даже если бы и прыгал то по идее после обрыва соединения танк должен остановиться. Должен но не останавливается. Почему?

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

Если грубо, то игра продолжает считать, что ваш палец давит на кнопку вперед.

  • Плюс 3
Ссылка на комментарий
Игроки
6 273 публикации
51 974 боя
15 авг 2022 - 09:55 пользователь Rok3r сказал:

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

Если грубо, то игра продолжает считать, что ваш палец давит на кнопку вперед.

Очень жаль. Очень жаль что Вы не имея понятия о том как и что работает тем не менее что-то комментируете. Объясню на пальцах. Для сервера должно быть абсолютно одинаково отпустил я палец или оборвалось соединение. Нет сигнала о нажатии кнопки - команда не должна выполняться. Я думал честно что Вы с обычным апломбом заявите о том что у меня кнопки залипают но у Вас даже на это воображения не хватило.PS: Приведу пример. В кораблях которые Ворлд оф Вашипс для движения корабля вперед кнопку Ц держать не нужно. Достаточно нажать её несколько раз и корабль движется. Но при обрыве соединения к Вашему удивлению я всегда находил свой корабль в точке где соединение оборвалось. Всегда. Поэтому и вопрос а с какой стати сервер "Думать " начал? Он чё Скайнэт?

Изменено пользователем Heais
  • Плюс 3

 


                                
Ссылка на комментарий
Игроки
1 893 публикации
54 035 боёв
Так всегда было,с начала танков. Когда обрывалось соединение - танк продолжал ехать. Часто находил танк в воде, посреди карты убитым. Счастье было если танк куда то упирался и не вылетал на толпу противников. Сам не понимаю, почему это так реализовано.
Ссылка на комментарий
Игроки
6 273 публикации
51 974 боя
15 авг 2022 - 11:19 пользователь zak_glamour сказал:

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

Я знаю что всегда. Но тогда получается что это не я танком управляю?

 


                                
Ссылка на комментарий
  • Глобальные модераторы
Глобальные модераторы
48 785 публикаций
45 512 боёв
15 авг 2022 - 11:28 пользователь Heais сказал:

Я знаю что всегда. Но тогда получается что это не я танком управляю?

Управляете танков вы. Но Модератор выше совершенно прав.

На сервер от вашего клиента передается всего одна команда - например Ехать вперед. Когда вы нажимаете кнопку Стоп - на сервер передается команда Остановиться. Никаких "постоянных опросов клавиатуры" на предмет "держите вы все еще кнопку или отпустили или вообще оборвались", в клиент-серверных приложениях нет. Скорее всего для экономии трафика.

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

 

В вашем случае скорее всего произошло именно временное ухудшение связи и сервер "терял" некоторые ваши команды.

Менять что-то в этой области не планируется. Такова общая реализация клиент-серверных приложений.

Изменено пользователем ZloyBut
  • Плюс 2
Spoiler

 

 

Ссылка на комментарий
Игроки
6 273 публикации
51 974 боя
15 авг 2022 - 11:53 пользователь ZloyBut сказал:

Управляете танков вы. Но Модератор выше совершенно прав.

На сервер от вашего клиента передается всего одна команда - например Ехать вперед. Когда вы нажимаете кнопку Стоп - на сервер передается команда Остановиться. Никаких "постоянных опросов клавиатуры" на предмет "держите вы все еще кнопку или отпустили или вообще оборвались", в клиент-серверных приложениях нет. Скорее всего для экономии трафика.

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

 

В вашем случае скорее всего произошло именно временное ухудшение связи и сервер "терял" некоторые ваши команды.

Менять что-то в этой области не планируется. Такова общая реализация клиент-серверных приложений.

Похоже Вы тоже никак с электричеством не связаны. Пока я удерживаю кнопку на сервер поступает сигнал. Как только сигнал перестаёт подаваться танк должен остановиться. Прерывание сигнала можно достигнуть двумя путями либо отпустив кнопку либо оборвав сигнал от кнопки . Именно это должно происходить при обрыве соединения. Никакую кнопку "Стоп" я не нажимаю. Я просто перестаю удерживать кнопку "Вперед". Потому и спрашиваю . Кто управляет танком? Напишу попроще. При ухудшении связи и "потере" моих команд танк ДОЛЖЕН останавливаться а не выполнять какие-то "левые" команды В игре нет команды "Стоп" её заменяет отсутствие команд от кнопок. Обрыв соединения это полное отсутствие команд с моего компьютера. Полное. Отсутствие. Команд. А. Это. Обозначает. Команду. Стоп. PS: Пока печатал произошел обрыв соединения и сервер продолжил выполнение команд. А посему если кому-то что-то не понравилось то банить меня не за что. Это всё сервер виноват.:)

Изменено пользователем Heais

 


                                
Ссылка на комментарий
  • Глобальные модераторы
Глобальные модераторы
48 785 публикаций
45 512 боёв
15 авг 2022 - 12:09 пользователь Heais сказал:

Похоже Вы тоже никак с электричеством не связаны. Пока я удерживаю кнопку на сервер поступает сигнал. Как только сигнал перестаёт подаваться танк должен остановиться. Прерывание сигнала можно достигнуть двумя путями либо отпустив кнопку либо оборвав сигнал от кнопки . Именно это должно происходить при обрыве соединения. Никакую кнопку "Стоп" я не нажимаю. Я просто перестаю удерживать кнопку "Вперед". Потому и спрашиваю . Кто управляет танком? Напишу попроще. При ухудшении связи и "потере" моих команд танк ДОЛЖЕН останавливаться а не выполнять какие-то "левые" команды В игре нет команды "Стоп" её заменяет отсутствие команд от кнопок. Обрыв соединения это полное отсутствие команд с моего компьютера. Полное. Отсутствие. Команд. А. Это. Обозначает. Команду. Стоп.

Компьютеры НЕ электричество. 8-))) Это просто вы не в курсе. В цифровой технике вообще нет постоянных "контактов".

Когда вы нажимаете кнопку в компьютер поступает ОДНОКРАТНЫЙ сигнал - кнопка нажата. Когда вы удерживаете кнопку- поступает несколько сигналов кнопка нажата, кнопка нажата и т.д. Отпускаете кнопку - выполняется ОДИН сигнал Кнопка отпущена.

Поэтому никто никому ничего не должен. Т.е. фактически управляете танком вы, но через посредника - сервер, так как бой идет именно на сервере и не зависит (грубо говоря) от вашего непосредственного участия. Сервер принимает ваши команды управления и меняет поведение танка. Но если команд от вас нет - то и менять сервер ничего не обязан. Он даже просто "не имеет права" выполнять какие-либо свои команды в отсутствии ваших команд. Так понятно?

Сервер получает дискретные команды, которые и обрабатывает в порядке их поступления.  Отсутствие команд НЕ показатель обрыва связи. Возможно вы просто отошли от клавиатуры или смотрите красоты игрового пейзажа. Точно так же  - сервер ничего не знает о "пропавших" из-за микрообрывов связи командах. Т.е. если вы что-то нажимали несколько раз, но пакеты по дороге Потерялись (это такой официальный сетевой термин) то сервер даже не будет подозревать о том, что они вообще были вами отправлены. Поэтому качество связи в таких играх - наиболее важно. Не Пинг, а именно устойчивость передачи пакетов от вас к серверу и обратно.

 

Изменено пользователем ZloyBut
  • Плюс 1
Spoiler

 

 

Ссылка на комментарий
Модераторы
59 011 публикация
69 847 боёв
15 авг 2022 - 10:05 пользователь Heais сказал:

А что будет если после нажатия кнопки Ц я выдерну клавиатуру из гнезда? Проверим?

Так это будет не обрыв связи, а отключение устройства ввода.

Две разные ситуации.

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

Ссылка на комментарий
  • Глобальные модераторы
Глобальные модераторы
48 785 публикаций
45 512 боёв
15 авг 2022 - 13:05 пользователь Heais сказал:

А что будет если после нажатия кнопки Ц я выдерну клавиатуру из гнезда? Проверим?

Подробные описания всех процессов при работе клавиатуры выходят за рамки форума.

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

Поэтому здесь мы не будем ничего проверять. Просто примите к сведению эту информацию и все.

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

 

В общем случае - при выдергивании клавиатуры на клиенте для сервера ничего произойдет. Просто не будет новых команд и все. 

 

Изменено пользователем ZloyBut
Spoiler

 

 

Ссылка на комментарий
  • Глобальные модераторы
Глобальные модераторы
43 559 публикаций
37 944 боя

Ответ получен.

 

 

 

plCKdZy.gif

  • Плюс 2

 

dcbf6b4e4f39dc611fad04893f1a91d1.gif

 

8f494af5c3ae683e0bbbef0fba57480b.png

 

Ссылка на комментарий
Гость
Эта тема закрыта для публикации новых ответов.
  • Сейчас на странице   0 пользователей

    • Эту страницу никто не просматривает.
×
×
  • Создать...