Костыли и пиксели #8

Костыли и пиксели #8

В 2002 году The Elder Scrolls III: Morrowind стала хитом не только на ПК, но и на первой консоли Xbox. Игроки были в восторге от огромного открытого мира. Но за стабильной работой игры стоял один из самых радикальных и наглых костылей.

Оригинальный Xbox имел всего 64 мегабайта оперативной памяти. Morrowind была слишком сложной и массивной игрой для такого железа. Она постоянно отслеживала положение тысяч предметов: если вы выкинули вилку на другом конце карты, игра обязана была помнить, где она лежит.

Из-за этого программисты Bethesda столкнулись с фатальной проблемой — утечками памяти. Чем дольше вы играли и чем больше локаций посещали, тем сильнее забивалась оперативная память консоли. В какой-то момент Xbox просто "захлебывался", и игра намертво зависала. Найти и исправить все утечки памяти в коде такого гигантского открытого мира до релиза было физически невозможно.

Костыли и пиксели #8

Чтобы спасти игру, команда Тодда Говарда пошла на хитрость.

Они написали скрипт, который постоянно мониторил свободную оперативную память Xbox. Когда игра понимала, что память почти забита (оставалось критически мало мегабайт) и консоль вот-вот зависнет, она ждала удобного момента — когда игрок решит перейти в новую локацию и на экране появится надпись "Загрузка". В этот момент игра отправляла железу Xbox системную команду на жесткую аппаратную перезагрузку.

Костыли и пиксели #8

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

2
1
8 комментариев