Разработчик Age of Empires подтвердил, что игра была написана на низкоуровневом языке ассемблера для ускорения рендеринга

Один из основателей Ensemble Studios Мэтт Притчард, который был ведущим программистом серии Age of Empires с самого начала, прокомментировал вопрос, действительно ли оригинальная стратегия была написана на языке ассемблера.

Думаю, я могу прояснить, так как именно я написал весь использованный в Age of Empires и Age of Kings код на ассемблере x86 вместе со многими другими частями этих игр. Всего было написано около 13000 строк кода на 32-битном ассемблере.

Притчард рассказал, что подавляющее большинство этого кода использовалось в "движке рендеринга", который компилировался в .obj-файл Microsoft Macro Assembler 6.1 и в некоторых случаях Visual C++. Проще говоря, это был чрезвычайно эффективный способ отрисовки спрайтов в игре, по оценке Притчарда, примерно в 10 раз быстрее, чем в стандартных реализациях на C++.

Движок рендеринга AoE заметно опережал конкурентов вроде StarCraft, что объясняет, почему разрешение по умолчанию "из коробки" в AoE составляло 800 на 600, тогда как почти у всех наших конкурентов было 640 на 480. Мы могли прокручивать экран и заполнять его спрайтами так же быстро или быстрее, хотя у нас было примерно вдвое больше пикселей в игровой области.

Код на ассемблере оставался в использовании даже ко времени выхода HD-издания Age of Kings, но Притчард переписал ассемблерные функции на C++ для Definitive Edition, поскольку это 64-битные приложения, а значительно улучшенные наборы регистров и оптимизации компилятора сделали его излишним. Кроме того, рендеринг спрайтов в Definitive Editions многопоточный и использует до 4 ядер только для этой задачи.

Часть причин, по которым потребовался такой обходной путь, заключаются в том, что обе игры разрабатывались в то время, когда отдельные 3D GPU были редкими: "передовым считалось 2D с отдельной 3D-картой вроде Voodoo 1 и 2" — говорит Притчард. Он подробно рассказал о технических ограничениях того времени, отмечая, что в процессоре Pentium 166, который использовали большинство разработчиков Ensemble, "было всего 16Кб кэш-памяти... ВСЕГО".

... сейчас вы работаете на ПК с большим объёмом кэш-памяти прямо на процессоре, чем было ВСЕГО у ПК, на котором я разрабатывал AoE.

У Притчарда богатая карьера, но, очевидно, у него особая привязанность к Age of Empires. Он упоминает, как появилось HD-издание (не путать с Definitive Edition).

HD-издание стало результатом моих многолетних попыток заинтересовать кого-то в Microsoft, а контракт с Hidden Path (где я работал в то время над CS:GO для своего предыдущего работодателя Valve) был довольно скромным.

Microsoft не думала, что полностью цифровая версия 2D-игры 1990-х (CD-ROM версия оригинальной игры всё ещё была на полках магазинов буквально за год-два до этого) вызовет большой интерес. HD-издание было разработано отличной командой из HPE с крошечным бюджетом (~5 человек, чуть меньше года), так что изменения ограничились областью "абсолютно необходимого", а не более амбициозных Definitive Editions.

Есть также забавные подробности о различных консольных портах игр.

Ensemble не имела никакого отношения к порту на PS2. Microsoft вела переговоры самостоятельно и предоставила им код и ассеты на компакт-диске со словами "приступайте". Почти то же самое с портом на Dreamcast, хотя для него я провёл час, рисуя на доске и пытаясь объяснить детали графики инженеру из Konami, который не говорил по-английски, а я не говорил по-японски.

Притчард заканчивает словами:

Мне очень повезло сыграть непропорционально большую роль в этих играх от самого начала их создания в 1996 году до того, как я стал движущей силой их возрождения в 2010-11 годах и до современности, завершив свой путь с ними после выхода Definitive Edition в 2019 году.

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

Больше статей на Shazoo
Тэги: