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)

Fockerian 02.04.2013 09:42

Стандарт процессора IEEE 754
 
Товарищи, подскажите пожалуйста как заставить работать сборку на Unity3d так, чтобы процессор расчитывал все числа с плавающей точкой (float) по стандарту IEEE 754? Заранее спасибо.

pax 02.04.2013 11:38

Ответ: Стандарт процессора IEEE 754
 
Что это за стандарт и чем он так хорош?

По вопросу: я думаю никак.

SBJoker 02.04.2013 12:10

Ответ: Стандарт процессора IEEE 754
 
Судя по всему это самый распространенный формат представления чисел с плавающей запятой. Поэтому встречный вопрос топик-стартеру: откуда информация что сейчас Юнити оперирует другим представлением?

(олсо поддержка на уровне процессора реализована, в случаях когда это не так, то идёт программная эмуляция)

Fockerian 02.04.2013 12:37

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

Сообщение от pax (Сообщение 256143)
Что это за стандарт и чем он так хорош?


C википедии:
Цитата:

IEEE 754 — широко распространённый стандарт формата представления чисел с плавающей точкой, используемый как в программных реализациях арифметических действий, так и во многих аппаратных (CPU и FPU) реализациях.
Чем он хорошо ? - При расчете числа с плавающей точкой (float) процессоры дают погрешность отличную друг от друга, но мне нужны одинаковые результаты на разных машинах. А стандарт IEEE 754 как раз таки стандартизирует расчет числа с плавающей точкой и разные процессоры работающие под этим стандартом будут давать идентичные результаты.

Fockerian 02.04.2013 12:49

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

Сообщение от SBJoker (Сообщение 256146)
Судя по всему это самый распространенный формат представления чисел с плавающей запятой. Поэтому встречный вопрос топик-стартеру: откуда информация что сейчас Юнити оперирует другим представлением?

(олсо поддержка на уровне процессора реализована, в случаях когда это не так, то идёт программная эмуляция)

Как я писал выше стандарт IEEE 754 дает возможность расчета Float на разных машинах с абсолютно одинаковой точностью,если Unity использует только его почему расчет Float на разных процессорах дает результаты отличные друг от друга? Эти данные я прочитал где то на официальном форуме юнити. Там ребята делали RTS сетевую. Друг другу через сервер они передавали только ввод,и симуляция игры шла у каждого на своей машине по отдельности. Они заметили, что позиции их юнитов после большого количества передвижений отличаются друг от друга. Копаясь в коде они пришли к выводу что виновато то самое число с плавающей точкой float,когда на разных процессорах шел расчет погрешность постепенно возрастала из за большого колличества умножений-делений-вычитаний float.

По поводу программной эмуляции, если ее реализовать расчет float будет осуществляться в десятки раз медленее чем если расчет будет идти на аппаратном уровне.

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

SBJoker 02.04.2013 12:51

Ответ: Стандарт процессора IEEE 754
 
Это всё понятно, но процессоры считают так как реализован их FPU. Некоторые языки позволяют использовать программную поддержку стандарта если он не поддерживается процессором. Однако производительность таких расчётов сильно падает. Заставить процессор работать с данными которые он не поддерживает невозможно. В этом вся суть FPU, он заранее спроектирован физически под определенный стандарт(ы).

А ребятки с RTS дети несмышленые, передавать нужно время от времени корректирующие данные в абсолютных единицах. Симуляцию клиент отрабатывает сам а сервер лишь корректирует состояние объектов во времени.

Лучшим решением будет использование чисел двойной точности если важен точный результат на любой платформе.

jimon 02.04.2013 13:27

Ответ: Стандарт процессора IEEE 754
 
используй реализацию float с фиксированной запятой на базе int, так делают когда нужно обеспечить одинаковый результат во всех средах исполнения, и так сделаны большинство онлайн игр

IEEE 754 ничего тебе не даст, потому что всё и так на нем работает

Fockerian 02.04.2013 14:26

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

Сообщение от SBJoker (Сообщение 256149)

А ребятки с RTS дети несмышленые, передавать нужно время от времени корректирующие данные в абсолютных единицах. Симуляцию клиент отрабатывает сам а сервер лишь корректирует состояние объектов во времени.

При синхронизации 8000 юнитов не хватит ширины канала интернет соеденения.

Мне нужно чтобы можно было пользоваться полным функционалом програмирования на Unity, а там почти все на float. Я читал, что супрем командер сделали с использованием float благодаря тому,что задействовали стандарт IEEE 754.

IamNoExist 02.04.2013 14:37

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

Сообщение от jimon (Сообщение 256151)
используй реализацию float с фиксированной запятой на базе int, так делают когда нужно обеспечить одинаковый результат во всех средах исполнения, и так сделаны большинство онлайн игр

Большинство, но не все, например Defcon и Supreme Commander используют именно float заставляя FPU использовать стандарт IEEE 754.

Смысл в том, чтобы стандартные функции Unity могли отрабатывать с float одинаково на каждой машине, а не переписывать всю арифметику для работы с фиксированной запятой.

Цитата:

Сообщение от jimon (Сообщение 256151)
IEEE 754 ничего тебе не даст, потому что всё и так на нем работает

Тоесть выходит что вычисления будут и так одинаковыми на любом процессоре?

jimon 02.04.2013 15:48

Ответ: Стандарт процессора IEEE 754
 
их просто два : IEEE 754-1985 и IEEE 754-2008

Цитата:

The IEEE 754-1985 allowed many variations in implementations (such as the encoding of some values and the detection of certain exceptions). IEEE 754-2008 has tightened up many of these, but a few variations still remain (especially for binary formats). The reproducibility clause recommends that language standards should provide a means to write reproducible programs (i.e., programs that will produce the same result in all implementations of a language), and describes what needs to be done to achieve reproducible results.
собственно сам стандарт не подразумевает что результаты вычислений будут одинаковыми на любом вычислителе, так что забейте


[ultra_trollmode]
вы же юнити девелоперы на c# или еще чего там, извините, а вы не ох*ели такие вопросы задавать ? еще не сделали плагина в сторе лол ?

пишите на c++ и будет вам счастье =)
[/ultra_trollmode]

Fockerian 02.04.2013 17:43

Ответ: Стандарт процессора IEEE 754
 
Ну как тогда люди делают RTS сетевые при расчете float аппаратно?

pax 02.04.2013 17:48

Ответ: Стандарт процессора IEEE 754
 
RTS это же поинт энд клик - щелкнул по цели, передал координаты. Нахрен передавать управление?

Fockerian 02.04.2013 20:27

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

Сообщение от pax (Сообщение 256171)
RTS это же поинт энд клик - щелкнул по цели, передал координаты. Нахрен передавать управление?

Вы представляете что такое передать по сети кординаты 8000 юнитов 8 игрокам?

pax 02.04.2013 20:33

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

Сообщение от Fockerian (Сообщение 256177)
Вы представляете что такое передать по сети кординаты 8000 юнитов 8 игрокам?

Такой алгоритм:
1. Инициализация - передача всем игрокам координат всех юнитов игроков.
2. Выделение юнита мышкой.
3. Указание юниту цели (клик мышкой) - координат (цели) и передача этих координат для этого юнита по сети.
4. профит


UPD: вы еще скажите что у вас на каждом компьютере игра с одинаковой скоростью работает чтобы считать смещения и суммировать.

Fockerian 02.04.2013 21:17

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

Сообщение от pax (Сообщение 256179)
Такой алгоритм:
1. Инициализация - передача всем игрокам координат всех юнитов игроков.
2. Выделение юнита мышкой.
3. Указание юниту цели (клик мышкой) - координат (цели) и передача этих координат для этого юнита по сети.
4. профит


UPD: вы еще скажите что у вас на каждом компьютере игра с одинаковой скоростью работает чтобы считать смещения и суммировать.


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

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# рулит.

Nex 03.04.2013 12:01

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

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

Так работали старые сетевые игры (c&c, submarine titans и тд.) и в этих играх есть забавный "бонус" - если кто то залагает хоть на чуть чуть, то сразу всех появится сообщение с рассинхронизацией и будет "давай досвидания, создавай игру по новой".

