Хакер № 5.99

Вступительное слово

Бьюсь об заклад, что каждого геймера, хотя бы отдаленно знакомого с программированием, посещали дурные мысли о создании собственной игры. Обыватель, слабо представляющий "всех планов громадье", с апломбом заявляет: "А вот я бы... Уж я бы написал...". Затем обычно придумывается название для новой игры, рисуется заставка и пишутся первые строчки исходного кода, преимущественно состоящие из комментариев с подробно расписанными копирайтами автора. Через пару недель острое желание написать собственную игру улетучивается... чтобы через полгода разгореться с новой силой и тем же финалом.

Как результат, в редакции всех игровых журналов, и уж тем более к нам в Х, постоянно приходят письма с выраженными в форме требований просьбами рассказать о том, как научиться самому писать игры. А поскольку слово читателя для нас - непреложный закон, в чем ты уже неоднократно имел возможность убедиться, то можешь встречать новую рубрику: "Мастерская". В ней мы расскажем все о том, как написать собственную игру. Только сделаем мы это в стиле Х, а это означает, что мы не будем учить тебя азам программирования и уж тем более не станем разрисовывать журнальные страницы криптограммами исходников. Зато постараемся ответить на такие животрепещущие для тебя вопросы, как то: на чем пишут игры, где взять халявный движок, как найти издателя для своей игры и вообще, как с минимальными затратами времени и сил сделать крутую игру. Затронем и такие немаловажные аспекты, как игровой дизайн, варианты поведения AI, реализация музыки и звука...

Рубрика только становится на ноги, и поэтому сейчас все твои комментарии и соображения особенно ценны. Напиши, что бы ты хотел видеть в дальнейших выпусках "Мастерской". Будь уверен, твои пожелания не пропадут втуне, а, наоборот, очень и очень помогут.

Ведущий рубрики

Александр "Xenocid" Колосков

xenocid@mail.ru

 

"...Есть люди, у которых сто четыре головы,

Есть люди, у которых между ног Брюс Ли..."

"212-8506" Б.Г. (который Гребенщиков)

Есть люди...

Есть люди, которые любят что-нибудь делать своими руками. Я еще помню время, когда в журналах публиковали схемы цветомузыкальных установок и передатчиков "уоки-токи", как энтузиасты паяльников корпели над радиодеталями. С появлением компьютера страсть к творению самодельных уродцев разгорелась с новой силой. И далеко не последней областью приложения этой пагубной страсти стало программирование компьютерных игр. Возможно, приятель, тебе повезло, и в эпоху, предшествовавшую появлению Пентиумов, ты не сталкивался с чудесными творениями родной электронной промышленности - "Агатами", "БэКашками" и прочими зверюшками. И тогда ты не помнишь расплодившиеся на этих машинах доморощенные игрушки. Мне, к счастью, не повезло - я их отлично помню.

Казалось, что с приходом ПиСишек доморощенные игрушки должны были расцвести пышным цветом. Еще бы, новая техника позволяла многое из того, что раньше было недоступно: полноцветная графика, звук, мощный процессор - для которого не нужно уметь программировать на ассемблере. Но все произошло совсем по-другому. Посчитай-ка для примера, сколько самодельных игрушек у тебя на винте. У меня - три. И я уверен, что это много... Талантов, что ли, поубавилось? Едва ли... Скорее, причина в другом: писать игры сделалось сложнее. Точнее, сложно стало писать интересные игры, такие, чтобы народ в них играл. Ведь, действительно, неискушенному пользователю текстового режима даже змейка из символов псевдографики, с упоением поедающая нолики, казалась чудом, а сейчас ты на такую змейку и без слез не взглянешь, и вообще смотреть не станешь. Теперь ведь тебе то 3D подавай, то AI суперумный - не угодишь. Вот и получается, чтобы слепить хоть кривого, но работающего, а главное - "своего" уродца, нужно полжизни над клавиатурой корпеть.

