![]() |
Стандарт процессора IEEE 754
Товарищи, подскажите пожалуйста как заставить работать сборку на Unity3d так, чтобы процессор расчитывал все числа с плавающей точкой (float) по стандарту IEEE 754? Заранее спасибо.
|
Ответ: Стандарт процессора IEEE 754
Что это за стандарт и чем он так хорош?
По вопросу: я думаю никак. |
Ответ: Стандарт процессора IEEE 754
Судя по всему это самый распространенный формат представления чисел с плавающей запятой. Поэтому встречный вопрос топик-стартеру: откуда информация что сейчас Юнити оперирует другим представлением?
(олсо поддержка на уровне процессора реализована, в случаях когда это не так, то идёт программная эмуляция) |
Ответ: Стандарт процессора IEEE 754
Цитата:
C википедии: Цитата:
|
Ответ: Стандарт процессора IEEE 754
Цитата:
По поводу программной эмуляции, если ее реализовать расчет float будет осуществляться в десятки раз медленее чем если расчет будет идти на аппаратном уровне. Поэтому единственный вариант решения проблемы с float который сейчас я вижу это заставить работать программно процессор по стандарту IEEE 754. |
Ответ: Стандарт процессора IEEE 754
Это всё понятно, но процессоры считают так как реализован их FPU. Некоторые языки позволяют использовать программную поддержку стандарта если он не поддерживается процессором. Однако производительность таких расчётов сильно падает. Заставить процессор работать с данными которые он не поддерживает невозможно. В этом вся суть FPU, он заранее спроектирован физически под определенный стандарт(ы).
А ребятки с RTS дети несмышленые, передавать нужно время от времени корректирующие данные в абсолютных единицах. Симуляцию клиент отрабатывает сам а сервер лишь корректирует состояние объектов во времени. Лучшим решением будет использование чисел двойной точности если важен точный результат на любой платформе. |
Ответ: Стандарт процессора IEEE 754
используй реализацию float с фиксированной запятой на базе int, так делают когда нужно обеспечить одинаковый результат во всех средах исполнения, и так сделаны большинство онлайн игр
IEEE 754 ничего тебе не даст, потому что всё и так на нем работает |
Ответ: Стандарт процессора IEEE 754
Цитата:
Мне нужно чтобы можно было пользоваться полным функционалом програмирования на Unity, а там почти все на float. Я читал, что супрем командер сделали с использованием float благодаря тому,что задействовали стандарт IEEE 754. |
Ответ: Стандарт процессора IEEE 754
Цитата:
Смысл в том, чтобы стандартные функции Unity могли отрабатывать с float одинаково на каждой машине, а не переписывать всю арифметику для работы с фиксированной запятой. Цитата:
|
Ответ: Стандарт процессора IEEE 754
их просто два : IEEE 754-1985 и IEEE 754-2008
Цитата:
|
Ответ: Стандарт процессора IEEE 754
Ну как тогда люди делают RTS сетевые при расчете float аппаратно?
|
Ответ: Стандарт процессора IEEE 754
RTS это же поинт энд клик - щелкнул по цели, передал координаты. Нахрен передавать управление?
|
Ответ: Стандарт процессора IEEE 754
Цитата:
|
Ответ: Стандарт процессора IEEE 754
Цитата:
1. Инициализация - передача всем игрокам координат всех юнитов игроков. 2. Выделение юнита мышкой. 3. Указание юниту цели (клик мышкой) - координат (цели) и передача этих координат для этого юнита по сети. 4. профит UPD: вы еще скажите что у вас на каждом компьютере игра с одинаковой скоростью работает чтобы считать смещения и суммировать. |
Ответ: Стандарт процессора IEEE 754
Цитата:
Согласно вашей логике кто должен просчитывать игровой мир (перемещение,удаление,добавление юнитов ) ? |
Ответ: Стандарт процессора IEEE 754
Перемещение пусть считают клиенты, они знают конечную позицию юнита, время начала движения, скорость => время, за которое должен пройти путь этот юнит и дойти до какого места. Если Юнит не дошел до нужного места - посылает серверу сообщение об остановке и текущих координатах, сервер их рассылает. Снова все знают координаты юнита.
Вообще я не эксперт в сетях, я просто предполагаю как это должно работать. И на самом деле позиции 8к юнитов будут занимать 96кб памяти. Можно обновлять координаты порциями. по 500 юнитов в секунду например. |
Ответ: Стандарт процессора IEEE 754
Цитата:
Код:
.тут |
Ответ: Стандарт процессора IEEE 754
Цитата:
|
Ответ: Стандарт процессора IEEE 754
Цитата:
|
Ответ: Стандарт процессора IEEE 754
Зачем такие сложности?
ИМХО: расчёт перемещений на клиенте - своими руками разрешить читерство. Зачем тогда вам сервер, если он ничего не делает? Я конечно совсем не специалист в данной области, но тут вполне всё логично и просто: клиент ткнул, передал серверу, сервер обработал, сказал клиенту/клиентам, у клиента/клиентов что то куда то побежало/задвигалось/умерло/т.д. Хотя тут нужен довольно мощный сервер. Ну и это просто имхо, ногами не пинать. |
Ответ: Стандарт процессора IEEE 754
Да блин, какие расчеты флоатов? Клиент получает конечную координату, все, никаких расчетов. Только промежуточное перемещение до нее.
|
Ответ: Стандарт процессора IEEE 754
Топикстартер сам не знает что хочет.
|
Цитата:
Цитата:
Цитата:
http://habrahabr.ru/post/123883/ |
Ответ: Стандарт процессора IEEE 754
Прочитал там
Цитата:
|
Ответ: Стандарт процессора IEEE 754
Ну на юнити3в ру уже ответили. Согласно стандарту на язык C# от Микрософт тип Single соответствует стандарту IEEE754. Юнити использует стандартный C#. Следовательно его float соответствуют стандарту IEEE754. Что Вы еще хотите?
|
Ответ: Стандарт процессора IEEE 754
http://blogs.msdn.com/b/shawnhar/arc...rministic.aspx
Цитата:
|
Ответ: Стандарт процессора IEEE 754
В общем то да, если писать убер стратегию, то писать на чем-то другом.
|
Ответ: Стандарт процессора IEEE 754
тут где то проскакивала дельная мысль - что всю геймплей-важную информацию ДОЛЖЕН просчитывать сервер. не хватит производительности - покупайте еще сервера. считать на клиенте не выход, ИМХО.
|
Ответ: Стандарт процессора IEEE 754
Fockerian, я далёк от сетей, но уверен что даже для одноранговой сетевой игры ненужны такие извращения.
В нормальных онлайн играх все вычисления идут на сервере и всё! То что ты пытаешься описать это гибридная сеть, когда часть вычислений идут на клиенте, только нужно ли оно вам, это головная боль! ИМХО |
Ответ: Стандарт процессора IEEE 754
Цитата:
Впрочем я уже нашел куда можно копать дальше благодаря ответу на другом форуме.Всем спасибо за ответы. C# рулит. |
Ответ: Стандарт процессора IEEE 754
Цитата:
|
Ответ: Стандарт процессора IEEE 754
Автор ещё появится когда выяснится что даже добившись своего рассинхронизация неизбежно наступает.
|
Ответ: Стандарт процессора IEEE 754
Цитата:
|
Ответ: Стандарт процессора IEEE 754
Цитата:
Цитата:
А мне то говорили что тут мол форум профессионалов. Цитата:
|
Ответ: Стандарт процессора IEEE 754
Я не играю в РТС, но если бы было такое количество юнитов, то наверняка ими надо было управлять группами, а не каждым по отдельности.
|
Ответ: Стандарт процессора IEEE 754
Цитата:
Тут не бюро добрых услуг, ни кто не обязан прислуживать ни кому. Так что ваши требования оставьте для тех сервисов где вы платите, а тут всё исключительно добровольно. Признаком профессионализма является списывать просчёты архитектуры приложения на несоответствие стандартам железа? Настоящие профессионалы. |
Ответ: Стандарт процессора IEEE 754
Цитата:
Да и как вообще добровольная помощь относится лично к вам, что то я кроме завышенной самооценки и троллинга (за который вам судя по всему и накручивают счетчик полезных комментариев) ничего не вижу. Цитата:
Цитата:
|
Ответ: Стандарт процессора IEEE 754
вам сказали что на C# такое нельзя сделать, какие еще вопросы ?
|
Ответ: Стандарт процессора IEEE 754
Вопросов нет, тему можно закрывать.
|
Ответ: Стандарт процессора IEEE 754
Да я разобрался как перевести на этот стандарт и добиться синхронизации float-ов, тему можно сносить.
|
Ответ: Стандарт процессора IEEE 754
Поделись с народом, вдруг когда то кому то пригодится.
|
Ответ: Стандарт процессора IEEE 754
посонам просто лень переписывать кучу кода и думать новую архитектуру. или нет лишнего кэша на серваки. в конце-концов, найдется читер, который таки зачитит свои перемещения, и у них будет глубокий провал.
|
Ответ: Стандарт процессора IEEE 754
|
Ответ: Стандарт процессора IEEE 754
Собственно - зачем Вы ссылку на МСДН привели то? Ну Вам же с самого начала говорили, что float в c# согласно документации микрософт удовлетворяет этому стандарту. Вы хотите сказать, что "разобрался как перевести на этот стандарт" - это значит просто использовать всроенные типы?
PS: если непонятно float в .NET представлена именно как Single: http://msdn.microsoft.com/ru-ru/library/b1e65aza.aspx т.е. это одно и тоже. |
Ответ: Стандарт процессора IEEE 754
float это псевдоним Single
|
Ответ: Стандарт процессора IEEE 754
Тип Single соответствует стандарту IEC 60559:1989 (IEEE 754), описывающему правила двоичной арифметики с плавающей запятой.
|
Ответ: Стандарт процессора IEEE 754
float тоже. ведь это одно и то же.
|
Ответ: Стандарт процессора IEEE 754
Четыре страницы обсуждения в никуда. Топикастер так и не понял, что вопроса и не было.
|
Ответ: Стандарт процессора IEEE 754
Цитата:
|
Цитата:
Вот именно что никуда. Флудерасты одни. Понимаю Unity3d.ru. Спросил? ответили. Если никто не знают никто не ответит. А тут лишь бы языком почесать. Это к тебе тоже кстте относится Цитата:
|
Ответ: Стандарт процессора IEEE 754
Цитата:
Что же вы, милейший, оскорблять то начали, ведь вам никто ничего подобного не писал. Или в вас интернет вселяет ложное чувство защищенности? |
Ответ: Стандарт процессора IEEE 754
|
Ответ: Стандарт процессора IEEE 754
Цитата:
14 August 1990 Возраст: 22 Биография: ы Местоположение: Владивосток Интересы: Блятз, пиво и т.д. Без комментариев. |
Ответ: Стандарт процессора IEEE 754
А ты не подумал, что я профиль заполнял при регистрации (13.09.2008 )?. :crazy:
|
Ответ: Стандарт процессора IEEE 754
ребят, давайте жить дружно.
вот вы написали про Single. вы им тупо заменили все расчеты на float? и это помогло? (по идее это не должно было помочь, ибо float это лишь псевдоним Single). И у вас в игре не используется рандом судя по всему? |
Ответ: Стандарт процессора IEEE 754
Цитата:
|
Ответ: Стандарт процессора IEEE 754
как я вижу всем пофиг на то что сам стандарт не гарантирует одинаковое поведение на всех машинах + микрософт сам не гарантирует одинаковое поведение на всех машинах =)
|
Ответ: Стандарт процессора IEEE 754
Код:
using System; Код:
.method private hidebysig static float32 Код:
.method private hidebysig static float32 адекватную идею кидал джимон. решайте все на типах с фиксированной точкой. например вот, классик: http://stackoverflow.com/questions/6...oint-math-in-c сам не проверял, поэтому работоспособность не гарантирую. |
Ответ: Стандарт процессора IEEE 754
Цитата:
Будем думать дальше... МОжет в итоге придется и на интах переписываать все. |
Часовой пояс GMT +4, время: 04:32. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot