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 году.
Я и очень удачлив, что стал частью их создания, и до сих пор тронут всем удовольствием, которое они принесли людям. У меня никогда не было бы такой замечательной карьеры в игровой индустрии без всех поклонников и почитателей этих игр.