SBJoker 03.04.2013 12:15

Ответ: Стандарт процессора IEEE 754
 
Автор ещё появится когда выяснится что даже добившись своего рассинхронизация неизбежно наступает.

Nex 03.04.2013 15:08

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

Сообщение от SBJoker (Сообщение 256221)
Автор ещё появится когда выяснится что даже добившись своего рассинхронизация неизбежно наступает.

Автор даже до этого не дойдет. :)

IamNoExist 04.04.2013 08:43

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

Сообщение от SBJoker (Сообщение 256221)
Автор ещё появится когда выяснится что даже добившись своего рассинхронизация неизбежно наступает.

Цитата:

Сообщение от Nex (Сообщение 256229)
Автор даже до этого не дойдет. :)

У вас на форуме все любят тешить свое самолюбие подобным оффтопом? (Господи, кто то еще эти комментарии отметил как полезные, бред...)
А мне то говорили что тут мол форум профессионалов.

Цитата:

Сообщение от Nex (Сообщение 256220)
Так работали старые сетевые игры (c&c, submarine titans и тд.) и в этих играх есть забавный "бонус" - если кто то залагает хоть на чуть чуть, то сразу всех появится сообщение с рассинхронизацией и будет "давай досвидания, создавай игру по новой".

А современные RTS с тысячами юнитов на каждой стороне как по вашему работают? Старые успешные технологии имеют свойство развиваться, слышали подобную теорию?

pax 04.04.2013 12:26

Ответ: Стандарт процессора IEEE 754
 
Я не играю в РТС, но если бы было такое количество юнитов, то наверняка ими надо было управлять группами, а не каждым по отдельности.

SBJoker 04.04.2013 13:41

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

Сообщение от IamNoExist (Сообщение 256279)
У вас на форуме все любят тешить свое самолюбие подобным оффтопом? (Господи, кто то еще эти комментарии отметил как полезные, бред...)
А мне то говорили что тут мол форум профессионалов.


А современные RTS с тысячами юнитов на каждой стороне как по вашему работают? Старые успешные технологии имеют свойство развиваться, слышали подобную теорию?

Много написал но потом текст пропал, потому коротко:

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

Признаком профессионализма является списывать просчёты архитектуры приложения на несоответствие стандартам железа? Настоящие профессионалы.

IamNoExist 04.04.2013 15:32

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

Сообщение от SBJoker (Сообщение 256285)
Тут не бюро добрых услуг, ни кто не обязан прислуживать ни кому.
Так что ваши требования оставьте для тех сервисов где вы платите, а тут всё исключительно добровольно.

Какие еще требования? Вас кто то заставляет помогать или прислуживать? По моему у вас паранойя.

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

Цитата:

Сообщение от SBJoker (Сообщение 256285)
Признаком профессионализма является списывать просчёты архитектуры приложения на несоответствие стандартам железа? Настоящие профессионалы.

Ну так предложите что-нибудь стоящее ... хотя нет, стойте это же наверное будет прислуживанием, так что не нужно.

Цитата:

Сообщение от pax (Сообщение 256282)
Я не играю в РТС, но если бы было такое количество юнитов, то наверняка ими надо было управлять группами, а не каждым по отдельности.

Ну ок, допустим, чем по вашему является "группа" и какие она должна хранить данные?

jimon 04.04.2013 16:16

Ответ: Стандарт процессора IEEE 754
 
вам сказали что на C# такое нельзя сделать, какие еще вопросы ?

IamNoExist 04.04.2013 16:31

Ответ: Стандарт процессора IEEE 754
 
Вопросов нет, тему можно закрывать.

Fockerian 04.04.2013 21:09

Ответ: Стандарт процессора IEEE 754
 
Да я разобрался как перевести на этот стандарт и добиться синхронизации float-ов, тему можно сносить.

St_AnGer 04.04.2013 22:09

Ответ: Стандарт процессора IEEE 754
 
Поделись с народом, вдруг когда то кому то пригодится.

Reizel 04.04.2013 22:23

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

Fockerian 05.04.2013 00:05

Ответ: Стандарт процессора IEEE 754
 
