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

Такие разные компьютерные игры

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

Игры такого рода принято называть казуальными (casual games), т. е. на каждый день (см. «Мир ПК», №7/08, с. 44). Их отличает сравнительная простота написания, к тому же они приносят прибыль и доставляют удовольствие. Нужно лишь придумать эффектную идею — и можно идти покорять мир, сделав лишь сравнительно небольшие вложения.

Как разрабатываются компьютерные игры

Мы специально заговорили о казуальных играх, поскольку именно они открывают для программистов наиболее широкие перспективы, в том числе возможность запрограммировать все с нуля, причем по своему усмотрению и достаточно быстро — от нескольких часов в одиночку вечером перед компьютером до двух-трех месяцев командой из пяти-шести человек. Для этого также применяются технологии различной сложности. Наибольшей известностью пользуются такие из них, как Adobe Flash, Adobe AIR, Silverlight, Microsoft XNA, Microsoft DirectX, Sun Java Swing, OpenGL.

Технологии Microsoft для создания компьютерных игр

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

Microsoft Popfly

Технология Microsoft Popfly позволяет с помощью визуальных компонентов и онлайновых инструментов создавать построенную из готовых «кирпичиков» веб-страницу (mash-up) и игры. Та ее часть, что отвечает за создание игр, называется Microsoft Popfly Game Creator. Продукты, построенные на базе технологии Microsoft Silverlight, делаются в визуальном редакторе и запускаются в браузере. Для их реализации не нужны глубокие знания в программировании, достаточно понимать логику игры и представлять ее, все остальное сделает Popfly Game Creator.

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

Microsoft Silverlight

Эта технология позволяет делать интерактивные веб-приложения. В аспекте онлайновых компьютерных игр она конкурирует с Adobe Flash. Однако в отличие от Popfly, для того чтобы применять технологию Silverlight, нужно быть знакомым с основами программирования, в частности с языком C# и платформой Microsoft .NET. Зато Silverlight обеспечивает большую гибкость при разработке, чем Popfly, и потому, если вы хотите онлайновую казуальную игру с красивой графикой и богатыми возможностями, выбирайте Silverlight.

Microsoft XNA

Продукт XNA в отличие от всех остальных технологий представляет собой единое решение для разработки игр сразу для трех платформ: игровой консоли Xbox 360, персонального компьютера под управлением Windows и музыкального плеера Zune.

Все игры, как правило, пишутся на C#, в связи с чем необходим как минимум базовый уровень знания программирования для работы на платформе Microsoft .NET. Впрочем, допустимо использовать и другие языки платформы .NET (например, F# для описания искусственного интеллекта игры), а также все богатство платформы по работе с Сетью, с базами данных и т.д. XNA позволяет не думать о том, как работать со звуком, музыкой, графикой и т.п. Причем можно создавать как очень простые игры, так и сложные трехмерные экшены. Более детально рассмотрим XNA ниже.

Microsoft DirectX 10.1

DirectX — это набор библиотек, позволяющих работать со звуком, графикой, устройствами ввода при максимально возможной скорости. Однако для применения DirectX требуется знать язык С++. В общем, практически все игры для Windows используют DirectX.

Архитектура компьютерной игры

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

Можно выделить четыре основные составляющие любой компьютерной игры:

  • графика;
  • управление;
  • логика/физика/искусственный интеллект;
  • звук/музыка/ресурсы.

Графика

В технологии XNA существуют компоненты, позволяющие работать с двух- и трехмерной графикой. Можно нарисовать двухмерные изображения (спрайты) в любом графическом редакторе (например, из семейства Microsoft Expression), а трехмерные модели — в программе трехмерного моделирования (3D Studio), после чего экспортировать их и использовать в компьютерной игре. Для отображения на экране трехмерной модели потребуется лишь несколько строк кода, а расчет освещения, прорисовку отдельных графических элементов и накладывание текстур XNA возьмет на себя.

Управление

При создании интерактивной компьютерной игры (т.е. такой, в которой игрок может что-то делать) необходимо уметь работать с различными средствами ввода: клавиатурой, мышью, джойстиком или контроллером Xbox.

Логика/Физика/Искусственный интеллект

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

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

А чтобы добавить логику и искусственный интеллект в XNA, обычно используется язык C#, однако для разработки искусственного интеллекта можно применять и другие языки платформы .NET, например функциональный F#.

