forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Стандарт процессора IEEE 754 (http://forum.boolean.name/showthread.php?t=18048)

pax 02.04.2013 21:49

Ответ: Стандарт процессора IEEE 754
 
Перемещение пусть считают клиенты, они знают конечную позицию юнита, время начала движения, скорость => время, за которое должен пройти путь этот юнит и дойти до какого места. Если Юнит не дошел до нужного места - посылает серверу сообщение об остановке и текущих координатах, сервер их рассылает. Снова все знают координаты юнита.

Вообще я не эксперт в сетях, я просто предполагаю как это должно работать.

И на самом деле позиции 8к юнитов будут занимать 96кб памяти. Можно обновлять координаты порциями. по 500 юнитов в секунду например.

RegIon 02.04.2013 21:54

Ответ: Стандарт процессора IEEE 754
 
Цитата:

Сообщение от Fockerian (Сообщение 256182)
Согласно вашей логике кто должен просчитывать игровой мир (перемещение,удаление,добавление юнитов ) ?

Сервер+клиент? не?
Код:

.тут
Клиент кидает на сервер координату клика и остальную лабуду.
Сервер думает что да как и возвращает результат клиенту.
Клиент принимает, обрабатывает их как-то.
Клиент шлет результат получившегося, а сервер сравнивает.
goto тут

Даже мне, далекому от сетевой игры все ясно и понятно...

Fockerian 02.04.2013 22:39

Ответ: Стандарт процессора IEEE 754
 
Цитата:

Сообщение от pax (Сообщение 256186)
Перемещение пусть считают клиенты, они знают конечную позицию юнита, время начала движения, скорость => время, за которое должен пройти путь этот юнит и дойти до какого места. Если Юнит не дошел до нужного места - посылает серверу сообщение об остановке и текущих координатах, сервер их рассылает. Снова все знают координаты юнита.

Вообще я не эксперт в сетях, я просто предполагаю как это должно работать.

И на самом деле позиции 8к юнитов будут занимать 96кб памяти. Можно обновлять координаты порциями. по 500 юнитов в секунду например.

В этом основная проблема,все клиенты делают разные расчеты из за разных float, поэтому мне и нужно заставить все системы считать абсолютно одинаковый float. вот супрем командер считает одинаково благодаря тому,что использует стандарт IEEE 754

Fockerian 02.04.2013 22:43

Ответ: Стандарт процессора IEEE 754
 
Цитата:

Сообщение от RegIon (Сообщение 256190)
Сервер+клиент? не?
Код:

.тут
Клиент кидает на сервер координату клика и остальную лабуду.
Сервер думает что да как и возвращает результат клиенту.
Клиент принимает, обрабатывает их как-то.
Клиент шлет результат получившегося, а сервер сравнивает.
goto тут

Даже мне, далекому от сетевой игры все ясно и понятно...

Это будет работать если расчеты float будут на сервере и клиенте идентичны.

St_AnGer 02.04.2013 23:04

Ответ: Стандарт процессора IEEE 754
 
Зачем такие сложности?

ИМХО: расчёт перемещений на клиенте - своими руками разрешить читерство. Зачем тогда вам сервер, если он ничего не делает? Я конечно совсем не специалист в данной области, но тут вполне всё логично и просто: клиент ткнул, передал серверу, сервер обработал, сказал клиенту/клиентам, у клиента/клиентов что то куда то побежало/задвигалось/умерло/т.д. Хотя тут нужен довольно мощный сервер. Ну и это просто имхо, ногами не пинать.

pax 02.04.2013 23:11

Ответ: Стандарт процессора IEEE 754
 
Да блин, какие расчеты флоатов? Клиент получает конечную координату, все, никаких расчетов. Только промежуточное перемещение до нее.

Nex 02.04.2013 23:15

Ответ: Стандарт процессора IEEE 754
 
Топикстартер сам не знает что хочет.

Fockerian 02.04.2013 23:39

Цитата:

Сообщение от pax (Сообщение 256195)
Да блин, какие расчеты флоатов? Клиент получает конечную координату, все, никаких расчетов. Только промежуточное перемещение до нее.

Промежуточное перемещение это сложный процес направленый на обход всех препятствий по методу A*. При его расчете используется флоат. Если он будет разный то у одного игрока юнит побежал слева от дома, у второго этот же самый игрок справа. Только справа была мина и юнит умер. А слева у первого пробежал... вот и рассинхронизация.

Цитата:

Сообщение от St_AnGer (Сообщение 256194)
Зачем такие сложности?

ИМХО: расчёт перемещений на клиенте - своими руками разрешить читерство. Зачем тогда вам сервер, если он ничего не делает? Я конечно совсем не специалист в данной области, но тут не всё логично и просто: клиент ткнул, передал серверу, сервер обработал, сказал клиенту/клиентам, у клиента/клиентов что то куда то побежало/задвигалось/умерло/т.д. Хотя тут нужен довольно мощный сервер. Ну и это просто имхо, ногами не пинать.

Сервер нужен для проверки синхронизации и проверки с последующей передачей вводов других игроков. Если делать обработку на сервере то получится что сервер сможет обрабатывать несколько игр максимум, а чтобы играло много людей надо много серверов... мне это не подходит

Цитата:

Сообщение от Nex (Сообщение 256197)
Топикстартер сам не знает что хочет.

Я знаю чего хочу, только у вас этого нету

http://habrahabr.ru/post/123883/

pax 03.04.2013 00:11

Ответ: Стандарт процессора IEEE 754
 
Прочитал там
Цитата:

В комментариях к нему Elijah обсуждает именно Supreme Commander. Если заставить процессор чётко следовать стандарту IEEE754, это решает большинство проблем. Но такое решение означает снижение производительности и игра не может выполнять вычислений с неопределйнным результатом (впрочем этого и так не следует делать).
Т.е. ты хочешь намеренно снизить производительность?

seaman 03.04.2013 00:42

Ответ: Стандарт процессора IEEE 754
 
Ну на юнити3в ру уже ответили. Согласно стандарту на язык C# от Микрософт тип Single соответствует стандарту IEEE754. Юнити использует стандартный C#. Следовательно его float соответствуют стандарту IEEE754. Что Вы еще хотите?

jimon 03.04.2013 00:43

Ответ: Стандарт процессора IEEE 754
 
http://blogs.msdn.com/b/shawnhar/arc...rministic.aspx

Цитата:

On Windows, .NET programs cannot save controller based replays to disk, then play them back at some later date or on a different machine. An intervening service pack might change the CLR in such a way that the JIT produces different code, or if you move the replay to a different computer, the CLR might adapt depending on the specific CPU variant it is running on.
ох лол, еще одна причина почему c# говно =) пишите пацаны на чём-то по серьезнее если вам прям надо IEEE 754 :D

pax 03.04.2013 01:04

Ответ: Стандарт процессора IEEE 754
 
В общем то да, если писать убер стратегию, то писать на чем-то другом.

HolyDel 03.04.2013 01:08

Ответ: Стандарт процессора IEEE 754
 
тут где то проскакивала дельная мысль - что всю геймплей-важную информацию ДОЛЖЕН просчитывать сервер. не хватит производительности - покупайте еще сервера. считать на клиенте не выход, ИМХО.

Arton 03.04.2013 05:04

Ответ: Стандарт процессора IEEE 754
 
Fockerian, я далёк от сетей, но уверен что даже для одноранговой сетевой игры ненужны такие извращения.

В нормальных онлайн играх все вычисления идут на сервере и всё!



То что ты пытаешься описать это гибридная сеть, когда часть вычислений идут на клиенте, только нужно ли оно вам, это головная боль! ИМХО

Fockerian 03.04.2013 10:13

Ответ: Стандарт процессора IEEE 754
 
Цитата:

Сообщение от HolyDel (Сообщение 256212)
тут где то проскакивала дельная мысль - что всю геймплей-важную информацию ДОЛЖЕН просчитывать сервер. не хватит производительности - покупайте еще сервера. считать на клиенте не выход, ИМХО.

Господа. Вы не поняли. Если клиент считает это разгружает сервер от ненужной работы. Сервер лишь проверяет синхронизацию и передает вводы данных, (кликанья мышкой) а по скольку,симуляция у всех на клиентах идет по отдельности,чтобы совершить чит (например прибавить здоровье или телепартировать танки) нужно чтобы возможность читерства была изначально заложена на клиенте, иначе чит пройдет только в симуляции читера и произойдет рассинхронизация.

Впрочем я уже нашел куда можно копать дальше благодаря ответу на другом форуме.Всем спасибо за ответы. C# рулит.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot