Разработка компьютерных игр. Часть 3

Критикуешь? Предлагай!

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


Причем часто можно встретить такое мнение, что подробное описание, хорошо продуманное составление требований, документирование каждого этапа — это чисто бюрократический процесс. А бюрократию ох как не любят. Однажды меня пригласили в уже готовый на 50% проект, но для того, чтобы приступить к разработке ИИ, мне нужно было провести системный анализ, сформировать требования, составить ТЗ. Говорю: "Хорошо, я посмотрел описание, некоторые ТЗ, нужно еще взглянуть на журнал разработки…" — "На что ты хочешь посмотреть? У нас ничего такого нет и не ведется…". Упс- с. "А как вы тогда…?" Ладно, мне все равно этот проект не очень нравился:). Разработка игры — это очень сложный производственный процесс, ведение соответствующей документации просто необходимо, хотя бы для того же взаимодействия между структурными блоками. Например, разрабатывающие ИИ должны связываться с теми, кто занимается физикой, анимацией, картами уровней, рассчитывает математику в плане всевозможных стоимостей, level- дизайнерами, теми, кто составлял логическое дерево целей и так далее. И гораздо проще, когда полная документация собрана в одном месте, где также виден сам ход разработки, какие возникали проблемы и как были решены.

Сегодня мы начинаем новый этап описания, а именно приступаем к практике. В плане инструментария не станем оригинальничать, то есть это Visual C++ (Visual Studio.NET) от 7.0 и выше и DirectX 9.0 SDK. Помимо этого, понадобится графический 3D-редактор. Рекомендовать что-то конкретное сложно — в общем, если у вас есть 3dmax, то замечательно, если что-то другое (есть и бесплатные пакеты), то обратите внимание на то, чтобы там был экспорт в файлы с расширением *.x. Это нам понадобится для работы с DirectX. В качестве графического 2D-редактора лучше всего подойдет Photoshop. Что касается звука, то рекомендуется скачать бесплатную Audacity — это не только редактор, но и конвертер. Насчет аппаратной части все достаточно тривиально, правда, особые требования к видеокарте: она не должны быть древней, поддерживать шейдеры, а это GeForce 3 и выше. Дополнительные программы будут указываться отдельно в процессе повествования. Насчет мощности компьютера…:) Тут мне вспомнился один замечательный товарищ, который специально давал программистам достаточно слабые компьютеры, чтобы работники приноравливались к таким сложным условиям. Хотя сторонником такого подхода быть трудно, ведь все можно отслеживать с помощью специальных утилит, помимо этого, и тестеры будут указывать на огрехи, а тратить время на ожидания, пока все посчитается, тоже неэффективно.

Поясним некоторые пункты

Почему С++? Данный язык является базовым и долгое время будет оставаться таким. Как написали в одной удивительной книге из серии С++ для чайников, изучив этот язык, вы сможете общаться с программистами, а среди них есть много хороших людей. А если серьезно, то нужно с большой осторожностью относиться к языковым новациям, потому что, как показывает практика, большинство узкоспециализированного является недолговечным. Конечно, если будет время, мы уделим внимание С#, Java, JavaScript, ActionScript, правда, не будем касаться "паскальской тусовки", а именно разработчиков на Delphi, потому как это будет напоминать полное повторение изложенного с переменой языка программирования. Кстати, Паскаль — единственный язык, который имеет существенные отличия от всех С- и С++-подобных, поэтому в данном случае остается только извиниться. Почему Visual C++ от 7.0 и выше? Это берется также в силу базовости и большой распространенности данной IDE. Ведь самое главное — это понять принципы. И раз уж мы берем в качестве основы DirectX, то IDE лучше взять от этого же разработчика, то есть Microsoft. В силу разных причин. Небольшой пример: библиотека DirectX Extension Library (DX3D) только при компиляции в среде Visual C++ 7.0 и выше поддерживает инструкции Intel Streaming SIMD Extensions (SSE). То есть это практически на автомате, в то время как в рамках других IDE, в том числе и более ранних версий Visual C++, требуется дополнительная настройка. И таких небольших, но иногда значимых моментов на самом деле достаточно.

Почему DirectX 9.0 SDK? В принципе, 10-ю версию данного технологического пакета имеет смысл рассматривать, но не сегодня. И даже не потому, что ее часто связывают с Vista. Просто 9.0 нам будет достаточно для того, чтобы показать все основные принципы, и при желании для уточнения некоторых моментов вы можете обратиться к соответствующей литературе как в оффлайне, так и в интернете, где быстро найдете нужный ответ. Тем более в 9.0 уже есть язык HLSL (High Level Shader Language). То есть все необходимое присутствует.

Почему DirectX? Это базовый комплект общего назначения. Ему есть альтернативы, но их мы рассмотрим отдельно после.

Установка

Дистрибутив DirectX 9.0 SDK весит около 442 Мб. Его можно бесплатно скачать по адресу сайт либо, если у вас нет широкого канала, поискать на прилавках магазинов. Кстати, в качестве подсказки могу отметить, что его довольно часто можно увидеть на CD к книгам, которые посвящены программированию под DirectX. Впрочем, широкий канал в интернет вам все-таки может понадобиться и после, потому как нужно будет скачивать и другие весомые приложения. При установке DirectX 9.0 SDK особенно принципиальным является только один момент: у вас будут спрашивать тип инсталляции, давая выбирать между Retail и Debug. Первый вариант подразумевает установку только дистрибутивных версий DLL, а второй — дистрибутивных и отладочных, то есть последние позволяют выводить отладочную информацию в рамках Visual Studio. Соответственно, выбираем Debug.

Самостоятельно!

Следующая часть материала также выйдет под заголовком "Часть III". Дело в том, что вас ожидает небольшой математический блок, который лучше бы выглядел единым целым. Поэтому, учитывая рвение многих, могу предложить некоторые вопросы, которые вы изучите самостоятельно, что впоследствии облегчит задачи понимания. То есть вам нужен базис. Некоторые вопросы по математике вы можете узнать из параллельной ветки материалов в КГ по MathCAD.

Итак:
. Векторы. Равенство векторов, сложение и вычитание, скалярное и векторное произведение, умножение на число.
. Матрицы. Их равенство, умножение матрицы на скаляр, умножение и сложение матриц, единичные матрицы, инвертирование и транспонирование. . Как само собой разумеющееся из программирования: ООП, технология COM.
. Как само собой разумеющееся из графики: что такое растровые и векторные изображения.

Промежуточное завершение

На самом деле при желании некоторые темы можно пропускать. Например, те, кто хочет заниматься 3D-анимацией, и только, не обязательно должны программировать под DirectX и устанавливать себе Visual Studio. Достаточно пробежать глазами, узнать, что, где и как происходит. Понятно, что у них и своей работы хватит.

Кристофер, christopher@tut.by


Компьютерная газета. Статья была опубликована в номере 29 за 2008 год в рубрике технологии

©1997-2022 Компьютерная газета