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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.05.2017, 14:51
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 21  
Ответить с цитированием
Nooob
 
Аватар для Nooob

Регистрация: Mar 2007
Сообщений: 319
Цитата:
Сообщение от undefined Посмотреть сообщение
а если новый юзер приходит кто ему полный стейт скажет?Прокручивать весь геймплей с самого начала?Уж лучше чтоб бэкенд тоже считал мир,правда тогда возвращаемся к варианту когда всем заведует сервер.
Домотать логику обычно не составляет проблем, к примеру тик симуляции считается в худшем случае 2 мс то симуляция 5 минутного геймплея будет не больше 18 сек, после пяти минут сервер спрашивает у всех клиентов состояние мира, если оно у всех одинаковое продолжает игру и сохраняет его для следующих новых игроков
__________________
RocketJump

Старый 05.05.2017, 15:42
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 22  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Nooob,объясни с чем может быть связано такое острое нежелание хранить полный стейт на сервере?Уж если клиент может считать симуляцию, то сервер сможет и подавно.
Ты описываешь какие-то дикие велосипеды с сомнительной надежностью(например что делать если выяснится таки что не все единогласно сходятся по поводу стейта игрового мира.Как решить кто прав?)

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Цитата:
Как решить кто прав?)
Рассинхронизация = конец игры для всех. Делать какие-то защитные механизмы или способы восстановления бессмысленно потому, почему и бессмысленно делать защиту от обращения к несуществующему индексу массива, например. Это есть баг и такого просто не должно быть изначально.

Такая модель может дать эти преимущества:
1. Обмен данными очень минимальный, сводится только к передаче вносимых изменении. Все события, состояния и даже рандомы - клиенты получают у себя самостоятельно и у всех они одинаковые, нет нужды пересылать это. (1+1 всегда равно 2)
2. В случае потери сервера, любой клиент мгновенно может взять на себя его роль. Игрок, создавший игру, в случае лива не угробит игру всех остальных. Потому что нет центрального места где ведутся расчёты, все клиенты знают, как изменяется мир.

Я знаю, что такой метод используется в стратегиях реального времени. Представь себе карту, на которой 1к юнитов и 12 игроков. Каждый игровой шаг (~10 раз в секунду) тебе надо будет отослать 12 игрокам положение, направление, скорость движения (состояние) всех 10к юнитов. Какое количество трафика это будет? Вместо этого, ты можешь отослать этим 12 игрокам "приказ движения" 10к юнитам в указанную точку. А дальше они сами посчитают, где и как будет находиться каждый конкретный юнит.
__________________
Дети не должны знать о своих родителях

Старый 05.05.2017, 17:19
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 24  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
Я знаю, что такой метод используется в стратегиях реального времени. Представь себе карту, на которой 1к юнитов и 12 игроков. Каждый игровой шаг (~10 раз в секунду) тебе надо будет отослать 12 игрокам положение, направление, скорость движения (состояние) всех 10к юнитов. Какое количество трафика это будет? Вместо этого, ты можешь отослать этим 12 игрокам "приказ движения" 10к юнитам в указанную точку. А дальше они сами посчитают, где и как будет находиться каждый конкретный юнит.
Пример с потолка.А что мешает серверу отслать тоже самое(приказ движение)?Никто в здравом уме не будет на каждый чих посылать полный стейт.
Цитата:
В случае потери сервера, любой клиент мгновенно может взять на себя его роль
Потеря сервера в любом случае означает кирдык т.к. ходы то через него передаются.Только если весь обмен идет через п2п, но тогда никакой гарантии синхронизованности всех участников.

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Цитата:
Пример с потолка.А что мешает серверу отслать тоже самое(приказ движение)?Никто в здравом уме не будет на каждый чих посылать полный стейт.
Суть в том, что если о способе изменения знает только сервер, то тебе по любому придётся слать состояние, события и прочее всем игрокам. А событии в реал тайм игре будет очень много, помимо перемещения.

Цитата:
Только если весь обмен идет через п2п, но тогда никакой гарантии синхронизованности всех участников.
Почему?
__________________
Дети не должны знать о своих родителях

Старый 05.05.2017, 17:45
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 26  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
Суть в том, что если о способе изменения знает только сервер, то тебе по любому придётся слать состояние, события и прочее всем игрокам. А событии в реал тайм игре будет очень много, помимо перемещения.
Сервер шлет только дифы к стейту(игрок 1 выделил группу из 1к юнитов и направил их в x,y).Это не так много данных.Огромный плюс при этом что сервер сам знает точно где и кто находится, так что даже если у кого-то случится рассинхрон, он может просто скачать полный стейт с сервера и продолжить игру.
Цитата:
Почему?
Представь что играют 5 юзеров из России и 5 из США.Вдруг метеорит раскалывает планету пополам.Обе группы быстро назначают нового сервера и играют независимо.Дальше выясняется что существует обходной канал через спутник и сеть восстанавливается.В результате имеем две группы юзеров с сильно разными стейтами синхронизировать которых невозможно.

Старый 05.05.2017, 17:55
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 27  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
То, как разрулить потерю соединения - это уже отдельная история.
__________________
Дети не должны знать о своих родителях

Старый 05.05.2017, 18:02
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 28  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
предложи свой вариант,гарантирующий 100% синхронизацию без сервера.

Добавлено через 3 минуты
и не забываем что группа юзеров вполне может на время перестроения сети отвалиться и потом назад приконнектиться.

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Синхронизировать 2 разобщённые игры, развивавшиеся отдельно - невозможно, это будут 2 разные игры. Вообще, всё зависит от нужд самого приложения, в конечном итоге у нас есть такие варианты:
1. Продолжить свою игру с оставшимися игроками/одному. (В дальнейшем к нам смогут подключиться и продолжить нашу игру другие игроки)
2. Принудительно завершить игру. (В дальнейшем мы сможем снова подключиться к игре, когда у нас появиться связь)
3. Остановить игру и ждать, пока связь со всеми игроками не восстановится.

Обычно используются все 3 варианта. Сперва игра ставится на паузу, затем, если связь не восстановлена, следует пункт 1 или 2, в зависимости от каких-то обстоятельств. Можно дать игроку выбрать.
__________________
Дети не должны знать о своих родителях

Старый 05.05.2017, 18:25
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 30  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
возаращаясь к первоначальному посылу, какие это дает преимущества по сравнению с сервером?

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

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

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


 


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


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