Райан Мичели, преданный любитель видеоигр, начал амбициозное предприятие по расширению возможностей Halo 2. Вдохновленный переоснащенной консолью Xbox друга, которая похвасталась внушительным разгоном, улучшением оперативной памяти, хаками BIOS и заменой процессора, Мичели принял вызов установить максимальное разрешение игры. Его целью было поднять его с существующих 480p до потрясающей красоты изображения в 720p или даже 1080p. С решимостью и находчивостью Мичели принялся за этот вызов.
Для начала Мичели сосредоточился на увеличении размера буферов кадров DirectX. Однако это изменение привело к графическим дефектам и ошибкам в рендеринге. Не растроившись, он погрузился глубже в механику игры, обнаружив, что Xbox имел ограничение на выборку только четырех текстур на проход шейдера. Чтобы преодолеть это ограничение и позволить выборку более четырех текстур, Мичели должен был создать буфер размером с разрешение рендера. К сожалению, это привело к аварийному завершению работы из-за нехватки памяти, даже после добавления дополнительных 64 МБ ОЗУ к Xbox.
Мичели не собирался отступать перед вызовом. Он разработал новый инструмент под названием XboxImageGrabber для идентификации того, где и кем память была выделена. Изучая ситуацию, он определил, что аллокатор памяти в Halo 2 не использовал расширенную оперативную память в полной мере. Чтобы исправить это, он патчил аллокатор для работы с двумя отдельными блобами памяти вместо одного непрерывного выделения. Кроме того, он настроил ядро для разрешения выделения памяти, которую могла бы использовать GPU в верхних 64 МБ.
Продолжая свое усилие улучшить производительность игры, он выявил местом узкое место очередь смены, а не GPU или ЦП. Внедрив третий буфер кадра, он увеличил среднее количество кадров в секунду на 10%, и с небольшим разгоном GPU игра приблизилась к практически плавным 30 кадрам в секунду. Тщательная обратная разработка и усилия по отладке Мичели минимизировали появление эффекта «всплывания», который мучил оригинальную игру.
Триумф Мичели внушает благоговение и требовал бесчисленных часов тяжелого труда и настойчивости. Код патча удобно доступен на Github для тех, кто желает испытать улучшенный Halo 2. Обратите внимание на удивительное преобразование в видео ниже!
Если вам еще хочется больше впечатлений от игры Halo, почему бы не пойти дальше и воплотить в жизнь знаменитую боевую винтовку собственными руками? Погрузитесь в ультимативный фанатский проект и погрузитесь в мир Halo как никогда ранее.