http://msdn.microsoft.com/ru-ru/libr...em.single.aspx

seaman 05.04.2013 01:45

Ответ: Стандарт процессора IEEE 754
 
Собственно - зачем Вы ссылку на МСДН привели то? Ну Вам же с самого начала говорили, что float в c# согласно документации микрософт удовлетворяет этому стандарту. Вы хотите сказать, что "разобрался как перевести на этот стандарт" - это значит просто использовать всроенные типы?
PS: если непонятно float в .NET представлена именно как Single:
http://msdn.microsoft.com/ru-ru/library/b1e65aza.aspx
т.е. это одно и тоже.

pax 05.04.2013 01:47

Ответ: Стандарт процессора IEEE 754
 
float это псевдоним Single

Fockerian 05.04.2013 08:58

Ответ: Стандарт процессора IEEE 754
 
Тип Single соответствует стандарту IEC 60559:1989 (IEEE 754), описывающему правила двоичной арифметики с плавающей запятой.

h1dd3n 05.04.2013 09:00

Ответ: Стандарт процессора IEEE 754
 
float тоже. ведь это одно и то же.

seaman 05.04.2013 11:55

Ответ: Стандарт процессора IEEE 754
 
Четыре страницы обсуждения в никуда. Топикастер так и не понял, что вопроса и не было.

Nex 05.04.2013 12:28

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

Сообщение от IamNoExist (Сообщение 256279)
А современные RTS с тысячами юнитов на каждой стороне как по вашему работают?

Сейчас все обрабатывается на сервере сколько бы юнитов не было в игре и нет никаких просчетов на клиенте.

Fockerian 05.04.2013 14:36

Цитата:

Сообщение от seaman (Сообщение 256338)
Четыре страницы обсуждения в никуда. Топикастер так и не понял, что вопроса и не было.


Вот именно что никуда. Флудерасты одни. Понимаю Unity3d.ru. Спросил? ответили. Если никто не знают никто не ответит. А тут лишь бы языком почесать. Это к тебе тоже кстте относится

Цитата:

Сообщение от Nex (Сообщение 256340)
Сейчас все обрабатывается на сервере сколько бы юнитов не было в игре и нет никаких просчетов на клиенте.

Я бы тебе бы объяснил,но боюсь для тебя это будет бесполезно. Иди пиво попей. А потом об стену убейся,пожалуйста.

SBJoker 05.04.2013 14:56

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

Сообщение от Fockerian (Сообщение 256351)
Я бы тебе бы объяснил,но боюсь для тебя это будет бесполезно. Иди пиво попей. А потом об стену убейся,пожалуйста.

Я даже не сомневался что к этому придёт, неадекватов сразу видно.

Что же вы, милейший, оскорблять то начали, ведь вам никто ничего подобного не писал. Или в вас интернет вселяет ложное чувство защищенности?

Nex 05.04.2013 15:33

Ответ: Стандарт процессора IEEE 754
 
Товарищ из тех кто создает темы типа "Создаю мега ммо ртс/рпгэ/и тэдэ на 8000 юнитов!!!" и на этом все заканчивается. Так же агрится когда ему указывают на его же ошибки либо говорят что то, что по его мнению и быть не может. Предположительно все это из за черезчур высокой самооценки что в свою очередь возникает от безделья.

Цитата:

Иди пиво попей
Алкоголь не пью и сигареты не курю.

Цитата:

Понимаю Unity3d.ru. Спросил? ответили. Если никто не знают никто не ответит. А тут лишь бы языком почесать.
Предлагаю и дальше сидеть на Unity3d.ru там же все такие хорошие и языком попусту не чешут.

Fockerian 05.04.2013 15:51

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

Сообщение от Nex (Сообщение 256355)
Алкоголь не пью и сигареты не курю.

Дата рождения:
14 August 1990
Возраст:
22
Биография:
ы
Местоположение:
Владивосток
Интересы:
Блятз, пиво и т.д.


Без комментариев.

Nex 05.04.2013 16:18

Ответ: Стандарт процессора IEEE 754
 
А ты не подумал, что я профиль заполнял при регистрации (13.09.2008 )?. :crazy:

HolyDel 05.04.2013 16:31

