Обзор популярных игровых движков для разработки 2D и 3D игр, среды разработки и конструкторы компьютерных игр. Основные этапы и концепции разработки игровых программ под платформу Windows. Документация и современные методы управления рабочими группами.
Процесс разработки игр отличается от процесса разработки обычного программного обеспечения, ведь риски, которым подвержен процесс разработки игры, воспринимаются разработчиками как само собой разумеющиеся издержки профессии. Singleplayer, от слов single - один и player - игрок) - рассчитанной на игру одного человека, или многопользовательской - рассчитанной на одновременную игру нескольких человек; а также вестись на одном компьютере, через интернет, электронную почту, или массово; Выделяют несколько основных жанров: 1) Приключенческая игра (Adventure) - игра, обладающая полноценным литературным сюжетом, и игрок в процессе игры своими действиями и выбором развивает сюжет; 2) Боевик (Action) - игра, состоящая, в основном, из боевых сцен, драк и перестрелок. Под целью игры понимается то, что разработчик желает получить от игры и то, к чему игрок будет стремиться в игре.В процессе прохождения учебной практики было выполнено ознакомление с процессом разработки компьютерных игр под платформу PC. Были изучены средства разработки компьютерных игр, достоинства и недостатки конструкторов компьютерных игр перед игровыми движками.
Введение
Актуальность темы исследования связано с интенсивным развитием средств разработки компьютерных игр, чрезвычайной популяризацией компьютерных игр, возросшим влиянием компьютерных игр на культуру и повседневную жизнь современного общества, а также перспективой развития игрового рынка. Доступностью инструментов и средств разработки компьютерных игр любому желающему, как простому энтузиасту, так и крупной фирме.
Учебная практика проходила в период с «23» ноября 2015 г. по «6» декабря 2015 г. в НОУ ВУ МОСТЕХ.
Целью прохождения учебной практики было практическое закрепление и углубление полученных теоретических знаний по вопросам проектирования и архитектуры компьютерных игр под платформу PC.
В процессе прохождения учебной практики были выполнены следующие задачи: - рассмотрены наиболее популярные игровые движки для разработки 2D и 3D игр, а также среды разработки и конструкторы компьютерных игр;
- рассмотрены основные этапы и концепции разработки компьютерных игр под платформу Windows;
- рассмотрена документация проектировщика, сопутствующая разработке компьютерных игр;
- изучены современные методы управления рабочими группами.
- рассмотрен бизнес-процесс «Разработка компьютерных игр под платформу Windows»;
При написании отчета по учебной практике использовались научные труды следующих авторов: Andrew Rollings [1], Jesse Schell [2], Jason Gregory [3], Марк Зельцман [4].
1. Компьютерные игры компьютерный игра программа
1.1 Классификация игр
Компьютерные игры - уникальная и весьма специфическая отрасль индустрии программирования. Процесс разработки игр отличается от процесса разработки обычного программного обеспечения, ведь риски, которым подвержен процесс разработки игры, воспринимаются разработчиками как само собой разумеющиеся издержки профессии.
Компьютерные игры могут классифицироваться по нескольким признакам[5]: 1) Жанр: игра может принадлежать как к одному, так и к нескольким жанрам одновременно;
2) Количество игроков и способ их взаимодействия: игра может быть однопользовательской или сингплеер (англ. Singleplayer, от слов single - один и player - игрок) - рассчитанной на игру одного человека, или многопользовательской - рассчитанной на одновременную игру нескольких человек; а также вестись на одном компьютере, через интернет, электронную почту, или массово;
3) Визуальное представление: игра может, как использовать графические средства оформления, так и напротив, быть текстовой. Игра также может быть двухмерной или трехмерной;
4) Платформа: игра может принадлежать как к одной платформе, так и быть мультиплатформенной.
1.1.1 Классификация по жанрам
Жанр определяется целью игры. Выделяют несколько основных жанров: 1) Приключенческая игра (Adventure) - игра, обладающая полноценным литературным сюжетом, и игрок в процессе игры своими действиями и выбором развивает сюжет;
2) Боевик (Action) - игра, состоящая, в основном, из боевых сцен, драк и перестрелок. Боевики подразделяются на: a) «шутеры» (от англ. Shoot - стрелять);
b) «файтинг» (от англ. Fight - драться);
c) «ужасы»;
d) «стелс» (от англ. Stealth - скрытный);
3) Ролевая игра (RPG - англ. Role Playing Game) - игра, отличительной особенностью которой является наличие у персонажей определенных навыков и характеристик, которые можно обрести, а впоследствии развивать, выполняя какие-либо действия. К этому жанру относятся и многопользовательские ролевые игры (ММОРПГ), которые, в отличие от однопользовательских игр, не имеют ни конечной цели, ни законченного сюжета;
4) Стратегическая игра (Strategy) - игра, представляющая собой управление масштабными процессами, как, например, строительство городов, ведение бизнеса, командование армией и т. Д. Игровой процесс может идти как в реальном времени (RTS - real time strategy), так и в пошаговом режиме (TBS - turn based strategy);
5) Компьютерный симулятор (Simulator) - игра, полностью имитирующая какую-либо область реальной жизни, например, имитация управления гоночным автомобилем или самолетом, либо какую-нибудь спортивную игру, будь то футбол, хоккей или баскетбол;
6) Головоломка (Puzzle) - игра, полностью или более чем наполовину состоящая из решения различных логических задач и головоломок;
7) Образовательная игра - игра, включающая в себя элементы обучающих программ, которые подаются через сам игровой процесс и, благодаря повышению интереса к ним в связи с необычным антуражем, впоследствии хорошо запоминаются;
8) Забавы - игры, рассчитанные, в основном, на детей, где психологическое впечатление от происходящего на экране гораздо важнее самого процесса игры - например, вид лопающихся пузырьков.
1.1.2 Классификация по количеству игроков
Однопользовательская игра - вид компьютерной игры, в которой цели, поставленные сюжетом, достигаются силами лишь одного игрока.
Среди целей однопользовательской игры можно выделить: 1) Противоборство с игровым искусственным интеллектом;
2) Прохождение сюжетной линии;
3) Накопление очков умений или улучшение навыков, иными словами - развитие игрового персонажа.
Многопользовательская игра - тип компьютерной игры, при котором в игровом процессе одновременно задействованы два и более игрока.
Многопользовательская игра может применяться к играм любых жанров, от которых и будут зависеть цели игры. Для шутеров, цель может заключаться в совместном уничтожении игровых персонажей, контролируемых игровым искусственным интеллектом, либо персонажей других игроков. Для стратегий реального времени цели уже будут совершенно иными.
Наиболее популярные среди многопользовательских игр, по праву считаются, массовые многопользовательские онлайн-игры (англ. Massively Multiplayer Online Game, MMO, MMOG). Отличительной особенностью данных игр является то, что одновременно в ней могут взаимодействовать друг с другом сотни, тысячи, либо даже сотни тысяч игроков. Так же, в отличие от стандартных мультиплеерных игр, которые могут функционировать и через локальные сети, MMO могут функционировать лишь через интернет. Жанров массовых многопользовательских онлайн-игр великое множество, и зачастую в играх происходит смешение двух и более жанров.
1.1.3 Классификация по визуальному представлению
В современном мире преобладают игры с графическим оформление: двухмерные игры (2D), трехмерные игры (3D) и псевдо трехмерные игры. Изза увеличения производительности современных компьютеров, а если верить Закону Мура, то это происходит каждые 18 месяцев, игровой индустрии приходится осваивать новые возможности ЭВМ.
Так же, игра может быть лишена графического оформления и быть полностью текстовой. Изза низкой требовательности к возможностям компьютера данные игры начали развиваться почти сразу после появления компьютеров, и не прекратили свое развитие даже после появления графических игр.
1.1.4 Классификаци по платформе
Как было сказано ранее, игра может принадлежать к одной платформе, либо быть мультиплатформенной. На диаграмме изображена статистика популярности операционных систем (рисунок 1).
Рисунок 1 - Доли рынка операционных систем
Из диаграммы видно, что рыночная доля операционных систем Windows составляет 90.79%. В связи с этим наиболее выгодно создавать игры именно под эту операционную систему. Но большинство производителей в последнее время, ссылаясь на высокую активность игровых «пиратов» и связанные с этим потери, решают выпускать игры лишь под платформы Xbox и Sony playstation, хотя на самом деле все гораздо проще - несмотря на высокую производительность современных персональных компьютеров, от игр требуется хорошая оптимизация. Явным примером того может послужить игра «Batman: Arkham Knight», плохая оптимизация коей вызвала негодование поклонников игры. А дальнейшая попытка оптимизировать игру не увенчалась успехом, в связи с чем, компания пообещала вернуть деньги покупателям этой игры. Иными словами, большинство производителей не желают тратить время и деньги на оптимизацию своих игр, хотя львиную долю прибыли приносят именно пользователи персональных компьютеров.
1.2 Средства разработки игр
1.2.1 Игровые конструкторы
Игровой конструктор - программа, позволяющая создавать игры, используя готовые шаблоны, средства управления графикой, звуком, встроенные эффекты, объединяя в себе игровой движок и интегрированную среду разработки. Игровой конструктор не требует знаний математики, физики и программирования. От пользователя требуется лишь воображение и терпение. Главным минусом игровых конструкторов является ограниченность функциональности, что не позволяет разработчику реализовать в игре идею, не предусмотренную возможностями конструктора. Игровые конструкторы подразделяются на 2D конструкторы и 3D конструкторы.
К 2D конструкторам относятся[5]: 1) Game Maker - один из самых известных конструкторов игр. Он появился на свет в 1999 году и развивался до 2011 года.
2) Construct Classic - в отличии от Game Maker. Данный конструктор имеет открытый исходный код, и в основном используется для создания игр для платформы Windows.
3) Game Editor - кроссплатформенный конструктор двухмерных игр. Совместимость с большим количеством платформ была отмечена хорошими отзывами разработчиков игр.
4) J.U.R.P.E. (Java Universal Role Playing Engine) - свободный (с открытым исходным кодом) конструктор RPG игр.
Существует довольно много конструкторов со своими особенностями, здесь были перечислены лишь одни самые популярных 2D конструкторы.
К 3D конструкторам можно отности: 1) Blender Game Engine - часть свободного 3D-редактора Blender. Обладает высокой функциональностью и простотой в применении. Позволяет использовать сценарии (англ. script) написанные на языке программирования Python. Что в свою очередь дает еще большую свободу действий.
2) Unity - профессиональный коммерческий кроссплатформенный движок для создания как 2D, так и 3D игр. Благодаря своим возможностям он очень популярен у крупных разработчиков.
3) FPS Creator - конструктор игр в жанре «First Person Shooter». Для данного конструктора существует множество готовых пакетов моделей, скриптов, шейдеров и других ресурсов.
1.2.2 Игровые движки
Игровой движок (англ. engine - мотор, двигатель) - часть программы, отвечающая за выполнение прикладных задач. Основными задачами являются поиск, отображение графики, проигрывание звука, обработка физики и т.п. Зачастую, игровой движок позволяет запускать игру на нескольких платформах. Создание игры при помощи игрового движка гораздо сложнее, нежели с помощью конструктора, ведь в этом случае от разработчика требуется знание программирования, но при этом функциональность игрового движка почти не ограничивается.
Существует великое множество игровых движков, как свободных, так и коммерческих. Вот несколько примеров современных игровых движков: 1) Unreal Engine 3 / UDK - считает одним из самых популярных игровых движков. Компания разработчик выпустила бесплатную версию движка UDK для создания некоммерческих игр и бесплатных приложений.
2) CRYENGINE 3 SDK - движок нового поколения, разработанный Crytek.
3) id Tech 6 - революционный движок, если верить компании разработчику «id Software». А так это или нет, можно будет узнать лишь в 2016 году, на который, и запланирован выход этого движка.
4) Source 2 - игровой движок от Valve, анонсированный в марте 2015 года. Несмотря на хорошие отзывы о движке, поклонники популярной игры «Dota 2», где впервые был применен данный движок, были разочарованы множеством недочетов и ошибок, возникающих изза недоработок движка.
5) LYN engine (или LYN) - игровой движок, разработанный Ubisoft для внутреннего использования в играх различных подразделений.
Создание игрового движка чрезвычайно трудоемкий процесс, ведь для этого разработчикам необходимо знать программирование, физику, высшую математику и геометрию. Требуются большие финансовые затраты и человеко-часы. Поэтому, крупные разработчики игр, либо используют уже готовый движок, либо создают движок, лишь для внутреннего пользования, постепенно дорабатывая его и усовершенствуя.
2. Разработка игры
2.1 Этапы разработки
Создание компьютерной игры можно разделить на три крупных этапа (рисунок 2).
Рисунок 2 - Основные этапы
Подробно разберем каждый этап.
2.1.1 Проектирование
На этапе проектирования, образно говоря, «закладывается фундамент» будущей игры. Необходимо определиться с целью игры и средствами ее создания. Под целью игры понимается то, что разработчик желает получить от игры и то, к чему игрок будет стремиться в игре. Необходимо определиться с жанром игры (их мы подробно описали ранее). Но жанр лишь определяет основные действия, происходящие в игре, а за то, как эти действия будут преподноситься игроку, отвечает сеттинг.
Сеттинг (от англ. setting - «обстановка», «помещение», «установка», «оправа») - среда, в которой происходит действие компьютерной игры; место, время и условия действия.
Выделяют несколько основных сеттингов: 1) Вторая мировая война
2) Научная фантастика (sci-fi)
3) Средневековье
4) Аниме
5) Комиксы
6) Постапокалиптический мир
7) Стимпанк
8) Фэнтези
9) Зомби
10) Реальная жизнь
11) Киберпанк
Создавая игру в одном из данных сеттингов, разработчику будет проще построить сюжет, а игрокам проще адаптироваться в уже знакомой среде. Но если совместить пару сеттингов, то можно в разы увеличить аудиторию игры, главное, чтобы сеттинги смотрелись как единое целое. После того, как с целью игры появилась ясность, необходимо определиться со средствами, а именно, нужно решить какой язык программирования будет использоваться для написания кода игры. Для этого лучше всего подходят высокоуровневые языки программирования (C и C ) изза возможности управления памятью и мощного вычислительного инструментария, а также, решить какой игровой движок будет использоваться. Хороший игровой движок может минимизировать написание программного кода, так как в нем уже будут описаны функции взаимодействия объектов, звука и графики.
2.1.2 Творчество
Большинство разработчиков придерживаются мнения, что игра - это скорее творческий процесс, нежели научный. И с этим трудно не согласиться, ведь большую часть времени разработки игры занимает именно творческий процесс.
На этом этапе необходимо продумать игровую механику, а именно, необходимо разработать все игровые объекты, их свойства и возможности взаимодействия с ними. Разобраться с управлением игровым персонажем и объектами. Выбрать физический движок, который отвечает за окружающий игрового персонажа мир. К счастью, в игровых движках, зачастую, уже реализован физический движок. И наконец, определиться с искусственным интеллектом (ИИ), который отвечает за поведение игровых персонажей. Развитость ИИ зависит от жанра игры, хотя если игра рассчитана только на взаимодействие реальных игроков, что свойственно online-проектам, то ИИ не требуется.
Далее, разрабатываются виртуальные пространства - локации (уровни), где будет развиваться действие игры. В связи с возросшими возможностями персональных компьютеров, разработчики стали делать один большой уровень, в котором происходят все действия. В этом виртуальном пространстве расставляются все объекты, задействованные в игре (помещения, здания, фоны, декорации и т.д.)
После того, как локации созданы, начинается самый красочный этап разработки, а именно - реализация графической составляющей игры. Первое, что бросается в глаза это графика, поэтому для серьезных игр лучше всего нанимать профессиональных художников и геймдизайнеров. От них требуется создать образы игровых персонажей, врагов, предметов и т.д. На основе предоставленных образов (артов), дизайнеры создают двухмерные или трехмерные объекты.
Далее, для игровых объектов, которые будут двигаться, создается анимация. Это трудоемкий и кропотливый процесс, ведь для реалистичной анимации игрового персонажа или противника необходимо большое количество движений. Крупные и хорошо обеспеченные компании могут позволить себе пользоваться технологией Motion Capture, которая дает возможность переводить действия участвующего актера в игровую анимацию.
Самым простым в графическом этапе является создание задних фонов, так как нет необходимости прорабатывать из изменения.
Далее идет проработка визуальных спецэффектов. Грубо говоря, это анимация, только вместо перемещения объектов в ней используется перемещение частиц. Различные световые эффекты, визуальные эффекты при взаимодействии с объектами, «игра света и тени». Без этой составляющей игра может показаться слишком «мрачной» и обыденной.
В заключение графического этапа идет оформление меню игры и пользовательского интерфейса (GUI - Graphical User Interface). Первое впечатление от игры создает именно меню, поэтому, ни в коем случае нельзя пренебрегать этой составляющей. К пользовательскому интерфейсу можно отнести миникарту, оформление инвентаря персонажа, панель действий и многое другое.
Для того, чтобы привлечь игрока и «заставить» пройти игру до конца, необходимо написать интересный, затягивающий сценарий игры. Без сценария не обходится практически ни одна игра. Даже MMORPG в которых, по сути, нет конечной цели, обязан быть хотя бы простой сюжет, который бы подталкивал игрока развивать персонажа. Не редко случается так, что изза плохо продуманного сюжета «гибли» проекты с отличной графикой и гейплеем. Яркий пример халатного отношения к сюжету, является «Crysis 3» - игра с невероятно красочной графикой, но с банальным и скучным сюжетом. Именно поэтому, эта игра получила оценки ниже, нежели ее предшественники.
Сценаристам необходимо не только придумать хороший сюжет, но и создать диалоги между игроком и персонажами игры, что бы игрок мог узнавать об игровом мире. Подобный подход, дает свободу действий игроку и возможность участия в развитии сюжета.
Заключительным этапом творческого процесса можно считать звуковое оформление игры. Какой бы не была красивой игра, она должна быть наполнена звуками, музыкой и голосами. Каждой игре присущи свои звуки - взрыв гранат, звуки выстрелов, лязг доспехов, рев мотора и многое другое, все зависит от жанра и сеттинга.
Далее необходимо подобрать музыку, которая и будет создавать звуковой фон для разворачивающихся в игре действий. Именно музыка создает настроение игрока. Можно воспользоваться уже готовыми коллекциями игровой музыки, как платными, так и бесплатными, либо заказать написание музыки композитору.
Ну и третей составляющей звукового оформления является озвучивание диалогов и текстов. Далеко не в каждой игре есть диалоги и тексты, но даже там, где они имеют место быть, озвучивание не всегда есть, так как разработчикам проще оставить текстовые субтитры, нежели нанимать актеров для озвучивания. Все это входит в расходы на создание игры и соответственно, будет учитываться при расчете цены игры при продаже. По мнению разработчиков, озвучивание не обязательно для игры, но вот игроки категорически с этим не согласны.
2.1.3 Издание
После того, как игра готова в техническом плане, наступает заключительный этап разработки. Для простоты понимая данный этап можно разделить на три основные составляющие (рисунок 3).
Рисунок 3 - Составляющие этапы
К отшлифовке относится соединение воедино всего того, что было создано на предыдущих этапах - сведение звуковых эффектов и изображения, озвучивания и текстов, визуальных спецэффектов и действий и т.д.
После процесса отшлифовки получают а-версию игры. Это еще «сырая» игра с множеством ошибок и недочетов, но по ней уже вполне возможно записать игровой ролик, дабы привлечь внимание потенциальных покупателей.
После окончательной сборки разработчики получают b-версию игры, и начинается самый длительный этап в разработке проекта - устранение ошибок (bugs). Насколько хорошими профессионалами не были разработчики, ошибки в игре будут в любом случае, уж слишком сложной структурой является игра.
Поиском ошибок в игре занимаются тестеры, которые передают отчеты об ошибках разработчикам, а те, в свою очередь, если не поленятся, исправят ошибки.
И вот наступил долгожданный момент - игра собрана воедино предположительно без ошибок и готова к продаже. Стоит отметить, для того, чтобы получить хорошую прибыль от игры не стоит экономить на рекламе, ведь чем больше людей узнают об игре, тем выше вероятность, что ее купят. Но и здесь есть свои нюансы - если разработчик постарался на славу и сумел создать интересную игру, то журналы или интернет издания могут совершенно бесплатно написать об игре, тем самым дав отличную рекламу.
Немаловажным фактором популярности является локализация игры. Проще говоря, перевод игровых текстов и озвучивания на языки стран-распространителей. Это весьма дорогостоящий процесс, так как необходимо нанять профессиональных переводчиков, поэтому, чтобы сэкономить, разработчики оставляют файл с текстами, на которые ссылается игра, открытым и доступным игрокам. Это позволяет энтузиастам из разных стран переводить тексты бесплатно.
Остается решить, как будет распространяться игра. Крупные компании могут позволить себе выпускать большие тиражи компьютерных дисков, но наиболее разумным вариантом является размещение игры в интернет магазинах, наиболее популярные из которых является «Steam». В нем могут размещать игры, как юридические лица, так и физические лица. Если игра соответствует требованиям магазина и законодательства, то она поступит в продажу.
Игра прошла цикл разработки, издана и наконец, поступила в продажу. Не смотря на то, что ошибки были исправлены, нельзя сказать, что их не осталось вовсе. Зачастую ошибки возникают изза несовместимости определенных марок оборудования или драйверов. Поэтому, если разработчик желает хорошо зарекомендовать себя на игровом рынке, он обязан осуществлять поддержку своего проекта. Проще говоря, послепродажное обслуживание заключается в помощи с оформлением заказа (покупкой или возвратом), гарантийном обслуживании, проведении опросов, регистрации (если это онлайновая или сетевая игра) и решении других проблем, не связанных с техническими вопросами. И в том, и в другом случае цель обслуживания - полное удовлетворение запросов пользователя.
В связи с этим, происходит выпуск патчей, в которые внесены исправления ошибок в игре. Выпуском данных патчей занимается отдел технической поддержки. Крупные компании предпочитают иметь свои отделы тех. поддержки, но в некоторых случаях могут нанять стороннее агентство.
Если игра понравилась игрокам, то можно создать дополнение к ней - DLC (англ. Downloadable content - загружаемый контент). Проще говоря, создать дополнительные уровни, миссии и т.д. Либо вполне возможно создать вторую часть игры, по тем же правилам, что и ранее.
2.2 Документация проектировщика
Перед тем как группа начнет работу над проектом, у них на руках должно быть два документа[1]: эскизный проект и заметки проектировщика. Эскизный проект - это «эталонное» описание игры, в котором рассказывается, как должен выглядеть готовый продукт, - своего рода образец, к достижению которого будут стремиться все участники группы. Заметки проектировщика тоже важный документ, так как в них излагаются мотивы, которыми руководствовался проектировщик, принимая то, или иное решение при работе над эскизным проектом.
Теперь более подробно о каждом документе. Эскизный проект (game specification) это очень подробное описание игры. Степень описания должна быть такой, что любой, кто прочитает эскизный проект, мог с легкостью представить готовый продукт у себя в воображении. Важно понимать, что, говоря «готовый» эскизный проект, вовсе не предполагается, что он «завершенный». Во время работы над проектом в эскизный проект вносятся изменения. При написании эскизного проекта следует учитывать: 1) готовый эскизный проект необходимо предоставить программистам заблаговременно;
2) программисты не будут читать эскизный проект.
Поэтому, что бы «заставить» программистов руководствоваться эскизным проект, лучше всего организовать web-узел, в котором будет раздел с документацией проектировщика.
Заметки проектировщика полезны по двум причинам. Во-первых, они ценны как любая другая документация. Во-вторых, они несут в себе дополнительную, более подробную информацию, без которой могут возникнуть проблемы при работе над проектом. Проще говоря, в заметках описаны причины, по которым были утверждены какие-либо решения в эскизном проекте. У программистов должен быть доступ к заметкам проектировщика, также, как и к эскизному проекту.
Прежде чем начать разрабатывать проект, нужно на основе эскизного проекта создать рад технических заданий (mini-specification). Каждое техническое задание должно закрывать один этап разработки, и содержать следующие элементы: 1) цели; 2) философия; 3) ожидаемые результаты;
4) альтернативы. Следует заметить, что технические задания могут и будут меняться в ходе работы, и на то есть ряд причин. Во-первых, могут меняться начальные требования. Во-вторых, некоторые этапы могут разделиться на два и более отдельных этапа. В-третьих, может поменяться очередность этапов.
Стоит пояснить, почему документация проектировщика так важна при разработке игры. В компьютерных играх механика игры не так проста и прозрачна, как в традиционных настольных играх. Все скрыто от глаз игрока за монитором. Поэтому для пояснения всех нюансов и объяснения разработчикам того, как игра в конечном итоге должна выглядеть, как раз и нужна подробная документация. Именно поэтому нужно составлять эскизный проект и заметки обдуманно, а не впопыхах.
2.3 Современные методы управления группами
Как и многие годы назад, методы создания игр не изменились и заключаются в следующем[1]: 1) Собрать группу программистов. Обеспечить их разделение по специальности.
2) Назначить гениального программиста старшим в группе.
3) Посадить их в одном помещении вместе с художниками.
4) Позволять им делать все, что взбредет в голову (естественно связанное с работой) на протяжении 18-24 месяцев, периодически проверяя работу.
5) Быть готовым к тому, что разработка может затянуться, игра получится паршивой или разработчики поссорятся, чуть ли не до драки, и разбегутся.
Основной проблемой такого подхода является то, что большая часть программистов будут иметь завышенную самооценку и изза этого начнутся конфликты в группе, так как каждый «тянет одеяло на себя», а, следовательно, появится конкуренция. Без должного управления эти конфликты приведут к краху проекта.
Конкуренция существует везде, но не обязательно, что она будет деструктивной. В компании Microsoft для такой формы конкуренции придумали название: кооперенция (coopertition). Кооперенция - это когда дух соревновательности используется для извлечения максимальной пользы из своих коллег, но всегда в рамках общих целей, стоящих перед группой. Проще говоря, идите напролом и берите все, что вам нужно, но с одним условием: делать это нужно так, чтобы в выигрыше была вся группа.
Попытки применить более зрелые методы управления группа наталкиваются на сопротивление со стороны группы, так как считаются заумными и нудными. Разработчики уверены, что творческий процесс организовать нельзя. Но реальность такова, что формализованные процедуры и методы являются некой страховкой, удерживающей проект от краха, но не мешающей разработчикам заниматься творческим процессом.
Зачастую руководители проекта сталкиваются с «проблемными» разработчиками. К проблемным типам разработчиков относятся: ковбой, примадонна, молчун, тихоня и ловкач. Каждый из этих типов представляет угрозу для проекта.
«Ковбой» - талантливая личность, на которого все надеются и все доверяют. К сожалению, ковбой убежден лишь в своей правоте, никогда никого не подпускает к своему коду, так как считает всех остальных бездарными. Вот только когда его уволят или он сам уйдет из группы, возникают самые большие проблемы, так как его код невозможно понять, и остается либо всей группой сидеть и разбираться в каждой строке, либо переписывать весь код. В таком случае остается лишь запастись терпение и смирится с задержками.
«Примадонна» любит, что бы его упрашивали. Он знает, что он лучший. У него завышенное, но очень ранимое самомнение. Его код идеален, так как он зациклен на самосовершенствовании. Он умен и технически грамотен. Его главной проблемой является то, что он не умеет находить общий язык с людьми. Людей он делит на две группы: те, кто тупее его, и источники угрозы. Изза своих навыков, его часто ставят руководителем группы, и на этой должности он представляет наибольшую угрозу всему проекты. «Примадонна» будет нападать на всех, кого считает угрозой, подвергая их профессиональные навыки и умственные способности. Изза этого в коллективе начинаются трения и вскоре несколько лучших разработчиков попросту уйдут из группы.
«Молчун» - это стереотипный компьютерный чудак. Держится отстраненно. Основной проблемой считается недостаточная общительность. Лучший способ общения с «молчунами» - это отправка сообщений по электронной почте. Основная опасность состоит в том, что «молчуны» не принимают участия в общем деле, изза этого снижается степень прозрачности хода работы, что ставит под удар весь проект.
«Тихоня» обычно выглядит обычным, а зачастую одним из лучших. Основная проблема «тихони» в том, что он сеет недоверие к начальству среди коллектива. Он считает, что с ним обходятся несправедливо и не признает авторитета над собой, поэтому, старается расколоть коллектив и создать подвластную ему группу.
«Ловкач» - мастер на все руки, за все берется, но ничего не доводит до конца. Если удается обучить «ловкача» как избавиться от своих недостатков, он сможет стать полезным участников группы. Основная проблема «ловкача» заключается в том, что он слишком уверен в своих умениях и навыках, хотя на самом деле они весьма завышены, и это опять же может привести к краху проекта. Во время организации работы группы, необходимо избавляться от перечисленных типов людей, иначе все затраченные труды могут пойти насмарку. Ключевым фактором успеха или провала проекта часто является персонал, а также то, как он распределен на функциональные группы.
Приведем основные существующие роли при разработке игры (Таблица 1).
Таблица 1 - Распределение ролей по направлениям разработки
Направление Роль
Менеджмент и проектирование Программист-планировщик Ведущий архитектор Менеджер проекта Проектировщик игры
Программирование Ведущий программист Программист
Художественное решение Ведущий художник Художник
Музыка и другие эффекты Музыканты Технические специалисты по звуковым эффектам Различные технические специалисты
Поддержка и контроль качества Техническая поддержка Ведущий специалист по контролю качества Специалист по контролю качества Тестировщик игры Специалист по технической поддержке
Приведенные здесь роли и направления соответствуют идеальному сценарию, который почти никогда не происходит. И, тем не менее, эти роли отлично адаптированы для методологии конвейерного программирования.
Так же, немаловажным фактором можно считать моральный климат и рабочую атмосферу. Ни для кого не секрет, что хороший моральный климат и хорошая рабочая атмосфера сильно повышает производительность труда сотрудников.
Перечислим методы, считающиеся положительными стимуляторами морали сотрудников: 1) хорошо отлаженная система обмена информацией;
2) минимальный уровень внутренней конкуренции; 3) реалистичное планирование; 4) справедливая оплата труда; 5) хорошие рабочие взаимоотношения; 6) четко определенные правила поведения; 7) удобная рабочая среда; 8) нормированное рабочее время; 9) конструктивные материальные и моральные поощрения.
К отрицательным методам можно отнести: 1) свободный стиль одежды;
2) гибкий рабочий график; 3) «веселая» рабочая атмосфера.
Учитывая выше упомянутые факторы, можно добиться продуктивной работы группы и гарантированного успешного завершения работы над проектом.
Наиболее популярной и рациональной методикой организации работы группы разработчиков, на сегодняшний день является конвейерное программирование. Термин конвейерное программирование означает методику производства программного обеспечения, подобную той, что используется на обычных предприятиях. Данная методика позволяет централизовать и упростить производство отдельных общеупотребительных модулей, которые затеем можно употребить в разных продуктах. К преимуществам конвейерного программирования можно отнести: 1) Сокращение средней продолжительности проекта;
2) Упрощение создания кроссплатформенных релизов;
3) Более надежный код;
4) Пригодность кода для повторного использования и совершенствования;
5) Разработчики хорошо знают все базовые используемые библиотеки;
6) Улучшается контролируемость процесса разработки и достигнутого прогресса;
7) Углубляется специализация разработчиков.
Но, к сожалению, существует ряд недостатков: 1) Первый проект будет выполняться дольше, чем аналогичные проекты, реализуемые по другим методам;
2) Необходимо создавать промежуточные библиотеки для каждой платформы;
3) Код становится более общим, а его разработка - трудоемкой;
4) При создании нового кода, его разработка идет дольше, чем обычно;
5) Новые разработчики не смогут приступить к выполнению своих обязанностей, пока не изучат незнакомые им библиотеки;
6) Снижается гибкость навыков разработчиков.
Однако стоит отметить, что преимущества метода конвейерного программирования значительно превосходят его недостатки, если применять его на протяжении нескольких проектов. Он позволяет экономить время и финансовые ресурсы. Еще одна дополнительная возможность при использовании конвейерного программирования проявляется со временем - это постепенное улучшение реализуемых объектов за счет совершенствования базовых модулей. Именно поэтому данный метод популярен среди разработчиков.
3.Бизнес-процесс разработки компьютерных игр
Использую книгу Марка Зельцмана[4], а именно, описанный в ней процесс разработки компьютерной игры, был составлен эталонный бизнес-процесс разработки компьютерной игры. В зависимости от ситуации на игровом рынке и финансового положения компании разработчика, бизнес-процесс может корректироваться, но в основном остается неизменным. Все этапы, отображенные в бизнес-процессе (рисунок 4), были подробно описаны в предыдущей главе. Весь бизнес-процесс можно разделить на 4 этапа: 1) Подготовительный этап - этап формирования основной идеи проекта и обсуждения различных составляющих будущего продукта. В результате вырабатывается эскизный проект и сопутствующая документация.
2) Производство - этап разработки готового продукта по сформированным требованиям. По завершению этапа, получают готовый продукт в единичном виде (на рисунке обозначен как мастер-диск).
3) Выпуск - этап распространения издательством готового продукта.
4) Поддержка - этап налаживания связи с конечными потребителями и внесения изменений и доработок в конечный продукт с помощью обновлений.
Рисунок 4 - Бизнес-процесс
Вывод
В процессе прохождения учебной практики было выполнено ознакомление с процессом разработки компьютерных игр под платформу PC. Были детально рассмотрены этапы разработки компьютерных игр. Так же были рассмотрены методы организации работы группы разработчиков, наиболее популярным из которых является метод конвейерного программирования. Были изучены средства разработки компьютерных игр, достоинства и недостатки конструкторов компьютерных игр перед игровыми движками.
На основе полученных знаний был составлен эталонный бизнес-процесс разработки компьютерных игр. Так же, в процессе прохождения практики, было проведено ознакомление с документацией, сопутствующей разработке компьютерной игры, и степень ее важности при работе над проектом. Так, заметки проектировщика имеют не меньшее значение, чем эскизный проект, не смотря на то, что полноценным документом они считаться не могут.
В конечном итоге можно сказать, что разработка компьютерных игр - это очень трудоемкий и кропотливый процесс, требующий больших финансовых затрат, но при этом, не гарантирующий колоссальной прибыли, а в некоторых случаях возможны и убытки.
Список литературы
1. Andrew Rollings, Dave Morris. Game architecture and design. A New Edition, 2006 - 1035c.
2. Jesse Schell, The Art of Game Design, 2011 - 518c.
3. Jason Gregory, Game Engine Architecture, 2009 - 864c.
4. Марк Зельцман, Компьютерные игры. Как это делается, 2006 - 530с.
5. Компьютерная игра [Электронный ресурс]. URL: https://ru.wikipedia.org/wiki/Компьютерная_игра (дата обращения: 23.11.2015).
6.Конструктор игр [Электронный ресурс]. URL: https://ru.wikipedia.org/wiki/Конструктор_игр
7.Этапы разработки игры [Электронный ресурс]. URL: http://gamesisart.ru/game_dev_create.html#Game_Create_1