Лучшие компьютерные игры

СОЗДАЁМ ИГРУПАНЕЛЬ ИНСТРУМЕНТОВ

Автор материала:
Дмитрий Белявский
Опубликовано в журнале
«Лучшие компьютерные игры»
№11 (60) ноябрь 2006

Игра чужими руками

Своими руками все делать, конечно, в чем-то правильно. Но разделение труда придумали не вчера, и придумали совершенно по делу — производительность труда резко возросла. Да и применение, скажем, топора неконвенционным способом может резко усложнить жизнь как применяющему, так и всем окружающим.

В компьютерном мире роль курса обучения выполняют SDK — Software Development Kit, тщательно отобранный разработчиком набор примеров. Разумеется, такие примеры тоже могут содержать ошибки — сам натыкался, но в большинстве случаев программировать, отталкиваясь от них, гораздо легче.

Итак, встречайте — DirectX SDK!

Совсем немного истории

Первое время после выхода Windows’95 платформа не пользовалась особой популярностью среди игроделов. И тому были веские причины.

Во-первых, под однозадачный DOS писать было гораздо привычнее — все ресурсы доступны, при желании можно напрямую обращаться к какому угодно устройству, и не надо ожидать конкуренции со стороны других программ — их нет по определению.

86KB

Полистаем. Обратите внимание на группировку примеров.

Во-вторых, было куда труднее добиваться нужной производительности — такой оказалась плата за унификацию интерфейсов доступа. Для решения этой проблемы и был разработан DirectX, изначально ориентированный на разработку игр. Первоначальное название — WinG, на это откровенно намекавшее, уже всеми забыто.

80KB

Увековечим любимый журнал.

Новые версии DirectX выходили с появлением у аппаратуры каких-либо новых возможностей — так, в версии 7 ключевой была поддержка свежевышедшей тогда видеокарты Nvidia GeForce, первой из линейки видеокарт, выполнявших расчет преобразований и освещения моделей самостоятельно. В одной из ближайших версий такой ключевой функциональностью обязательно станет поддержка аппаратных ускорителей игровой физики.

Свежие версии SDK выпускаются раз в несколько месяцев. На момент написания этой статьи последняя выпущена в августе 2006 года, занимает 500 мегабайт (в установленном виде — вдвое больше) и всерьез заставила задуматься мой компьютер при установке. Когда установка кончилась, можно было начинать знакомство.

В этой поставке есть, как видно из меню, и примеры по программированию под Xbox, и некоторые предварительные версии того, что войдет в DirectX 10.

31KB

Я уж не знаю, что это...

В этой статье я расскажу более подробно о примерах работы с трехмерной графикой — скриншоты звуковых программ все-таки не настолько наглядны. Еще данная версия поддерживает как отдельное API работу с различными устройствами ввода типа джойстиков.

34KB

... но треугольник из-под курсора никуда не денется!

Разбираться с примерами удобно по нарастанию сложности — просто инициализация всех необходимых объектов, рисование треугольника, добавление подсветки и текстурирование, наконец, работа с моделями и работа с текстом. Это все не очень интересно. А вот работа с управляющими элементами — гораздо интересней...

А вот и мой любимый пример — как водится, потому, что решение этой задачи попортило мне много крови. Определение, куда мы попали мышкой. Вот, посмотрите: модель, достаточно неудобная для того, чтобы считать ее при выборе параллелепипедом или сферой, — и безошибочно выбранный треугольник!

27KB

Красавец-воин...

Но пора переходить к более сложным примерам. Как все помнят, если увеличивать детализацию — то есть, в первом приближении, количество треугольников в модели, — то можно существенно улучшить (за счет падения производительности, разумеется) представление картинки. И наоборот, когда итоговая картинка имеет размер в несколько пикселей на экране, модель можно упростить — технология Level-Of-Details, LOD.

26KB

... но треугольник из-под курсора никуда не денется!

Какая современная трехмерная игра мыслима без теней! И хотя, в отличие от скриншота, в помещениях все-таки не встречаются самолеты, но пример ShadowMap демонстрирует достаточно эффективную технику их наложения. Правда, эта техника адекватнее всего подходит для того случая, когда ваш персонаж носит с собой фонарик. А вот воин, вполне для помещения адекватный (разве что текстуру можно было бы подобрать более ориентальную), освещен двумя источниками где-то под потолком.

