Без программистов тут никуда. Мы не будем заглядывать в кодерские омуты, а только чуть-чуть погрузимся в этот интересный мир. Любой скрипт, любой конфиг для любой игры основан на одних и тех же общих понятиях программирования — вот и второе обоснование того, зачем вам может пригодиться навык элементарного программирования. Ведь иногда хочется покопаться во внутренностях чужой игры чуть глубже, чем это предусмотрено стандартными редакторами. И в этом случае без знания общих основ кодинга никуда. Так, что, товарищи геймеры, в ближайших номерах мы проведем тотальный ликбез по всем необходимым для успешного кодинга знаниям. А начнем мы, пожалуй, с начала...
Руки — из ножен
Если вы всерьез решите заниматься разработкой игр, то одних знаний по дизайну и обустройству игровых сцен недостаточно. Нужны еще и навыки программирования. Иначе могучая кучка сценарных файлов, скриптов, роликов, звуков, текстур и моделей никогда не воссоединится в единое целое. Конечно, можно попробовать игровые конструкторы, как, например, RPG Studio. С их помощью можно создать маленькую и непрезентабельную игрушку. Но для полноценной игры их возможностей явно недостаточно. Значит, придется учить какой-нибудь язык программирования. Сразу хочу уверить вас: это не так страшно и сложно, как может показаться на первый взгляд. Работа программиста ничуть не менее творческая, чем сценариста или дизайнера. Многие именно в строчках программ находят свое призвание. И очень многим (мне, например) процесс программирования просто нравится. Это не скучно и не занудно, как думают некоторые. И если вы все-таки решите посвятить часть своего драгоценного времени программированию — уверен, вы не пожалеете. И потом, кому-то все-таки придется создавать конечный exe!
Трудности выбора
Вслед за волевым решением начать-таки учиться программировать обычно следуют недоуменное почесывание в области окончания лысины и растерянная мысль: "А на чем программировать-то?". А действительно, на чем? Ведь языков программирования существует великое множество. Попробуем ответить на этот вопрос. Сразу отметаем языки и оболочки программирования не под Windows. Программировать под DOS сегодня считается моветоном. После второго взмаха суровой цензорской метлы в стороне остаются узкоспециализированные языки программирования, такие как Perl, Java, CGI, Python, Lisp, PHP и прочие. В центре нашей воображаемой сцены, сиротливо сжавшись, остались три языка программирования. Это Visual Basic, C++ (в двух инкарнациях — от "Борланда" и от "мелкомягких") и богатырь Delphi. Начнем поочередный медицинский осмотр. Призывник VB — шаг вперед! Итак, что мы имеем? Прогрессирующее тупоумие, неисправимый сколиоз, криворукость и косоглазость, чрезвычайную медлительность и неприспособленность к тяготам кодерской жизни. Марш из строя! А ну — к стенке...
Я ничего не имею против Visual Basic, но для серьезных целей он явно не подойдет. И дело тут даже не в том, что "VB только для прожженных ламеров". Все гораздо проще. Основным признаком, по которому он отсеялся, является
|
Так, разговорчики в строю! Кто тут у нас следующий? Ага, призывник C++, шаг вперед. Что это, у вас две головы? И четыре руки? И одна нога? Тут без поллитры не разобраться. Разделяем пациента надвое. В левой части у нас остался MSVC++, а в правой — Borland C++. Давайте Borland C++ оставим на жаркое, а пока покопаемся в творении Microsoft.
Так уж сложилось, что MSVC++ является стандартом де факто как для программирования вообще, так и для программирования игр. На то было много причин. Во-первых, полное отсутствие конкурентов в момент выхода первой версии, а во-вторых, жесткая рекламная политика Microsoft. MSVC++ имеет много достоинств, но они полностью компенсируются недостатками. Во-первых, C++ сам по себе уже достаточно сложный язык, особенно для новичков. Но с привнесением Microsoft своих "фирменных" штучек стал совсем неудобоварим. В минусы можно также записать очень долгую компиляцию (порой растягивающуюся на часы), неудобный редактор ресурсов и неадекватную реакцию на ошибки. В общем, это явно не "наш выбор".
Остается только одна альтерантива — Delphi. И это именно то, что я вам от всей души советую.
И швец, и жнец, и на дуде игрец...
Итак, Делфи (уж позвольте мне его фамильярно
|
Знаете, в чем состоит одно из основных преимуществ Delphi перед MSVC++? В исключительно малом времени компиляции. Чтобы скомпилировать небольшое приложение (например, текстовый редактор уровня WordPad), MSVC++ требуется около десяти минут, тогда как Делфи — только несколько секунд! Однако чудес на свете не бывает. Чем же достигается такая высокая скорость компиляции? Стандартное Windows-приложение состоит из множества повторяющихся модулей. Это процедуры создания/обработки/прорисовки окон, обслуживания устройств, визуализации графики и т.д. Каждый из комплектов процедур хранится в специальном программном файле. Так вот, MSVC++ при компиляции каждый раз перекомпилирует абсолютно все библиотеки, используемые в программе. А Delphi поступает гораздо умнее. Зачем делать то, что уже сделано? Все эти модули были однажды скомпилированы раз и навсегда, а потом просто подключаются к вашей программе! Легко, быстро и элементарно. Как только спецы из MS этого не поняли?
Второе гигантское преимущество — система компонентов. Компоненты — это своеобразные стандартные "кирпичики", из которых можно построить программу. Благодаря им можно теоретически создать довольно сложную программу, не написав ни строчки кода. Выглядит это так. Допустим, мы захотели создать текстовый редактор вроде Word. Нет ничего проще. Ведь почти все его кусочки по отдельности уже доступны в палитре компонентов. Перво-наперво создаем новое окно. Из палитры
|
И, наконец, самая вкусная вещь. Дело в том, что процесс создания новых компонентов довольно прост, а потому уже с момента появления первого Делфи на просторы Интернета потоком хлынули самодельные компоненты и библиотеки. Результат очевиден. Наугад назовите какую-нибудь задачу или цель. Даю 99% гарантию, что под эту задачу уже написаны какие-то компоненты, если не полностью ее решающие, то хотя бы значительно упрощающие. Получается, что работа программиста сводится к минимуму. И это хорошо. На просторах Сети вы легко найдете огромное количество Делфи-порталов, где сможете скачать исходники самых разнообразных программ, полезные компоненты, утилиты, почитать статьи маститых разработчиков. Начать просто. Главное — вовремя остановиться, а то в последнее время разработчиков постигает повальная эпидемия гигантомании. Но я думаю, это вам не грозит.
Игры в числах
Но наша конечная цель — не просто создать программу, наша цель — создать Игру. А это
|
Хотите трехмерную графику? Нет проблем. Можете программировать с использованием OpenGL или DirectX. Выбирайте на свой вкус. Новичку трудновато бывает начать игру с нуля, даже если он пользуется такими классными библиотеками. Поэтому предлагаю начать свой игровой проект на основе какого-нибудь уже существующего бесплатного 2D или 3D движка. На просторах Интернета можно найти массу компонентов, облегчающих жизнь игродела. На первое время я могу вам посоветовать два самых моих любимых пакета работы с графикой. Если вам нужно быстрое и качественное 2D, выбирайте DelphiX. Это полнофункциональный набор компонентов, в составе которого есть даже почти готовый двумерный движок. С его помощью можно создавать практически любые двумерные игры, начиная от банального "вида сверху" и заканчивая продвинутой изометрией, как в Infinity (графический движок целой линейки игр, начиная с Planescape, BG и кончая IWD). С его помощью сотворить что-то наподобие Infinity — не проблема.
Ну а если вас интересует исключительно 3D, то самый лучший бесплатный 3D движок под Delphi — GLScene. Он создан на базе OpenGL, следовательно, за нас играет большая, по сравнению с Direct 3D, производительность и скорость. Джон Кармак, как известно, признает только OpenGL. GLScene абсолютно бесплатен, но возможности его огромны и приближаются к возможностям "профессиональных" движков. Полный список поддерживаемых им функций занял бы не одну страницу. Самое классное в GLScene то, что он абсолютно универсален и своими возможностями покрывает все ваши потребности.
Вздумалось вам, например, создать стрелялку. Да нет проблем! Что там самое главное? Динамизм управления и красивые эффекты. Оба этих требования GLScene выполняет. За динамизм управления отвечает великолепнейшая поддержка не только мышей и клав, но и всяких навороченных устройств — даже про джойстики с Force Feedback не забыли разработчики. Будет трясти так, что игрок мгновенно поверит в реализм. Ну а красивые взрывы и прочие спецэффекты легко соорудить с помощью систем частиц, благо и эта функция у GLScene на высоте.
Хотите сверхреалистичный симулятор? Ради бога. Точнейшие расчеты столкновения объектов и реалистичная физика (уже, кстати, реализованная) к вашим услугам. Хотите экшен? Великолепным теням здешнего shadow manager позавидовал бы и Thief 2. Даже Soldier of Fortune удавился бы от зависти к GLScen’овской скелетной анимации. Импорт разнообразных форматов 3D файлов, трехмерный звук (в четырех системах), каркасное сглаживание, мультитекстурирование и мипмэппинг — все эти новомодные функции включены в последние версии этой замечательной графической библиотеки.
Даже самые сложные эффекты с помощью GLScene воплощаются за считанные минуты. Движок очень гибок и легко подстраивается под нужды конкретного программиста. Еще одной уникальной возможностью движка является то, что вы можете строить свои виртуальные миры прямо на форме Delphi, не пользуясь никакими трехмерными редакторами. Вся мощь 3D акселераторов у вас под рукой. Под Delphi создано гигантское количество разных полезных библиотек и компонентов, которые значительно упрощают жизнь разработчика и привносят новые возможности в компьютерные игры.
В заключение хочу сказать пару слов о Borland C++. Фактически это тот же самый Delphi, только под C++. А раз так, почему бы не использовать его для разработки игр? Я бы не рекомендовал. Это, конечно, Делфи, но не такой гибкий в настройках и в компонентной модели. Библиотек и компонентов под него значительно меньше, чем под Делфи. Теоретически, в Borland C++ должны работать все делфийные компоненты, но ведь это только теоретически. Так что для игродельческих целей он мало пригоден. Наш выбор — Делфи.
В следующем номере мы продолжим знакомиться с радостями и тяготами программерской жизни. Как-никак, а без элементарных навыков программирования не может обойтись не только гейммейкер, но и самый обыкновенный геймер. Как так, спросите вы? А очень просто. Почти на каждом шагу геймеры встречаются с разнообразными косвенными проявлениями языков программирования. Пусть они сильно завуалированы, как, например, конфиги для Quake или скрипты для UT, но это все те же языки программирования. Именно о скриптах и конфигах мы и поговорим в следующий раз. Оказывается, сколь разработчики не извращаются в игровых скриптах, они не смогут слишком далеко уйти от первооснов, заданных очень давно. Значит, надо просто понять эти первоосновы, и тогда любой, даже самый навороченный, скрипт вы будете раскалывать как орешек.