Расстроился? Зря! На самом деле так только со стороны кажется. На самом деле для того, чтобы создать "свою игру", нужно быть не семи пядей во лбу, а всего лишь двух, то есть точно как у тебя. Каким образом такое возможно? Об этом тебе и расскажет "Мастерская".

Путь первый, или

"Я его слепила из того, что было..."

Из чего состоит типичная игра? В первую очередь, конечно, графический движок (неважно, 2D или 3D), потом звуковая библиотека, различные вспомогательные модули (сеть, устройства ввода) и, наконец, основная начинка игры - сюжет, AI, игровая логика, т.е. все то, что делает из свалки исходного кода Игру. Так вот, ты, приятель, удивишься, но для большинства игр все необходимое, кроме этой самой начинки, можно найти в Сети, и причем дается это все бесплатно, сиречь на халяву.

Да, ты не ослышался, твои уши тебя не предали. Покопавшись в Сети, можно набрать очень неплохих библиотек и сразу приступить к созданию игры, не погружаясь в тягомотную канитель скучных технических деталей. Конечно, по качественному уровню твои игры навряд ли смогут конкурировать с продукцией современных игродельческих компаний-гигантов. Оно и понятно: у них толпа народу на штатной оплате и тьмущая прорва денег на финансирование каждой прихоти левой ноги правого с краю дизайнера, если это идет на пользу делу, а у тебя только прущие наружу амбиции и слепящее желание сотворить нечто шедеврическое шедевроподобное. Однако известно ли тебе, что чем крупнее компания и чем объемистее ее банковский кошелек, тем меньше творческого начала в том, что она делает, и тем больше бюрократизма и риска потерять свои насквозь пробаксованные миллионы? А тебе как коту Матроскину: кроме усов, лап и хвоста терять нечего. И поэтому у тебя есть то, чего нет у всяких там EA, GT и прочих 3DO: возможность по-настоящему творить. Создавать то, чего еще никогда не было создано. Не сотый клон расползающегося по швам C&C, а действительно, реально, по-настоящему Новую Игру. Да, крупные компании способны финансировать разработку собственных движков, держащих равнение на стандарты современности; но кто сказал, что твоя Игра будет менее интересна, чем их конвейерные, с позволения сказать, игры? Между прочим, хит сезона Half-Life, который все признают самым интересным FPS всех времен и народов, написанна движке Quake 2 - а сейчас уже появились бесплатные движки, которые немногим ему уступают.

Конечно, можно и попытаться написать свой движок. Как минимум, программировать научишься. Но как говорил небритый пророк "Спрайта", от этого тебя не будут любить девушки; а хотелось бы!..

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

Путь второй, или

"Мы наш, мы новый мир построим..."

"Все это здорово, - скажут многие читатели. - Но даже используя готовые движки, все равно нужно уметь программировать. А что делать тем, кто хочет создавать игры, но не хочет писать программы?" Хороший вопрос. Недаром к большинству игр, вышедших за последние пару-тройку лет, прилагаются разнообразные редакторы уровней и прочий инструментарий для ваяния собственных миров. Значит, можно не изобретать в очередной раз велосипед, а взять редактор и создать "свой" мир. Вспомни, сколько самодельных уровней в свое время вышло к Doom и Duke Nukem 3D (уж не говоря про оба Квейка), к WarCraft и Heroes. Конечно, много было барахла, но нередко попадались очень достойные работы.

В одном из ближайших номеров ты прочтешь обзор игр, позволяющих разрабатывать "свои" миры на основе их собственного движка, и, возможно, что среди них не последнее место займут старый добрый Duke Nukem 3D и даже Dark Reign. Также мы рассмотрим имеющиеся редакторы уровней к таким популярным играм, допускающим свою модификацию, как Q1/Q2, Unreal, Shogo.

Следи за выпусками "Мастерской". До встречи.

Xenocid

 

"Кое-что задаром..."

роман Роберта Шекли

Кое-что задаром...

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