83KB

Кто пустил биплан в помещение?

Впрочем, если отсутствие теней простительно, например, для вампира, то отсутствие анимации скорее всего не простят никому. И вот, пожалуйста, дама гордо шагает в том направлении, которое вы выберете. А если, как сделал я, повернуть ее так, чтобы увидеть спину, то станет видно, что спина украшена логотипом DirectX.

26KB

Песня шагом, шагом...

Как всегда (лет 6 в компьютерном мире — это на данный момент «всегда»), присутствуют примеры на отражение. И — опять как всегда — отражаться окружающему миру приходится в начищенном до блеска чайнике. DirectX 9 позволяет отображать более реалистичные цвета, чем его предшественники.

Одна из проблем, мешающих построить по-настоящему реалистичное изображение на мониторе, — то, что все объекты, вне зависимости от расстояния до них в игровом
96KB

Чайник. Начищенный до блеска чайник.

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

Очень много примеров ориентировано на работу с технологией HDR (High Dynamic
54KB

Тигры (нет, не танки), идущие строем.

Render), перспективной технологией для реалистичного освещения присутствующих в сцене трехмерных моделей.

К сожалению, не все примеры легко адекватно оценить по скриншотам. А еще — к отдельному сожалению тех, чьим видеокартам уже несколько лет, — красоту части примеров оценить вообще не удастся: ме-е-е-едлен-н-н-но!

Примеры, которые мы потеряли

За те несколько лет, которые я наблюдаю за развитием DirectX SDK, состав примеров многократно менялся. Новые примеры появлялись, естественно, вместе с развитием новых технологий. Перестала быть экзотикой всяческая градиентная прозрачность — и нас тут же покинул соответствующий пример. Не очень интересным оказалось текстурирование видеофайлами, хотя какое-то применение для него, безусловно, есть.

Технология HDR: освещенное будущее?

Основная идея технологии HDR — отказ от привычной нам модели RGB с 256 градациями каждого цвета. Предполагается, что модель описывается физическими величинами освещенности и цвета освещения, а соотношение этих величин для изображения должно опять-таки соответствовать соотношению в реальности. Целыми числами при этом обойтись уже не получится: будет видна дискретность изображения, да и одного байта на канал не хватит.

Конечно, нам никуда не деться от ограничений монитора — но кто знает, какими будут эти ограничения лет через 5?

Впрочем, я надеюсь, что в ближайших номерах появится более подробная, чем эта врезка, статья, описывающая технологию HDR.

Я очень скорблю о утрате примера, который хотя и не представлял ничего сложного с точки зрения программирования графики, давал неплохую поведенческую модель стаи голубей. И еще один пример, который я очень люблю, — отображение деревьев как плоской картинки, всегда повернутой лицом к камере: математика там достаточно несложная, но самому ее выводить не очень хочется.

Дано не каждому

57KB

Уже знакомый воин. Источников света можно и побольше, чем два...

Программистам достается гораздо больше всего хорошего: в частности, интегрированный в Visual Studio .NET отладчик эффектов, исходный код всех упомянутых и большого количества неупомянутых примеров и, разумеется, документация. Документация описывает работу как на C++, так и на .NET и Visual Basic. Еще нужно упомянуть неоценимую утилиту, преобразующую код ошибки DirectX во внятное описание. А еще — но это и простым смертным пригодится — утилиты для просмотров файлов трехмерных моделей и эффектов (.x и .fx соответственно).

Художники тоже не в обиде: плагины к Adobe Photoshop, DirectX Extensions for Autodesk 3ds Max и Alias Maya упростят сохранение текстур и трехмерных моделей в форматах, пригодных для работы с DirectX.

И напоследок

Раньше я скептически рассматривал версию о переходе на Vista. Но в августовскую поставку DirectX SDK включили примеры, которые будут работать под этой операционной системой, и только под ней. Судя по скриншотам (к сожалению, в журнал их поместить не получится — слишком маленькие), нас ждут еще невиданные по красоте эффекты.



Назад