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

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

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от gloomyBrain Посмотреть сообщение
"Василий начал идти 3 секунды назад"
Или я брежу? =)
Это же относительно какого-то времени? Вероятно, когда клиент получит это сообщение через минуту _внезапного_ лага, то оно будет мягко говоря, неактуальным.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 04.05.2010 в 23:02.
Старый 04.05.2010, 23:11
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 32  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

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

ЗЫ
Я бы отключил клиента секунд через 10 при отсутствии pong'а.

ЗЗЫ
А как правильно синхронизировать время? Я бы попинговал раз 10, отправил клиенту системное время с поправкой на лаг, потом через какой-то промежуток времени спросил время у клиента и, если оно не вписывается в лаг - синхронизировал заново.
Но что-то кажется мне, что большую часть таких синхронизаций я бы делал из-за скачков лага, а не из-за расхождений во времени.
Есть какой-то проторенный путь?
__________________
...вселенская грусть

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

Регистрация: Apr 2008
Сообщений: 26
Отправить сообщение для YFred с помощью ICQ
Цитата:
Сообщение от gloomyBrain Посмотреть сообщение
.
То есть сервер отправляет не "Василий начал идти в 19.00" а "Василий начал идти 3 секунды назад"
Получается если 1игрок начал идти в 19.00, а сообщение с сервера всем остальным о том что он начал идти пришло через 3 секунды. То получается, что картинка на клиентах будет рассинхронизирована? А это не есть гуд, а точнее вообще не гуд. Т.е может возникнуть ситуация в моей игре что 1игрок толкнул другого (визуально), а на самом деле в этой точке второго игрока уже и нет. Или я опять ничего не понял?

Добавлено через 4 минуты
и еще вопрос вдогонку: Какой протокол обмена сообщениями лучше выбрать для риал тайм игры? Разбирался с классом net.Socket, он может передавать данные как в бинарном виде, так и типизированные(строки, числа). В каком виде лучше передавать/принимать данные

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Поэтому во многих играх по клику на сервер уходит лишь пакет, а игрок двигается когда от сервера приходит уже ответ. Это снижает время рассинхронизации, но, с другой стороны, добавляет нервов игроку на низком соединении )

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от YFred Посмотреть сообщение
Т.е может возникнуть ситуация в моей игре что 1игрок толкнул другого (визуально), а на самом деле в этой точке второго игрока уже и нет.
Видишь, в чем ситуация. Наши клиенты - тонки. Они простые телевизоры, покуда не начинают затевать обратную связь. А основная задача телевизора - максимально точно воспроизвести то, что показывает ретранслятор (сервер). Поэтому в хорошо спланированном сервер-клиенте у тебя не будет приведенной выше ситуации.

Цитата:
Сообщение от YFred Посмотреть сообщение
Какой протокол обмена сообщениями лучше выбрать для риал тайм игры? Разбирался с классом net.Socket, он может передавать данные как в бинарном виде, так и типизированные(строки, числа). В каком виде лучше передавать/принимать данные
Протокол лучше выбирать тот, который требует меньше времени на десериализацию и
потребляет меньше трафика. Socket ничего не знает о протоколах более высокого уровня, чем TCP/IP
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 04.05.2010 в 23:38.
Старый 04.05.2010, 23:45
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 36  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

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

Цитата:
он может передавать данные как в бинарном виде, так и типизированные(строки, числа)
Все данные классом Socket передаются в бинарном виде (и строки, и числа). Строки записываются в кодировке UTF-8 (Socket.writeUTF()) или в какой-то еще кодировке (Socket.writeMultiBytes(...))
Числа записываются в байты в порядке LittleEndian (порядок байт по-умолчанию для сети)

Цитата:
а игрок двигается когда от сервера приходит уже ответ
Это кривая реализация. Ибо у себя на экране - да пусть двигается как хочет, а вот когда от сервера придет ответ - тогда быстренько перестроится под него.

Цитата:
Протокол лучше выбирать тот, который требует меньше времени на десериализацию и
потребляет меньше трафика.
Проще всего придумать свой протокол
__________________
...вселенская грусть


Последний раз редактировалось gloomyBrain; 04.05.2010 в 23:48.
Старый 04.05.2010, 23:52
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 37  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от gloomyBrain Посмотреть сообщение
А как правильно синхронизировать время?
Есть какой-то проторенный путь?
Конечно, есть. У специалистов РосАвиаКосмоса. Там такие лаги, что мама не горюй. Но им проще. У них время лага детерминировано. А для нас - переносить часть логики сервера на клиент.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 05.05.2010 в 00:18.
Старый 04.05.2010, 23:54
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 38  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

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

Цитата:
У специалистов РосАвиаКосмоса
У них читеров нет =)
__________________
...вселенская грусть


Последний раз редактировалось gloomyBrain; 04.05.2010 в 23:57.
Старый 05.05.2010, 00:28
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 39  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от gloomyBrain Посмотреть сообщение
Я требую немедленных объяснений!
Пожалуйте )
Pathfinding. Мало того, что Вася побежал в точку Б. Путь до этой точки лежит через вершины графа, да еще кое-где и с весами. Дешевле путь рассчитать на клиенте, а сервер можнет иногда "поддакивать", если согласен с клиентом.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

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

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

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

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


 


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


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