JavaScript и работа с детерминизмом с плавающей запятой

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

По сути, насколько я понимаю, целочисленная математика во Flash выполняется путем приведения intк Number, выполнения математических операций, а затем приведения обратно к int. Очевидно, это быстрее, но это означает, что детерминистическая математика невозможна для разных компьютерных архитектур.

Прежде чем я сброшу все свои яйца в корзину JavaScript, я хотел бы задать несколько вопросов.

  1. Есть ли в JavaScript настоящая целочисленная арифметика во всех основных браузерах? Или некоторые браузеры делают вещи с Flash и приводят к float/double для выполнения математики перед возвратом к int?

  2. Делает что-то вродеBigDecimalилиBigNumработать над детерминированной математикой на разных компьютерных архитектурах? Я не возражаю против потери производительности, если это в пределах разумного. Если не,есть ли какая-то библиотека JavaScript с фиксированной точкой, которая решает мою проблему?

  3. Это долгий путь, но существует ли движок 2D-игр HTML5 с детерминированной математикой для таких вещей, как координаты x/y и коллизии? Список игровых движков , мягко говоря, огромен. Мне неловко создавать детерминированный кросс-браузерный движок с нуля, но, возможно, это то, что мне нужно сделать.

ПРИМЕЧАНИЕ. :Изменено с HTML5 на JS в соответствии с ответами. Извиняюсь за недостаток знаний.

5
задан mskfisher 19 July 2012 в 13:25
поделиться