Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.05.2010, 23:49
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 1  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Оптимизацию стоит таки навести. Вася двигается по возможности сразу, а сервер лишь коректирует положение Васи, когда словит команду "вася идет" от клиента.

И пинг на два вроде не нужно умножать.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 04.05.2010, 00:11
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 2  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Ну да, в случае с самим Василием согласен, а вот
Цитата:
И пинг на два вроде не нужно умножать
Почему? пинг - это время дохождения пакета в одну сторону? или туда-сюда?
__________________
...вселенская грусть

Старый 04.05.2010, 00:15
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 3  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Цитата:
Также пингом иногда ошибочно называют время, затраченное на передачу пакета информации в компьютерных сетях от клиента к серверу и обратно от сервера к клиенту. Это время называется лагом
http://ru.wikipedia.org/wiki/Ping

Старый 04.05.2010, 00:23
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 4  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Ping — часть названия игры пинг-понг. Это толкование подразумевает, что компьютеры обмениваются сигналами аналогично тому, как игроки в пинг-понг отбивают друг другу мяч.
Получается в одну сторону.
По крайней мере я подразумевал, что пинг == время от клиента до сервера (в одну сторону)

Цитата:
сервер лишь коректирует положение Васи, когда словит команду "вася идет" от клиента
Достаточно команд "Вася начал идти" и "Вася кончил закончил идти", т.к. при TCP соединении пакеты доходят строго по очереди (нет смысла гонять туда-сюда "я иду" - "да, ты и вправду идешь")

ЗЫ
Бедный Василий, чего с ним только сегодня ни происходило...
__________________
...вселенская грусть


Последний раз редактировалось gloomyBrain; 04.05.2010 в 00:27.
Старый 04.05.2010, 13:42
YFred вне форума Посмотреть профиль Отправить личное сообщение для YFred Найти все сообщения от YFred
  № 5  
Ответить с цитированием
YFred

Регистрация: Apr 2008
Сообщений: 26
Отправить сообщение для YFred с помощью ICQ
А если не используя пинги. Как по другому?

Добавлено через 36 секунд
Нет случайно примера реализации сервера?

Старый 04.05.2010, 13:59
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 6  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
А если не используя пинги. Как по другому?
Отослали 10 сообщений туда-сюда, синхронизировали и забыли. А зачем по-другому?
__________________
...вселенская грусть

Старый 04.05.2010, 15:18
YFred вне форума Посмотреть профиль Отправить личное сообщение для YFred Найти все сообщения от YFred
  № 7  
Ответить с цитированием
YFred

Регистрация: Apr 2008
Сообщений: 26
Отправить сообщение для YFred с помощью ICQ
Просто я не особо понял зачем это нужно. Пинг 1 раз при подключении проверяется, а потом учитывается измеренная задержка? Или при каждом обмене данными нужно пинг замерять?

У меня в игре принцип следующий, есть (2-4)игрока которые бегают/прыгают по карте(типа аркада). Каждый кадр происходит проверка на столкновения с объектами карты (hitTest) и игроков между собой. При определенных условиях один из столкнувшихся игроков погибает.
Если не сложно можно подробнее объясните как реализовать это все в сетевом варианте. При прочтении предыдущих постов кое что стало проясняться, но общей картины я так и не могу себе представить (что передавать на сервер/на клиент с какой периодичностью и т.д).

Добавлено через 1 минуту
Сильно не бейте если туплю

Старый 04.05.2010, 16:25
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 8  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
что передавать на сервер/на клиент с какой периодичностью
Передавать 1 байт туда-обратно раз в 1 секунду. Измерять время, потраченное байтом на путь туда-сюда. Запоминать это время и делать на него поправку в течение всей следующей секунды (вернее - пока не вернется следующий байт). То есть постоянный пинг-тест.
Таким образом, мы всегда имеем текущий пинг игрока.

Все остальное (сообщения о действиях игрока) отправляем в момент нажатия клавиш на клиенте.

Сервер, получив сигнал о действии клиента, "подписывает" сообщение датой получения (с поправкой на пинг) и рассылает это сообщение всем остальным игрокам.

Клиент обрабатывает полученное сообщение...
Клиент (пользователь) видит изменения на экране.

ЗЫ
так как "подписывание" происходит на сервере, то подделать дату сообщения нереально. Можно подделать пинг, но это мало кого выручит =)
__________________
...вселенская грусть

Старый 04.05.2010, 22:44
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 9  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Начну с последних сообщений.

Цитата:
так как "подписывание" происходит на сервере, то подделать дату сообщения нереально.
Обобщу и скажу, что все, что происходит на сервере невозможно подделать. Сервер-то наш и не принадлежит злоумышленнику.

Цитата:
Передавать 1 байт туда-обратно раз в 1 секунду. <skipped> Таким образом, мы всегда имеем текущий пинг игрока.
Нужно все же определиться, что есть пинг. Клиент, отправляя т.н. ping может лишь замерить время отклика на этот пинг своего сетевого интерфейса. Представьте, что никакого "сервера" не существует. Просто есть пинг и есть понг-ответ. Замеряем время между клиентским запросом к интерфейсу и ответом от последнего. Т.о. никак не нужно умножать на два время между запросом и ответом. Другое дело, если в теле ответа (pong'е) есть временные метки получения запроса, начала ответа и пр. и ЕСЛИ время на обоих концах синхронизированно, то тогда есть возможность уточнить время "туда" и "обратно" отдельно. Но это "если" - сложная задача. В первом приближении пинг достигает сервера в течение "полное время запрос-ответ" пополам.

Добавлено через 7 минут
Цитата:
Достаточно команд "Вася начал идти" и "Вася кончил закончил идти", т.к. при TCP соединении пакеты доходят строго по очереди (нет смысла гонять туда-сюда "я иду" - "да, ты и вправду идешь")
Достаточно, я об этом и говорил. Только с учетом времени задержки сети лучше на клиенте идти сразу - передвигать персонажа по экрану и одновременно отсылать сообщение на сервер, что Вася "пошел". При этом, если по каким-то причинам сервер решит, что персонаж двигаться не может, то он отошлет обратно некоторое сообщение об этом.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 04.05.2010, 22:57
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 10  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
ЕСЛИ время на обоих концах синхронизированно
Вот кстати - по идее можно же не синхронизировать? Если мы знаем, сколько времени сообщение идет из А(сервер) в Б(клиент), то с сервера можем отправлять не дату события, а "временнОй сдвиг" относительно получения клиентом сообщения.
То есть сервер отправляет не "Василий начал идти в 19.00" а "Василий начал идти 3 секунды назад"
Или я брежу? =)
__________________
...вселенская грусть

Создать новую тему Ответ Часовой пояс GMT +4, время: 22:46.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 22:46.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.