На самом деле, большого смысла в этом нет, так как создание движка замедляет процесс написания игры, отбивает интерес (ведь пройдет не один месяц, прежде чем на экране появится хоть чего-нибудь осмысленное). В конце концов, движок может попросту не получиться, либо же родится таким, что такого выродка своими руками придушить захочется. Есть другой путь, и он тебе больше подходит. Воспользоваться готовым движком. Как известно, Интернет велик и всеобъемлющ. Если хорошенько поискать - можно найти даже черта лысого, причем задаром. И уж халявные движки в онлайновых недрах точно откопать можно.

Для начала поговорим о 2D движках. Кстати, несмотря на повальное увлечение трехмеркой, тебе лучше начинать именно с 2D игр, так как они существенно проще. Согласись, гораздо приятнее сказать: "Я написал хорошую платформенную аркаду", чем "Я писал Quake 4, но... эээ... не срослось, в общем". Так и хочется провозгласить тост: "Выпьем же за то, чтобы у нас все и всегда срасталось". :))

2D движки

DigitalFX

www.fastprojects.com

 

Потрясающий движок. Поддерживает множество эффектов, при помощи которых довольно легко реализуются вещи, обычно присущие 3D играм. Например, цветное освещение, цветной туман, цветные полупрозрачные объекты. Кроме того, движок реализует такие необходимые операции, как автоматическое обведение спрайта по контуру заданным цветом, перекраску спрайтов. Имеется ограниченная поддержка частиц (particles). Реализован DigitalFX в виде стандартной .dll, поэтому его можно использовать с любым компилятором. Исходники, к сожалению, не предоставляются. Движок активно развивается (так, в ближайших планах поддержка MMX, 3DNow! и PIII инструкций). Единственный минус - коммерческая лицензия стоит около 1400$, поэтому движок не годится для создания freeware и shareware игр (но это если ты захочешь его лицензировать...). Кстати, именно DigitalFX используется в известной jaggedalliance-подобной стратегии Veiled Threat, разрабатываемойкомпанией Lupine Games (www.lupinegames.com).

MGL

www.scitechsoft.com

 

Не знаю, стоит ли включать в обзор это произведение, т.к. похоже, что компания-производитель прекратила раздачу исходного кода "на халяву". Впрочем, я полагаю, эти исходники уже успели осесть на многочисленных FTP архивах, так что если хорошенько поищешь - найдешь. Основные достоинства MGL - продуманный дизайн, хорошая документация, малое количество ошибок. С другой стороны, библиотека получилась достаточно громоздкой и неторопливой. Что, впрочем, не испугало создателей WinQuake и Hexen II. Никаких особых спецэффектов не поддерживается, зато MGL умеет достаточно прозрачно работать с различными видеорежимами. Резюме: MGL представляет собой этакий продвинутый GDI, мощный, универсальный, но не быстрый.

OpenPTC

www.gaffer.org

 

Очень популярная среди демо-кодеров библиотека. Ее главное достоинство - мультиплатформенность, OpenPTC работает под DOS, Windows, Unix, Be, QNX... Не уверен, что это позволяет достичь максимальной производительности в каждом конкретном случае, но впечатление производит неплохое. Еще одно уникальное достоинство PTC - поддержка всяких нестандартных режимов (именно этим PTC и привлекает кодеров демо-сцены). Поставляется PTC, как и следовало ожидать, в исходных кодах. Никакихспецэффектов не реализует, но на сайте есть примеры реализации альфа-канала, lens flare и еще нескольких эффектов. Не стану утверждать, что PTC - оптимальный выбор для игр, но для отработки спецэффектов и кодирования демок лучше не придумаешь.

CDX

www.cdx.sk

 

Довольно известная библиотека, обеспечивает не только работу с графикой, но и с музыкой, звуком и устройствами ввода (мышь, джойстик, клавиатура). Никаких спецэффектов не поддерживается, да и скорость вывода далека от оптимальной (в отличие от того же DigitalFX). Сила CDX в другом - эта библиотека самая простая из всех рассматриваемых, поэтому идеально для тебя подойдет, если ты в этом деле новичок и не хочешь долго мучиться над освоением. Кроме того, в CDX имеется масса готовых классов для создания простых изометрических карт, скроллинга, игровых меню и т.д., т.е. всех тех элементов, которые необходимы для написания игр. Библиотека реализована в виде набора С++ классов (поддерживается не только Visual C++, но и C++ Builder), поставляется с полным исходным кодом и бесплатна как романтическая любовь.

