Источник:
Подобные хитрости использовались во многих играх того времени: других вариантов адекватно отобразить достаточно сложные 3D-объекты просто не было. Написание платформозависимого, но быстрого кода, использование двухмерных элементов везде, где возможно и всяческие уловки позволяли добиться динамичного геймплея и неплохой картинки, не прибегая к аппаратному ускорению. И продолжалось это аж до самого 1996 года.
Первые спецэффекты
Достаточно простой в визуальном плане Wolfenstein 3D уже содержал первые наметки на применение спецэффектов.
Источник:
Конечно, они были реализованы грубо, в виде перемещающихся по экрану двухмерных спрайтов: свет от каждой люстры был всего-навсего текстурой на полу. Куда интереснее было смотреть на первый DOOM, вышедший в 1993. Он оставался все таким же псевдотрехмерным: в игре были лифты, ступени, подъемы и спуски, в том числе интерактивные, но на самом деле уровень был плоский, и вы не найдете ни одного места в игре, где одна комната располагалась бы над другой. Куда важнее была проработка артов и первые зачатки динамического освещения. Выстрелы освещали вспышками окружающее пространство. В зависимости от окружения и уровня менялась тональность тех или иных объектов.
Источник:
Еще дальше эффекты освещения ушли в DOOM 2 (1994): там вы могли встретить по-настоящему темные комнаты, которые менялись при открытии двери в освещенное пространство и на мгновение подсвечивались при выстрелах. В остальном же даже продвинутый 2.5D-движок Duke Nukem 3D в 1996 году использовал примерно те же спецэффекты: спрайтовые арты там, где они выглядели лучше, простенькие 3D-модели в мире, базовое освещение и затенение. Вместе с тем в Duke Nukem была куда более продвинутая схему отрисовки уровней, что позволило разработчикам создать вагонетки, лифты, разрушаемые стены и другие новшества, которые были невозможны в играх id Software того времени.
Источник:
К будущему наперегонки
Представьте себе рынок консолей лет десять назад: есть Nintendo с ее странными штуками, сравнительно свежие PS3 и Xbox 360, уходящие на покой PS2 и первый Xbox. А еще PC со старыми карточками на DirectX 9 и новым поколением железа с поддержкой DirectX 10. У всех разная архитектура, вычислительные возможности, инструменты разработки. В 90-е весь этот бардак творился на одном только рынке 3D-ускорителей и их API, которые требовалось учитывать при разработке игр и софта!
У S3 был S3d, SGL использовала PowerVR (живая и поныне, кстати, но в мобильниках), NVIDIA — собственную nvlib, ATI — C interface и так далее. Да, отдельные реализации (или их элементы) были хороши и имели уникальные фичи, которых не было у конкурентов. Аппаратный антиалиасинг (сглаживание), поддержка высоких разрешений и полноцветной картинки у всех были реализованы по-своему, что выливалось в соответствующие проблемы для разработки софта.
При таком-то зоопарке конкурирующих технологий ни о каком активном развитии индустрии и речи идти не могло. С одной стороны, агрессивная конкуренция и борьба за рынок, с другой — давление открытых технологий в лице OpenGL и потихоньку растущего детища Microsoft. Неудивительно, что проприетарные и завязанные на конкретную железку варианты начали потихоньку умирать, а их создатели — уступать интеллектуальные права на разработку своим конкурентам.
OpenGL и DirectX
Войну OpenGL негласно объявила компания Microsoft, не в последнюю очередь этому способствовал выход Windows 95.
Источник:
Вот суть проблемы вкратце. DOS позволяла общаться с железом напрямую, что, учитывая мощности железа тех времен было удобно для разработчиков игр. Неудобство доставляли вышеописанные зоопарки из железа и софта. В Windows 95 общение с железом прибрала к рукам система: да, интерфейс и удобство решали, но производительность графических операций сильно упала, а терять рынок игр (плавно переползавших с 16-битных консолей на ПК) не хотелось. Так родился DirectX. Простенький, несуразный, во многом отстающий в развитии от других API, но зато свой и родной.
А на OpenGL редмондцы, что называется забили и особо не парились над ее внедрением в Windows: основной идеей было переманивание пользователей профессиональных САПР, необходимый минимум для работы софта реализовали, а остальное Microsoft не волновало. Масла в огонь подлил отказ в лицензировании мини-драйвера OpenGL для Windows 95. SGI, создатель OpenGL, отчаиваться не стала и выпустила полный драйвер, который позволял не только производить растеризацию, но и работать с базовыми 3D-функциями: трансформацией и освещением, чего у DirectX не было.
Спустя несколько месяцев случился фэйл: вышли первые видеокарты с аппаратной реализацией некоторых трехмерных функций, которые с самого начала были заложены в OpenGL 1.0 — а DirectX умел только 2D-ускорение. Такое положение дел не устраивало создателей Windows, и те быстро нашли финансовые ресурсы и подходящую для покупки компанию. Ей оказалась RenderMorphics, а программный продукт Reality Labs API стал ядром для Direct3D. Кое-какие наработки были включены из совместного с 3Dfx проекта Talisman, который применялся в Glide API и DirectX для вывода текстур по частям. Все вместе это худо-бедно, но работало: производительность 3D в играх под Windows вплотную приблизилась к написанию нативного кода, который использовался в DOS.
Проблем у DirectX хватало: отставание от OpenGL по части фич вылилось в спешку при разработке и интеграции, в результате разработчикам игр пришлось терпеть отвратительные инструменты для разработки, нечитабельный код и всякого рода глюки.