TGViewer
GameDev: разработка игр GameDev: разработка игр @make_game · 7.63K subscribers
Post #2040 1.12K
Порт движка ломается незаметно, но записанные демки ловят это бесплатно

Переносите движок на другой язык, и сложнее всего доказать, что геймплей остался прежним. Инженер перевёл doomgeneric на Rust утилитой c2rust: 73 095 строк за 23,2 секунды. Сам перевод занял секунды, дольше всего шла проверка.

Первый гейт — записи демок. Каждое игровое решение DOOM считает в фиксированной точке, поэтому одно расхождение рассинхронизирует воспроизведение: счётчик тиков перестаёт совпадать с записью.

Второй гейт: хеш каждого кадра, который движок отдаёт на экран. Из 11 113 кадров разошёлся один. Но контрольный прогон оригинального C-бинарника против самого себя дал то же расхождение на том же пикселе: DOOM читает один неинициализированный пиксель памяти, и перевод это повторил.

Отсюда приём: сначала прогоните эталон против эталона, иначе шум собственной сборки уедет в отчёт как чужой баг.
  • ⚡ 1
  • ❤ 1
More from @make_game
  1. Sep 20, 2026Как собрать редактируемую 2D-карту в Unity с Marching Squares Туториал начинает с сетки яч…
  2. Sep 20, 2026Как пространственное разбиение ускоряет поиск соседей в игровом мире В стратегии реального…
  3. Sep 20, 2026Как построить кубическую сферу в Unity без скопления вершин у полюсов У обычной UV-сферы в…
  4. Sep 19, 2026Зачем игровому движку очередь событий Прямой вызов playSound() блокирует меню, пока аудиод…
  5. Sep 19, 2026Как разделить код теней в собственном конвейере рендеринга Unity Custom SRP 7.1.0 для Unit…
  6. Sep 19, 2026Как численное интегрирование двигает объекты в игровой физике Физический цикл не вычисляет…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →