|
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
Цитата:
В данном случае отвал - это крайний случай медленно работающей сети. |
|
|||||
Регистрация: Mar 2007
Сообщений: 319
|
Цитата:
__________________
RocketJump Последний раз редактировалось Nooob; 04.05.2017 в 11:57. |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
ну так и где же тут?
Цитата:
Добавлено через 59 секунд спор как раз о том,что абсолютно идентичная картина невозможна в принципе. |
|
|||||
Регистрация: Mar 2007
Сообщений: 319
|
а в чем не идентичность картины? разсинхронизация не возможна в принципе, если у тебя детерминированная симуляция то с эквивалентными входными данными результат всегда будет одинаковый (вне зависимости от машины, времени, места). если у тебя нет входных данных на данный момент то не продолжай симуляцию пока эти данные не получишь
__________________
RocketJump |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
т.е. отвал одного игрока стопорит всех остальных?Так себе решение.
|
|
|||||
Чувак из видео советует написать свой float, для детерминированных расчётов. Жёсткий совет, ппц какой жёсткий Параллельно придётся переписать и всю физику и любую другую либу, использующую float и участвующую в симуляции, ещё и постоянно следить за этим.. Такая проблема различия обработки чисел с плавающей запятой касается только компилируемых языков (c++), или в интерпретируемых она тоже имеется? Вот, к примеру, флешовый Number, он на всех девайсах работает одинаково? Что-то я не нашёл упоминания об этом в хелпе.
Тема, конечно, очень интересная, универсального решения нет. Каждое имеет свои плюсы и минусы и годится под конкретную задачу.
__________________
Дети не должны знать о своих родителях |
|
|||||
Цитата:
Цитата:
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Mar 2007
Сообщений: 319
|
Нет, смотри у тебя есть два клиента, один сервер, общение по сокету, запускается игра, сервер начинает слать всем клиентам через каждые 200мс 4 байта - номер тика, когда пользователь совершает действие, он отправляет на сервер запрос я пнул шар по координатам x y, сервер получает действие и всем клиентам в следующей раздаче тиков отправляет 4 байта(текущий номер тика) + 12 байт (x, y, user). клиенты на указанном тике применяют действие (запускают физику и тд). итого получается так что если у игрока лаганула сеть то он будет ждать следующий тик, когда он придет он домотает моментально симуляцию до текущего известного тика и он никак не стопроит остальных. потому что за раздачу тиков отвечает сервер а не клиенты, клиенты лишь уведомляют сервер о том что хотят совершить такое-то действие, а когда оно совершится решает сервер
Добавлено через 12 минут Цитата:
Статья на тему 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. |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
Цитата:
|
|
|||||
Цитата:
__________________
Ко мне можно и нужно обращаться на ты) |
Часовой пояс GMT +4, время: 06:30. |
|
« Предыдущая тема | Следующая тема » |
|
|