Comments 11
Очень интересно читать про механику старых игр и видеть объяснение и принцип работы особенностей которые подмечал когда сам в них играл несколько лет назад.
+6
С похожими проблемами сталкивались разработчики Factorio — тоже решили всё полной детерминизацией мира, в результате чего выловили кучу ошибок в виде немного разных результатов float на 32/64бит и разных платформах. Как раз таки ссылались на эту статью в блоге, но в оригинале руки не до шли прочитать.
В общем, спасибо за перевод, добавил в закладки)
В общем, спасибо за перевод, добавил в закладки)
+9
Читал что в старкрафте или варкрафте вся математика была реализована в коде не используя сопроцессор как раз из за разного округления на разных процессорах.
+2
По идее, сопроцессоры должны строго следовать стандарту IEEE работы с плавающей точкой. Стандарт очень строгий. Там расхождения не допускаются ни в одном бите.
Может быть, чтобы просто работало как с сопроцессором, так и без?
+1
Или, возможно, чтобы разные сборки клиента были детерминированными. При изменении кода и перекомпиляции компилятор может поменять последовательность команд, и это может немного изменить результат из-за разного пути накопления ошибки.
+1
А на практике расползаются вычисления. Особенно если это мобильные устройства, на разном железе. Накапливаются ошибки округления, и через время юнити на разных устройствах начинают уползать в разные края карты. Сею предположить — особенности реализации компиляторов на разных платформах.
0
UFO just landed and posted this here
UFO just landed and posted this here
Много таких игр было. Еще Doom 2, Duke Nukem 3D.
+2
Помнится в StarCraft-е быстрая перемотка записи меняла исход игры при игре с ботами.
+1
Sign up to leave a comment.
Сетевой код Age of Empires: 1500 лучников на модем 28,8 кбит/с