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

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

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

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
скорость пересылки не влияет на синхронность симуляции
Как не влияет.У одного юзера отвалилась сеть.При этом, если симуляция считается на клиенте юзер даже не заметит что он отвалился, просто все игроки кроме него остановятся.Это для симуляции не помеха, поэтому юзер радостно убивает зафриженых соперников, а потом раз и у юзера сеть появляется и поди разберись как ему передать актуальное состояние мира.С одним отвалившимся еще можно что-то придумать, а если отвалилась целая группа юзеров?А если несколько групп и в разное время?
В данном случае отвал - это крайний случай медленно работающей сети.

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

Регистрация: Mar 2007
Сообщений: 319
Цитата:
Сообщение от undefined Посмотреть сообщение
Как не влияет.У одного юзера отвалилась сеть.При этом, если симуляция считается на клиенте юзер даже не заметит что он отвалился, просто все игроки кроме него остановятся.Это для симуляции не помеха, поэтому юзер радостно убивает зафриженых соперников, а потом раз и у юзера сеть появляется и поди разберись как ему передать актуальное состояние мира.С одним отвалившимся еще можно что-то придумать, а если отвалилась целая группа юзеров?А если несколько групп и в разное время?
В данном случае отвал - это крайний случай медленно работающей сети.
Ты не прочитал статью, при синхронной симуляции действия пользователя раздаются на фиксированный тик, если нет информации о наличии/отсутствии действий пользователей на текущий тик, то симуляция мира останавливается в ожидании этой информации, если такие остановки мира учащаются то время начала симуляции сдвигается и этот пользователь видит картину мира немного в прошлом и видит эффект от своих действий с задержкой, что не критично для стратегий. значение тика может быть любое, комфортное для геймплея, обычно 100-500 мс
__________________
RocketJump


Последний раз редактировалось Nooob; 04.05.2017 в 11:57.
Старый 04.05.2017, 11:50
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 13  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
ну так и где же тут?
Цитата:
абсолютно идентичная картина на обоих девайсах
И кто говорит про стратегию?

Добавлено через 59 секунд
спор как раз о том,что абсолютно идентичная картина невозможна в принципе.

Старый 04.05.2017, 12:02
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 14  
Ответить с цитированием
Nooob
 
Аватар для Nooob

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

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

Регистрация: Oct 2006
Сообщений: 2,281
т.е. отвал одного игрока стопорит всех остальных?Так себе решение.

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

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

Тема, конечно, очень интересная, универсального решения нет. Каждое имеет свои плюсы и минусы и годится под конкретную задачу.
__________________
Дети не должны знать о своих родителях

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
или в интерпретируемых она тоже имеется?
Тоже имеется. Основа то все равно та же. И тут дело не в языке, а в платформе.
Цитата:
Вот, к примеру, флешовый Number, он на всех девайсах работает одинаково?
Читал, что тоже не одинаково. Сам не проверял
__________________
Ко мне можно и нужно обращаться на ты)

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

Регистрация: Mar 2007
Сообщений: 319
Цитата:
Сообщение от undefined Посмотреть сообщение
т.е. отвал одного игрока стопорит всех остальных?Так себе решение.
Нет, смотри у тебя есть два клиента, один сервер, общение по сокету, запускается игра, сервер начинает слать всем клиентам через каждые 200мс 4 байта - номер тика, когда пользователь совершает действие, он отправляет на сервер запрос я пнул шар по координатам x y, сервер получает действие и всем клиентам в следующей раздаче тиков отправляет 4 байта(текущий номер тика) + 12 байт (x, y, user). клиенты на указанном тике применяют действие (запускают физику и тд). итого получается так что если у игрока лаганула сеть то он будет ждать следующий тик, когда он придет он домотает моментально симуляцию до текущего известного тика и он никак не стопроит остальных. потому что за раздачу тиков отвечает сервер а не клиенты, клиенты лишь уведомляют сервер о том что хотят совершить такое-то действие, а когда оно совершится решает сервер

Добавлено через 12 минут
Цитата:
Вот, к примеру, флешовый Number, он на всех девайсах работает одинаково?
Number реализован по стандарту IEE754, внутри виртуальной машины работает в качестве double C++ c -fp-model precise (написана только кастомная флешовая сереализация/десереализация в string)
Статья на тему https://habrahabr.ru/post/112953/
я проверял на различных процессорах, x86, x86_64, armv7, arm64, intel, amd, ios, андроиды, на sqrt, sin, cos, на малых диапазонах если после каждой операции округлять до 4 знака после запятой то значения получаются одинаковые, но лучше по возможности использовать int, uint.
ну и упрощать всякие вычисления, к примеру при поиске ближайшего противника достаточно сравнивать вместо честной дистанции (sqrt(x*x + y*y)) использовать квадрат дистанции (x*x + y*y)
__________________
RocketJump


Последний раз редактировалось Nooob; 04.05.2017 в 15:20.
Старый 05.05.2017, 09:32
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 19  
Ответить с цитированием
undefined

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

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
а если новый юзер приходит кто ему полный стейт скажет?Прокручивать весь геймплей с самого начала?Уж лучше чтоб бэкенд тоже считал мир,правда тогда возвращаемся к варианту когда всем заведует сервер.
А зачем ему полный геймплей? Я разруливал это просто передачей текущего стейта. Относительно текущего он и начинал считать все происходящее. По той же схеме, что и остальные. Всё работало. Не всегда есть возможность сделать, чтобы весь мир считал сервер
__________________
Ко мне можно и нужно обращаться на ты)

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

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

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


 


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


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