Ответ: Стандарт процессора IEEE 754
 
ребят, давайте жить дружно.

вот вы написали про Single. вы им тупо заменили все расчеты на float? и это помогло? (по идее это не должно было помочь, ибо float это лишь псевдоним Single). И у вас в игре не используется рандом судя по всему?

Fockerian 05.04.2013 23:23

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

Сообщение от HolyDel (Сообщение 256360)
ребят, давайте жить дружно.

вот вы написали про Single. вы им тупо заменили все расчеты на float? и это помогло? (по идее это не должно было помочь, ибо float это лишь псевдоним Single). И у вас в игре не используется рандом судя по всему?

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

jimon 05.04.2013 23:36

Ответ: Стандарт процессора IEEE 754
 
как я вижу всем пофиг на то что сам стандарт не гарантирует одинаковое поведение на всех машинах + микрософт сам не гарантирует одинаковое поведение на всех машинах =)

HolyDel 05.04.2013 23:39

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

using System;

namespace ConsoleApplication2
{
    class Program
    {
        static float FooFloat(float a)
        {
            return a * 42;
        }

        static Single FooSingle(Single a)
        {
            return a * 42;
        }

        static void Main(string[] args)
        {
            float a = FooFloat(10);
            float b = FooSingle(10);
        }
    }
}

и теперь внимания, IL код FooFloat:

Код:

.method private hidebysig static float32
        FooFloat(float32 a) cil managed
{
  // Code size      8 (0x8)
  .maxstack  8
  IL_0000:  ldarg.0
  IL_0001:  ldc.r4    42.
  IL_0006:  mul
  IL_0007:  ret
} // end of method Program::FooFloat

FooSingle:
Код:

.method private hidebysig static float32
        FooSingle(float32 a) cil managed
{
  // Code size      8 (0x8)
  .maxstack  8
  IL_0000:  ldarg.0
  IL_0001:  ldc.r4    42.
  IL_0006:  mul
  IL_0007:  ret
} // end of method Program::FooSingle

IL код идентичен. функции выполняю одно и то-же. ибо, как говорилось раньше, Single это псевдоним float. Т.е. идея, которою тебе предложили, крайне неадекватна.

адекватную идею кидал джимон. решайте все на типах с фиксированной точкой.
например вот, классик:
http://stackoverflow.com/questions/6...oint-math-in-c

сам не проверял, поэтому работоспособность не гарантирую.

Fockerian 06.04.2013 12:42

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

Сообщение от HolyDel (Сообщение 256386)
Код:

using System;

namespace ConsoleApplication2
{
    class Program
    {
        static float FooFloat(float a)
        {
            return a * 42;
        }

        static Single FooSingle(Single a)
        {
            return a * 42;
        }

        static void Main(string[] args)
        {
            float a = FooFloat(10);
            float b = FooSingle(10);
        }
    }
}

и теперь внимания, IL код FooFloat:

Код:

.method private hidebysig static float32
        FooFloat(float32 a) cil managed
{
  // Code size      8 (0x8)
  .maxstack  8
  IL_0000:  ldarg.0
  IL_0001:  ldc.r4    42.
  IL_0006:  mul
  IL_0007:  ret
} // end of method Program::FooFloat

FooSingle:
Код:

.method private hidebysig static float32
        FooSingle(float32 a) cil managed
{
  // Code size      8 (0x8)
  .maxstack  8
  IL_0000:  ldarg.0
  IL_0001:  ldc.r4    42.
  IL_0006:  mul
  IL_0007:  ret
} // end of method Program::FooSingle

IL код идентичен. функции выполняю одно и то-же. ибо, как говорилось раньше, Single это псевдоним float. Т.е. идея, которою тебе предложили, крайне неадекватна.

адекватную идею кидал джимон. решайте все на типах с фиксированной точкой.
например вот, классик:
http://stackoverflow.com/questions/6...oint-math-in-c

сам не проверял, поэтому работоспособность не гарантирую.

Возможно вы правы! В любом случае спасибо за ссылку. Она крайне полезна.

Будем думать дальше... МОжет в итоге придется и на интах переписываать все.


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

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