Во многих играх (особенно трехмерных), где есть некий игровой мир, возникает необходимость задать для объектов законы поведения в нем, похожие на обычные законы физики. Программирование физически реального мира — задача непростая, и лучше не решать ее самостоятельно, а довериться существующим «движкам», таким как Bullet (http://www.bulletphysics.com) или Newton Game Dynamics (http://www.newtondynamics.com/).

Звук/Музыка/Ресурсы

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

Архитектура XNA

Давайте более подробно рассмотрим внутреннее устройство XNA.

Архитектура XNA

Платформа

В основе XNA Framework лежит привязка к определенной платформе. Это может быть Windows, Xbox 360 или Zune (это устройство не представлено на рисунке, так как официально в России не продается).

Если игра разрабатывается для применения под управлением Windows, то XNA Framework в качестве компонента для работы со звуком, графикой и устройствами ввода использует Microsoft DirectX 9, а как основную платформу для программирования — .NET Framework 3.5. Если же игра делается для Xbox 360, то XNA Framework для работы с графикой, звуком и устройствами ввода использует Xbox Developer Kit, а в качестве основной платформы для программирования — специальную версию .NET Compact Framework.

Core Framework

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

Graphics — работа с 2D- и 3D-графикой;
Audio — работа со звуком, музыкой и трехмерным позиционированием звуков;
Input — работа с устройствами ввода;
Math — реализация различных математических функций (работа с векторами, матрицами и проч.);
Storage — работа с сохраненными играми, настройками игры и т.п.;
Networking — работа с сетью, реализация многопользовательского взаимодействия;
Gamer Services — различные службы, предназначенные для взаимодействия игроков;
Media — работа с видео, картинками и музыкальными файлами.
Extended Framework
Application model — модель создания игры. Когда создается одна игра сразу для нескольких платформ, то можно не задумываться над особенностями ее реализации для каждой из них — XNA сделает это сама.

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

Игры

Используя все перечисленные возможности, вы сможете создавать собственные игры или пользоваться готовыми, предложенными Microsoft. Готовые игры, называющиеся Starter Kits, и представляют собой полностью законченный продукт с исходным кодом и комментариями к нему. Допустимо изменить этот код, если захочется разработать на его основе что-то свое.

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

Первая игра

Если кто-то впервые поставил XNA на свой компьютер, то для того чтобы как можно быстрее создать свою игру, имеет смысл употребить Starter Kits. После установки XNA Game Studio 3.0 нужно зайти в Visual Studio 2008 и указать создание нового проекта. Там будет раздел «XNA Game Studio 3.0», где можно выбрать, например, Marblets Windows Starter Kits. Только предварительно следует убедиться, что на компьютере установлены Starter Kits с сайта http://creators.xna.com/en-US/education/starterkits/.

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


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

Для разработки игр на базе XNA понадобятся определенное знание основ программирования на C# (подойдет также знание Java, C++ или, на худой конец, любого современного императивного языка программирования) и пара инструментов — среда разработки Visual Studio и установленная поверх нее XNA Game Studio. Кстати, весь набор инструментов можно получить бесплатно с сайта Microsoft. А студенты, предъявившие на сайте DreamSpark.ru фотографии студенческого билета или зачетной книжки, получают право скачать не только профессиональную версию Visual Studio 2008 и XNA Game Studio 3.0, но и много другого полезного ПО.

Popfly

Данная технология, предназначенная для начинающих пользователей, дает возможность создавать игры в Web.
Официальный сайт: www.popfly.com

Silverlight

Эта технология подходит для пользователей со стажем: она помогает создавать онлайновые игры.
Официальный сайт: www.silverlight.net

XNA

XNA способна заинтересовать «продвинутых» пользователей и профессионалов, желающих создавать свои игры сразу для несколько платформ.
Официальный сайт: www.xna.com

DirectX 10.1

DirectX — хороший помощник для профессионалов, разрабатывающих современные игры, использующий все возможности аппаратной части компьютеров. Авторам казуальных игр не стоит обращать на нее особого внимания.
Официальный сайт: www.microsoft.com/directx

Ресурсы по XNA

Существует огромное количество различных ресурсов, посвященных XNA, но стоит выделить три основных:
Официальный портал XNA: www.xna.com
Главный русскоязычный портал по XNA: www.xnadev.ru
Видеоуроки по разработке компьютерных игр: www.techdays.ru