Время делать 3D-игры

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

Индустрия разработки 3D–игр одна из самых закрытых IT-областей. Все могут попробовать готовый продукт, но почти никто не раскрывает своих секретов разработок. Известно, что создание игры – это сочетание трехмерного моделирования и языка программирования C++ или С.

Впрочем, уже много лет на рынке появляются конструкторы, позволяющие даже любителям прикоснуться к искусству 3D–игр. Пакет 3D GameStudio (http://www.3dgamestudio.com/) содержит компилятор скриптов (Script Editor), редактор ландшафтов (WED) и редактор моделей (MED) (рис. 1).

pic
Рис. 1. Пакет 3D GameStudio.

В пакет входит несколько шаблонов, в том числе и полноценная гонка. Скомпилировав игру, можно поездить по заброшенной ферме, лесу, горам, а также по дну озера (рис. 2).

pic
Рис. 2. Гонка на ферме и по дну озера.

Если встроенных средств трехмерного моделирования покажется недостаточно, можно использовать привычные инструменты, например 3D Studio Max. Пакет 3D Game Studio поддерживает импорт всех основных графических форматов.

Механизм игры разрабатывается на С-подобном языке, который так и называется С-Script. Впрочем, поддерживается также и C++.

Скачать пробную 30-дневную версию (54 МБ) можно с официального сайта: http://www.conitec.net/english/gstudio/download.php. Приобретение полнофункциональной Pro-версии обойдется в $899 (http://www.conitec.net/english/gstudio/order7.htm).

Для справки. Самой успешной коммерческой игрой, разработанной при помощи «3D Game Studio», стала автогонка «3D Driving Academy» (рис. 3).

pic
Рис. 3. Игра «3D Driving Academy».

Более 200 тысяч ее экземпляров было продано на территории Германии, Франции и Голландии. Примечательно, что над первой версией «3D Driving Academy» работали всего два человека. Они сумели ее сделать всего за 5 месяцев.

Несмотря на продуманный интерфейс, отличную поддержку, наличие примеров и учебных пособий, пакет 3D Game Studio представляет собой новый продукт, который будет нужно осваивать всем разработчикам, пожелавшим заниматься разработкой трехмерных игр. Программисты будут работать с компилятором Script Editor с постоянными сравнениями со своими привычными средами разработки такими как Microsoft Visual Studio. А дизайнеры будут вынуждены приноравливаться к редакторам ландшафтов и моделей, переходя на них с привычных 3D Studio Max и Maya. Словом, всем придется приложить немного усилий для того, чтобы начать работу.

Корпорация Microsoft в очередной раз преподнесла сюрприз своим поклонникам, работающим с платформой .NET. Теперь они могут приступить к разработке трехмерных игр, не покидая привычного интерфейса своей среды Microsoft Visual Studio.NET 2005. Программисты могут просто создать новый проект, а дизайнеры… Дизайнеры могут по-прежнему создавать модели в привычных пакетах, а затем их только экспортировать. Эта новая замечательная возможность, безусловно, заслуживает нашего внимания, поэтому давайте с ней разбираться.

Установка XNA Game Studio 2.0
Пакет XNA Game Studio 2.0 – набор инструментов, предназначенных для разработки трехмерных игр для приставки Xbox 360 и, конечно же, платформы Windows. Он не содержит самостоятельного графического интерфейса – после его установки в наборе проектов Microsoft Visual Studio .NET 2005 добавляются новые шаблоны.

Для справки. Xbox 360 – игровая приставка, выпущенная корпорацией Microsoft в 2005 году. По сути, это компьютер, подключаемый к телевизору или видеомонитору. Он содержит трехъядерный процессор IBM Xenon 3,2 ГГц, 512 МБ RAM, 20/120 Гб HD, видеокарту 10МБ, DVD-ROM.

Для того, чтобы начать работать с XNA Game Studio 2.0, необходимо установить Microsoft Visual Studio .NET 2005. В принципе подойдет и свободно распространяемая среда Microsoft Visual Studio Express Edition 2005 (http://www.microsoft.com/express/2005/wp-content/download/default.aspx), предназначенная для новичков и студентов. Но поскольку это весьма обрезанная версия, лучше использовать полнофункциональную редакцию Microsoft Visual Studio 2005 Professional Edition, тем более что она, как правило, уже есть у разработчиков. Итак, установив полную редакцию, нужно будет выполнить следующие действия:

http://creators.xna.com/Education/newtoxna.aspx

pic

1. Скачать и установить Microsoft Visual Studio 2005 Team Suite Service Pack 1 (431,7 МБ)

pic

После установки сервис-пака дополнительно скачать и установить Visual Studio 2005 Service Pack 1 Update for Windows Vista (28,9 МБ).

2. Скачать и установить Microsoft XNA Game Studio 2.0 (98,6 МБ).

Для создания игр с нуля все готово.

Готовые шаблоны и анатомия проекта
Прежде чем создавать свои игры, хотелось бы оценить, что вообще можно создать с помощью XNA Game Studio. Несколько готовых приложений доступно на официальном сайте, в разделе «Starter Kits»: http://creators.xna.com/Education/StarterKits.aspx. Скачаем и установим игру «Racing Game Windows» (127МБ) (http://creators.xna.com/Downloads/GameStudio2/RacingGameWindows.vsi). Привычно запускаем Visual Studio .NET 2005, выбираем пункт меню «File \ New Project» – в списке проектов мы видим узел XNA Game Studio 2.0, в его списке шаблонов выбираем «Racing Game Windows Starter Kit (2.0)» (рис. 4).

pic
Рис. 4. Шаблон «Racing Game Windows Starter Kit (2.0)».

После создания приложения в окне «Solution Explorer» появляется иерархический набор файлов, из которого состоит вся игра. Разработчики наверняка привыкли видеть в ней структуру сайта или Windows – приложения. Код специфичен, но вполне читабелен – да, это старый добрый C#!(рис. 5).

pic
Рис. 5. Окно «Solution Explorer» и фрагмент листинга.

Отредактировав, например, значение ускорения свободного падения, можно будет получить гонки на Луне. Перейдем непосредственно в папку проекта – здесь мы можем видеть файлы трехмерной графики, экспортированные в текстовый формат «X», звуковые файлы игры в формате» «wav» и элементы оформления в форматах «png» и «tga» (рис. 6).

pic
Рис. 6. Графическое оформление и аудиофайлы.

Изменив любой из этих файлов, мы можем получить собственное оформление. Впрочем, вернемся к Visual Studio 2005. Для того, чтобы окончательно убедиться, что мы делаем не сайт, не стандартное Windows-приложение и даже не форму для Pocket PC, нажмем F5. И немного подождем. Файлы компилируются долго. Наконец, появляется автогонка и наша задача – прийти первыми к финишу (рис. 7).

pic
Рис. 7. Готовое приложение «Racing Game Windows Starter Kit (2.0)».

Управлять автомобилем можно и мышкой, и при помощи стандартных клавиш «WASD». В целом, впечатление остается достаточно хорошим – это конечно не «Need For Speed», но все же довольно неплохо. Конечно, если бы создатели вставили более качественную графику, то дистрибутив был бы на порядок больше. Впрочем, не надо забывать, что это лишь учебный проект, мы сами можем заменить или добавить свою графику. Физика и динамика игры представлены на высоте.

Для справки. Вопрос: что означает XNA? Ответ: ничего не означает, это не сокращение (акроним).

Как научиться делать игры?
Начинать сразу с разбора таких игр, как автогонки, достаточно сложно. Давайте разбираться с маленькими кусочками. На официальном сайте XNA Game Studio переходим в раздел примеров «Samples» (http://creators.xna.com/Education/Samples.aspx), скачиваем относительно небольшие приложения и начинаем их смотреть. В примере «HeightmapCollision» при помощи клавиш-стрелок мы можем управлять шариком, который катится по горному ландшафту. Именно с таким движением мы имеем дело в большинстве бродилок и гонок. Камера освещенности следует за движением (рис. 8).

pic
Рис. 8. Приложение «HeightmapCollision» (975 КБ).

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

pic
Рис. 9. Приложение «Audio3DSample» (719 КБ).

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

В примере «DistortionSample» различные фигуры формируют призрачные контуры на фоне растрового изображения (рис. 10).

pic
Рис. 10. Приложение «DistortionSample» (2,40 МБ).

Фигуру можно вращать при помощи клавиш-стрелок. Этот эффект может использоваться при создании игры «Чужой против Хищника 2: Реквием», когда нужно будет сымитировать невидимую броню хищника. Такую игру еще не выпустили? Тогда нужно поспешить с разработкой – можно успеть!

Горящее кольцо, взрывы, дымовая завеса – все это весьма натурально работает в примере «Particle3DSample» (рис. 11).

pic
Рис. 11. Приложение «Particle3DSample» (385 Кб).

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

Анимация движения вымышленных персонажей, животных и людей всегда была весьма непростым занятием. Мультипликаторы, создатели фильмов и компьютерных игр используют секреты, которые постичь достаточно сложно, несмотря на обилие тематических книг. В примере «SkinningSample» все готово – модель человека анимирована, и мы можем разглядеть ее со всех сторон, вращая фигуру в пространстве (рис. 12).

pic
Рис. 12. Приложение «SkinningSample» (9,45 МБ).

Фактически это готовый персонаж нашей собственной игры. Нам лишь остается изменить лицо и при необходимости немного скорректировать фигуру – скажем, если героем будет девушка.

В примере «SimpleAnimationSample» вся анимация реализована программным путем (рис. 13).

pic
Рис. 13. Приложение «SimpleAnimationSample» (15,1 МБ).

Танк весело крутит гусеницы, поворачивается и озирается носатой башней. Ему действительно не хватает масштабного поля и противников.

Этому же танку можно поездить по горному ландшафту в примере «TankOnAHeightmap» (рис. 14).

pic
Рис. 14. Приложение «TankOnAHeightmap» (16 МБ).

Я долго ездил по горкам – искал шарик из примера «HeightmapCollision» (см. рис. 8). Не нашел.

Динамическая загрузка трехмерных моделей (в форматах «fbx» и «X») представлена в примере «WinFormsContentLoadingSample» (рис. 15).

pic
Рис. 15. Приложение «WinFormsContentLoadingSample» (1,06 МБ).

Этот подход широко используется в трехмерных играх, когда различные уровни загружаются по мере необходимости.

Всего в разделе «Samples» выложено более 40 примеров на момент написания статьи.

Недостаточно примеров? Хочется подробного объяснения, с самого начала, с нуля? С. Горнаков написал замечательную книгу «Разработка игр под Windows в XNA Game Studio Express» (http://www.ozon.ru/context/detail/id/3625862/). В ней рассматриваются методики создания двухмерных и трехмерных игр. С содержанием книги можно познакомиться на официальном сайте автора http://www.gornakov.ru/xnawindows.html, а в продаже имеется также вторая книга ”Разработка игр для приставки Xbox 360 в XNA Game Studio Express” (http://www.gornakov.ru/xbox.html) этого же автора.

XNA Game Studio 2.0 и Visual Studio 2008
А как же уживается новая версия Visual Studio 2008 с этим замечательным пакетом разработки игр? Вообще-то никак. После установки XNA Game Studio 2.0 и учебного примера «Racing Game Windows» поверх имеющихся VS 2005 и VS 2008 в последней, в шаблонах проектов появился одноименный узел, который содержал лишь раздел «My Templates» (рис. 16, сравните с рис. 4).

pic
Рис. 16. Создание проекта в Visual Studio 2008.

На рисунке не случайно выбрана версия .NET Framework 2.0 – как и для версии 3.5, последующая попытка создать проект приводит к ошибке. По-видимому, поддержки VS 2008 следует ожидать в будущих версиях XNA Game Studio.

Ложка дегтя, или За что нужно платить
Выше нигде не отмечалась цена – действительно, а сколько стоит пакет XNA Game Studio 2.0? Самое замечательное, что он совершенно бесплатен для создания игр под Windows. Однако для создания, тестирования и обмена созданными играми для консоли Xbox 360 необходимо вступить в сообщество «XNA Creators Club», стоимость годового членства в котором составляет $99 (полугодового – $49). Более того, игры, разработанные для консоли, не могут быть реализованы на коммерческой основе. По сути, Microsoft создало сообщество любителей разработчиков игр и предоставила им удобные инструменты для работы. Они могут бесплатно обмениваться собственными творениями внутри сети, а годовые взносы корпорация оставляет себе. Что же касается коммерческой разработки игр под Windows – здесь никаких ограничений нет, разработчики могут продавать свои продукты.

Необходимость вступления в сообщество «XNA Creators Club» начинает ощущаться уже на первых страницах официального сайта XNA. Все примеры, которые были приведены выше, были взяты из свободного доступа. Однако для получения доступа к некоторым наиболее интересным приложениям, например «Ship Game» (http://creators.xna.com/Education/StarterKits.aspx), необходимо быть членом клуба.

Ранее, в 2006 году, в планах компании Microsoft была разработка пакета XNA Game Studio Professional. Он должен был быть платным, но, вместе с тем, разработчики бы получили возможность создавать коммерческие игры под любые платформы – как Windows, так и Xbox 360. Это упоминалось в официальных ответах на часто задаваемые вопросы по XNA (http://msdn2.microsoft.com/fr-fr/directx/aa937793(en-us).aspx). Но что-то изменило планы, и в декабре 2007 года была представлена новая версия XNA Game Studio 2.0, которая и описана в настоящей статье. Игры, создаваемые при помощи этой версии, по-прежнему ограничены некоммерческим распространением для консолей Xbox 360.

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

Обсудить на форуме

Orphus system