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

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

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

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

Всем HOLA!
Собственно, сабж...

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

Буду рад любым подсказкам, заранее спасибо
__________________
...вселенская грусть

Старый 08.12.2009, 18:33
bicubic_bublic вне форума Посмотреть профиль Найти все сообщения от bicubic_bublic
  № 2  
Ответить с цитированием
bicubic_bublic
Banned
[+4 25.09.09]
[+1 12.11.09]
[+4 12.12.09]

Регистрация: Sep 2009
Сообщений: 231
это что-то real-time или что-то пошаговое?
если real-time, то зачем "хранить несколько последних состояний мира" ?
кто раньше прислал подобрать - того и предмет.

Старый 08.12.2009, 19:42
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 3  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
сервер - Модель.
клиенты - Виды.
1 клиент говорит хочу взять предмет.
сервер убирает предмет и сообщает что 1 клиент его взял
2 клиент успевает сказать - хочу взять предмет.
но сервер не обрабатывает это так как предмет уже взяли. и 2 клиенту присылает что предмет достался первому)
__________________
Отряд Котовскага

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

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

1) [name:X action:getItem time: 23:46]
2) [name:Y action:getItem time: 23:45]

Или проще не заморачиваться? Что раньше пришло, то и сработает?

Просто ключевой момент вот в чем:
2 игрока стреляют друг в друга одновременно.
У №1 пинг 10, у №2 пинг 20.
Если №2 стрельнет на 11 миллисекунду раньше, то он победил.
При этом если №1 стрельнет на 9 миллисекунд позже - он все равно молодец.
Состояния мира (как я полагаю) для того и нужны, чтобы понять кто где был и кто в кого попал в момент исполнения команды.

...Или все таки забить? =)
__________________
...вселенская грусть

Старый 08.12.2009, 20:58
bicubic_bublic вне форума Посмотреть профиль Найти все сообщения от bicubic_bublic
  № 5  
Ответить с цитированием
bicubic_bublic
Banned
[+4 25.09.09]
[+1 12.11.09]
[+4 12.12.09]

Регистрация: Sep 2009
Сообщений: 231
по вашей модели у всех игроков игра будет тормозить одинаково - пришел чел с большим пингом все тормозят..
real-time он на то и риалтайм..

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

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

Честно говоря, я понятия не имею как надо делать подобные системы компенсации лагов.

Хотелось бы узнать, кто и как решал подобные проблемы. Реалтайм он на то и реалтайм, согласен =)
__________________
...вселенская грусть

Старый 11.12.2009, 00:45
incoob вне форума Посмотреть профиль Отправить личное сообщение для incoob Найти все сообщения от incoob
  № 7  
Ответить с цитированием
incoob

Регистрация: Mar 2008
Сообщений: 215
А какой-нибудь пользователь вдруг начнет говорить, что он уже час(год?) назад как выстрелил - и будет ему вечное счастье. Вы этого хотите?
В общем случае вряд ли удастся обойти эту проблему...

На самом деле тоже интересно решение такой задачи

Старый 11.12.2009, 01:23
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 8  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
http://flasher.ru/forum/showthread.php?t=127976 вот вам небольшой холивар на заданную тему
__________________
тонкий тролль, осеянный благодатью

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

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

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


 


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


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