NukeDX

www.nukesoftware.dk

 

Простая и надежная библиотека без особых изысков. Ничего сверхъестественного делать не умеет, зато работает надежно. Мне понравились функции для работы с текстом, в том числе возможность обводки текста по контуру. Альфа-канал не поддерживается, но достаточно легко реализуется (на сайте есть соответствующий tutorial). Помимо работы с графикой, есть возможность работы со звуком и устройствами ввода. Библиотека реализована в виде набора классов для Visual C++. Сейчас авторы работают над новой версией библиотеки, а исходники старой выложили на сайт.

В следующем номере - обзор существующих бесплатных 3D движков.

Xenocid

 

Интернет для "Мастера"

http://cg.cs.tu-berlin.de/~ki/engines.html

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

 

www.wotsit.org

Сайт, посвященный различным форматам файлов. Содержит ряд форматов из игр, например, описание формата файлов Total Annihilation.

 

www.devgames.com

Новости из мира независимых игровых разработчиков. Ссылки на другие интересные сайты.

 

www.gamasutra.com

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

 

www.lupinegames.com

Сайт Джеффа Хоуланда - разработчика игры Veiled Threat. Интересен в первую очередь своим ежедневно обновляемым "дневником разработчика". Очень рекомендую, крайне увлекательное "чтиво".

 

FAQ

Нужно ли знать ООП (объектно-ориентированное программирование), чтобы писать игры?

Теоретически - нет, практически - да. ООП-технология сама по себе ничего не добавляет непосредственно к игре, но зато позволяет отодвинуть момент, когда для внесения какого-нибудь мелкого изменения в код тебе придется переписать половину проекта. Заметь, я пишу "отодвинуть", так как не знаю, наверное, ни одной крупной программы, для которой подобный момент когда-нибудь бы ни наступил.

 

Обязательно ли использовать DirectX, чтобы писать игры под Windows?

Можешь не использовать, если у тебя личная неприязнь. В противном случае не вижу причины его избегать. DirectX абсолютно несложен для освоения (не говоря уже о готовых библиотеках, построенных на его базе), входит в базовый состав операционной системы (по крайней мере, Win95 OSR2, Win98, WinNT 4.0 - а у геймера ничего иного и не найдется) и, самое главное, делает твои игры быстрее и привлекательнее.

 

Нужно ли учить MFC?

Как хочешь. В играх MFC используется нечасто, но вот писать разнообразные редакторы и другие утилиты для твоей игры все-таки лучше с использованием MFC.

 

Можно ли программировать игры под Windows, используя старый добрый C и ассемблер?

Да, но какой смысл? Ассемблер пригодится разве что для написания двух-трех функций, наиболее критичных к скорости. Привязываясь же к С, ты лишаешься многих прелестей ООП, без которых, конечно, можно обойтись или сымитировать их средствами C, но... Но лучше еще раз подумай, стоит ли овчинка выделки.

 

Какая версия DirectX существует в Windows NT 4.0?

После установки Service Pack 3 в NT появляется DirectX 3.0, включая Direct3D, но без использования аппаратной акселерации. Service Pack 4 устанавливает компоненту DirectPlay версии 6.0, но остальные компоненты остаются из версии 3.0. Существует неофициальный выпуск DirectX 5.0 для NT, но он также не обеспечивает аппаратное ускорение функций Direct3D и DirectSound, кроме того, Microsoft не дает никаких гарантий его использования. В стандартной поставке новой Win2000 есть DirectX 6.1 с поддержкой аппаратной акселерации. Вероятно, что к началу официальных продаж Win2000 будет поставляться уже с DirectX 7.0. Кроме того, чтобы использовать компонент DirectMusic из DirectX 6.1, достаточно скопировать соответствующие .dll из Windows 98 и зарегистрировать их.

 

Hosted by uCoz