Программирование стратегических игр с DirectX 9.0

       

Баланс ресурсов


Ах, опять это слово— баланс. Вы будете встречать его еще много-много раз. Баланс является ключевой особенностью любой хорошей стратегической игры, а ресурсы требуют тщательной балансировки.



Боевые единицы


Не во всех стратегических играх есть подразделения. Такие игры как SimGolf, Sim Theme Park и похожие на них вообще обходятся без сражений. Сперва вы можете решить, что эти игры не являются стратегическими, но если вы немного подумаете, то поймете, что это не так. Так или иначе, но это тема для отдельной дискуссии, а сейчас я собираюсь поговорить о боевых подразделениях.

Во всех связанных с военными действиями стратегических играх есть боевые подразделения. Некоторые игры, подобно Total Annihilation содержат сотни подразделений, а другие обходятся всего несколькими. Я не устану повторять, что ключ здесь— баланс. Поскольку вы пока находитесь на самых начальных стадиях разработки вашей собственной стратегической игры, надо с чего-то начинать. Я предлагаю сперва сосредоточиться на единственной, наиболее интересной вам боевой единицы. Кроме того, следует выбрать такое подразделение, существование которого не зависит от других. Самолет для авианосца был бы не самым лучшим выбором, гораздо лучшим вариантом является танк.

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



Броня боевых единиц


Я использую термин «броня», чтобы ссылаться на значение, определяющее защищенность боевой единицы. Хотя не все боевые единицы обладают способностью нападать на противника, почти все должны уметь обороняться. Что за удоволдьствие обладать боевой единицей, которая будет разрушена как только кто-либо другой атакует ее! Тщательно продумывайте оборонительные способности ваших боевых еднинц. На данном этапе не следует слишком беспокоиться о них, поскольку разработка наступательных и оборонительных способностей боевых единиц будет завершена на стадии балансировки вашего игрового проекта.



Цели миссий


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

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

Каждая миссия нуждается в определенной цели. Независимо от того, будет ли это спасение заложника, уничтожение танковой колонны или поиск секретного вражеского укрытия, наличие конкретной цели жизненно важно для интересной игры.

Вот пока и все об игровой кампании. Я еще вернусь к этой теме и мы обсудим ее более подробно в главе, посвященной написанию редактора игры.



netlib.narod.ru< Назад | Оглавление | Далее >



Дерево технологий

Если ресурсы являются сердцем стратегии реального времени, то дерево технологий— это ее скелет. Все происходящее в стратегии реального времени зависит от дерева технологий. Если вы не знакомы с этим понятием, поясню, что дерево технологий определяет эволюцию технологий в стратегии реального времени. Взгляните, например на упрощенное дерево технологий, приведенное на рис. 3.7.


Рис. 3.7. Простое дерево технологий

На рис. 3.7 первым узлом дерева является огонь. Поскольку огонь лежит в основе человеческих технологий, он в нашем случае является первым узлом, или стволом. От данного узла идут ветви к двум следующим технологиям: пару и металлургии. Поскольку и пар и обработка металов требуют огня, они естественным образом размещаются на ветвях, идущих от узла огня. Еще одна ветвь идет от пара к узлу с паровым двигателем. Это очевидно, поскольку вы можете изобрести паровой двигатель только если у вас уже есть пар.

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

ПРИМЕЧАНИЕ

Хотя я и называю рассматриваемую схему деревом технологий, она больше похожа на папоротник технологий. Я говорю так, потому что обычно она переворачивается вверх ногами с корнем сверху и ветвями под ним. Я уверен, что это вызвано скорее всего эстетикой и простотой восприятия.

Добыча ресурсов


Теперь, когда определены три ресурса для игры, необходимо указать, как игрок может их получить. Я начну с пищи. Поскольку Battle Armor — научно-фантастическая игра, я не хочу, чтобы игрок управлял толпами людей, вручную собирающих продовольствие. Вместо этого я выбрал более прогресивный метод — гидропонику.

Продовольствие производится гидропонным оборудованием. Следующий вопрос — как игроки могут строить гидропонные фабрики. Было бы очень неинтересно позволить игроку строить фабрики для добычи пищи в любом месте карты, поэтому я ограничиваю зоны возможного строительства гидропонных фабрик плантациями водорослей. Эй, знаешь что? От этого игра только получила большую глубину! Мало того, что имеется три основных вида ресурсов, кроме того, чтобы собрать один из них вам требуются фабрики, которые могут быть построены только на плантациях водорослей. Если бы я не поостерегся, то сказал бы что к неоперившейся игре добавилась еще одна цель: размещать плантации водорослей, чтобы строить производящие продовольствие фабрики.

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


Рис. 3.5. Гидропонная фабрика

Последний ресурс — топливо — теперь, когда другие два ресурса уже определены, тоже выглядит достаточно прростым. Следуя установленному шаблону, я хочу, чтобы для производства топлива игрок покупал нефтеперегонные заводы. Недостаточно просто приобрести нефтеперегонный завод, его надо построить на месторождении нефти. Изображение нефтеперегонного завода приведено на рис. 3.6.


Рис. 3.6. Нефтеперегонный завод

Теперь, когда ресурсы игры Battle Armor остались позади, вы увидели процесс определения ресурсов для ваших стратегий реального времени. Он сводится к следующим этапам:

Определение необходимых ресурсов.

Определение способов получения ресурсов.

Определение ограничений на получение ресурсов.

Единственный предел создания ресурсов для вашей игры — ваше воображение. Для Battle Armor был использован очень простой метод. Я поощряю вас придумывать более занимательные типы ресурсов и способы их добычи.



Главные вехи


В Empire Earth вы начинаете игру в доисторическом веке. Чтобы выйти из доисторического века вы должны собрать заданное количество пищи. Это объясняет почему важно собирать пищу— она необходима вам для развития цивилизации. Фактически, в игре каждый временной период назван эпохой. Когда ваша цивилизация готова войти в следующую эпоху, вы тратите требуемые ресурсы и ждете некоторое время, пока не произойдут изменения. Самое интересное в эпохах то, что каждый раз когда вы переходите к новой эпохе у вас появляются новые объекты, доступные для строительства. Вы не только можете строить лучшие здания, но и можете тренировать лучшие войска. Это подводит нас к следующему ключевому пункту: главным вехам игры. Как следует из заголовка, такое глобальное событие в игре, как переход к новой эпохе, рассматривается как главная веха. На рис. 3.3 показаны эпохи, доступные в Empire Earth.


Рис. 3.3. Эпохи в игре Empire Earth

На рис. 3.3 видно, что игра поддерживает тринадцать эпох. Каждая из них дает дополнительные преимущества игроку и увеличивает игровые возможности. Хотя вехи делают игру увлекательнее, постарайтесь ограничить их количество. Сведя количество вех к минимуму, вы не будете рисковать запутать игрока. Предполагаю, что игроки — не сборище безмозглых дураков. (По крайней мере, я надеюсь на это — так как сам я тоже игрок!) Но вы все же должны быть бдительными при создании игры, чтобы в нее было просто начать играть.



Игровая кампания


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

Причина, по которой я говорю об этих играх, как о заранее подготовленных заключается в том, что все игры кампании созданы для вас разработчиками. В отличие от многопользовательских игр или схваток, в режиме кампании есть установленные опасности и награды. Например в игре Emperor: Battle for Dune, выпущенной Westwood, требуется, чтобы вы доказали свою ценность для клана, выполняя простые задачи, такие как управление в сражении небольшим подразделением боевых единиц. По мере развития кампании вам поручают выполнение все более трудных задач. Кроме того, по мере продвижения игры задачи также становятся более длительными и более сложными.



Элементы сюжета


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



Конечная цель сюжета


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

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

netlib.narod.ru< Назад | Оглавление | Далее >



Многопользовательская игра


Ах, моя любимая часть стратегических игр — многопользовательская игра! Лично я не слишком много играю в стратегии реального времени в режиме однопользовательской кампании, а предпочитаю сразиться с другими игроками в сети или играть против компьютера вместе с несколькими друзьями. Нет ничего более интересного, чем жаркая битва с другими людьми вокруг. Тем не менее, однопользовательский режим очень важен, поскольку многие люди наслаждаются им.

Раз вы собираетесь писать стратегическую игру, вам следует предусмотреть включение поддержки многопользовательского режима игры через Интернет или локальную сеть. Сейчас для этой цели обычно применяются два метода: использование сокетов или DirectPlay. По ряду причин я предпочитаю DirectPlay, но низкоуровневые сокеты работают ничуть не хуже.

В зависимости от сложности вашей игры следует предусмотреть поддержку одновременного участия от четырех до восьми игроков. Обычно восемь игроков — это слишком много для большинства систем, но в этм нет ничего невозможного. Главным ограничением является максимальное количество подразделений, которое может создать каждый игрок. Если ваша игра основана на наличии у каждого игрока нескольких уникальных подразделений, можно реализовать одновременную игру большого числа людей. Если же ожидается, что в вашей игре у каждого игрока будет примерно 200 боевых единиц, вы столкнетесь с проблемами, когда в вашей игре одновременно захотят участвовать достаточно много человек. Для простоты я предлагаю, чтобы вы начали с поддержки шести игроков — прекрасная, золотая середина.

С поддержкой многопользовательского режима связано несколько технических проблем. Одна из них — поддержка сохранения игры. Лишь несколько стратегических игр поддерживают такую возможность в многопользовательском режиме. Единственной, где я успешно использовал ее, была Age of Empires II. Я должен сказать, что это очень полезная возможность. Поскольку сеанс стратегической игры может длиться несколько часов, возможность сохранения неоценима.

netlib.narod.ru< Назад | Оглавление | Далее >



Начальные цели


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


Рис. 3.1. Первая цель в игре Empire Earth

Вот к чему мы пришли: первая цель игры — добыть древесину для постройки зданий. Из первой цели можно вывести другие. Что, например, поможет добывать древесину быстрее? Очевидный ответ — отправить на лесозаготовки больше граждан. Ведь вы не можете купить своим пещерным людям бензопилы!

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

На рис. 3.2 я добавил две новых цели. Первая — увеличение населения, чтобы обеспечить более быструю добычу ресурсов. Вторая — добывание пищи, необходимой чтобы кормить людей, собирающих ресурсы. О, каким порочным кругом это становится!


Рис. 3.2. Вторая и третья цели игры Empire Earth

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

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



Очки повреждений


Термин «очки повреждений» (hit points) пришел из ролевых игр старой школы, но нашел свое место и в других, связанных со сражениями компьютерных играх. Вы уже знаете, как вычислить защищенность или оценку брони, а теперь следует учесть какое количество повреждении может выдержать боевая единица до своего разрушения.

Для очков повреждений нет никаких сложных алгоритмов — это обычное число, показывающее сколько единиц повреждений может получить боевая единица до своего уничтожения. Давайте вернемся к примеру с броней. У пехотинца, получившего 90 единиц повреждений, было 50 очков повреждений, а значит в результате атаки он погиб. С другой стороны, танк получил только 10 единиц повреждений, обладая 1000 очков повреждений. Чтобы упростить жизнь я рекомендую создать для боевых единиц вашей игры шкалу от 50 до 5000 единиц. Слабейший из слабых может выдержать только 50 единиц повреждений, в то время, как самая сильная боевая единица может получить до 5000 единиц повреждений. Видите, как просто?



Огневая мощь боевых единиц


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



Описание событий


Для начала скажу, что Empire Earth очень похожа на игру Age of Empires где вы создаете цивилизацию на протяжении нескольких эпох, таких как каменный век и средневековье. Главное отличие Empire Earth состоит в том, что вы можете вести вашу цивилизацию гораздо дальше во времени, чем в игре Age of Empires. Фактически, вы можете открыть вашей цивилизации дорогу в будущее. Это не только делает игру более захватывающей, но и вносит в нее изрядную долю сложности. Конечно, это хорошо для вас, поскольку в результате в игре появляется несколько целей.

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



Определение ресурсов


После того, как цели определены, вы вычисляете способ их достижения. Первая цель— накормить население — весьма прямолинейна. Чтобы кормить людей игрок должен собирать или выращивать продовольствие. Итак, первый ресурс это пища. Пока все очень просто, правда?

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

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



Пример для изучения — Empire Earth

Чтобы прояснить разбираемый вопрос, я взял на себя смелость разбить процесс игры Empire Earth на несколько целей. Цели, которые я вношу в список, используются в однопользовательской игре против компьютера. Помните об этом, если вы когда-либо играли в эту игру в другом режиме и удивляетесь, какого черта я придумал свой список!

ПРИМЕЧАНИЕ

Если вы никогда не играли в Empire Earth, я советую вам посетить сайт этой очень интересной игры, расположенный по адресу http://empireearth.sierra.com.

Пример несбалансированности


Возьмем для примера старую игру Total Annihilation выпущенную Cavedog. В Total Annihilation, или TA как часто называют ее, игрок добывает металл и энергию. Вот это простота — всего два ресурса!

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

Из моих объяснений вы, вероятно, поняли, что ресурсам в TA не хватает одного этапа определения ресурсов для стратегий реального времени. Этот этап ни что иное, как накладывание ограничений. Если у игроков нет никаких ограничений на то как или когда они могут добывать ресурсы, ваша игра получится несбалансированной.



Пример сбалансированности


Существует много примеров сбалансировааности. Command& Conquer выделяется тем, что игроки сильно зависят от тибериума. Замечательной особенностью является то, что запасы тибериума возобновляются очень медленно, и ни один игрок не может владеть всеми полями тибериума целиком. Здесь располагается главное ограничение, предотвращающее безнаказанный захват источников ресурсов игроком. Когда источник жизненно важных материалов оказывается в опасности, для игрока наступает время, требующее напряжения всех сил.



Расстановка целей


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

Для примера возьмем игру Warcraft разработанную Blizzard. В ней целью игрока является нанести поражение оркам или людям, в зависимости от того на стороне какой расы выступает сам игрок. Это звучит достаточно просто, так что давайте разобъем путь к победе на несколько промежуточных целей.

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

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



Различные типы технологий


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

Инфраструктура.

Вооружение.

Модернизация.



Редактор миссий


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

Большинство стратегических игр содержат от 20 до 30 встроенных миссий для однопользовательской игры. Этого достаточно, чтобы занять игрока, пока не будет выпущен дополнительный пакет миссий. Да, я знаю, что это может казаться неудовлетворительным решением, но игровые компании не могут существовать не получая прибыли. Вы должны всегда планировать свои игры расширяемыми, чтобы если они обретут популярность можно было гарантировать быстрый выпуск дополнительных миссий или продолжения. Достаточно взглянуть на серию игр Age of Empires от Ensemble, чтобы увидеть что могут сделать для вас продолжения. Другой замечательный пример — RollerCoaster Tycoon. Держу пари, что Крис Сойер, автор игры, никогда не воображал тот огромный успех, которым пользуется его захватывающая игра, посвященная строительству парка аттракционов. Если вы следите за этой серией, то знаете что были выпущены десятки дополнений.



Сюжет


Чем была бы игра без сюжета? Чтобы лучше понять это, подумайте чем стали бы интересные персонажи любой книги без другой второстепенной информации. Они бы стали очень скучными. То же самое справедливо для стратегических игр и для большинства видеоигр вообще. Не поймите меня неправильно, чтобы создать интересную игру вам не надо быть сценаристом с мировым именем. Но хороший сюжет помогает полному погружению в вашу игру.



Сюжетная основа


Любой хороший сюжет имеет основу, и сюжет игры не является исключением. Сюжетная основа придает игровому сценарию глубину и смысл. Игрок сильнее стремится к победе, когда понимает причину этого. Например, взглянем на игру Command& Conquer от Westwood. В ней NOD сражается с GDI за контроль над полями тибериума. Если бы этой основы не существовало, игроки могли бы задаваться вопросом: почему NOD и GDI сражаются друг с другом.

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



Скорость боевых единиц


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

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



Скорость добычи


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

СОВЕТ

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

netlib.narod.ru< Назад | Оглавление | Далее >



Скорость оружия


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



Скорострельность


Скорострельность боевой единицы определяет как часто может стрелять установленное на ней оружие. Достаточно взглянуть на современное оружие, чтобы увидеть разницу в том как часто стреляет пистолет и как часто стреляет автомат. Различие между этими двумя типами вооружения выражается в скорострельности. Обычно более мощное оружие стреляет реже. Это, конечно, не справедливо для автомата, но истино для других видов вооружения, таких как корабельные орудия и ракетные системы земля-воздух.



Специальные повреждения


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



Стоимость боевых единиц

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

СОВЕТ

Термин «лавина» происходит от тактики, когда игрок строит множество дешевых боевых единиц, формирует из них армию, и обрушивает ее на противника. Это настоящая форма блтцкрига, причем весьма опасная. Проблема в том, что данная тактика почти ничего не стоит в плане ресурсов, и большинство игр заканчиваются победой того игрока, который быстрее сформирует армию и обрушит ее на противника. Другая отрицательная сторона заключается в том, что большинство стратегий реального времени, страдающих от такого рода атак не имеют никакой защиты против подобной тактики. Помните, любая стратегия в игре нуждается в существовании противостратегии. Если это не так, игра превратится в постоянное скучное повторение одной и той же тактики.

Стоимость технологий


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

Выбирая стоимость технологий для вашей игры следует помнить о нескольких ключевых пунктах:

Убедитесь, что разработка технологии занимает какое-то время. Чеб более ценна технология, тем больше времени должно требоваться для ее открытия.

Убедитесь, что технология требует ресурсы, которые имеют отношение к ней. Другими словами, не делайте так, чтобы технология требовала ресурсы, которые не имеют с ней ничего общего.

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

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


Рис. 3.9. Дерево технологий с указанием затрачиваемых ресурсов

netlib.narod.ru< Назад | Оглавление | Далее >



Технологии для инфраструктуры


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

В качестве примера рассмотрим игру Age of Empires. В ней вы не можете создать кавалерию, пока не построите конюшни. Вы не можете построить конюшни, пока не достигнете второй эры. Таким образом технологии формируют основу инфраструктуры.



Технологии для модернизации


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

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


Рис. 3.8. Модернизированная гидропонная фабрика



Технологии для вооружений

«...И будут спущены с цепей псы войны...»

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

Я помню игру Alpha Centauri. Это замечательная игра, которая фактически является Civilization в космосе. Единственная проблема, с которой я столкнулся, заключалась в том, что дерево технологий было очень запутанным. Поскольку игра является научно-фантастической, у всех технологий были фантастические названия, никак не связанные существующей действительностью. Это приводит к проблемам, поскольку разработчики знают, что они подразумевают, но у игроков нет никакого ключа, чтобы понять, о чем думал разработчик! Тот факт, что ваша игра основана на научной фантастике не означает, что вы должны создать для нее полностью новый язык.

СОВЕТ

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

Тема сюжета


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

Научная фантастика.

Средневековье.

Вестерн.

Мир после катастрофы.

Есть множество других возмжных тем, которые можно выбрать или придумать; главное — выбрать одну и работать с ней. Возьмите, например, игру Star Wars: Galactic Battlegrounds, основанную на широко известной саге «Звездные войны», созданной Джорджем Лукасом. Она конечно попадает в категорию научной фантастики. Другим примером игры может служить Stronghold, где сюжет вращается вокруг захвата и строительства замков, и, следовательно, относится к средневековью. Я рекомендую выбирать тему, которая вам действительно нравится. К тому же, идеи для сюжета проще придумать, когда его тема интересна вам.



Тип повреждений


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



Управление ресурсами


Какая стратегия реального времени может считаться законченной без управления ресурсами? Держу пари, что вы не сможете привести более пары примеров. Управление ресурсами лежит в самом сердце большинства стратегий реального времени. Я говорю не о счетчике спрятанных в холодильнике консервированных бобов, а о материале, из которого сделаны легенды истории стратегий реального времени. У каждого лидера продаж прошлого было управление ресурсами. В Warcraft были древесина, золото и камни. В Command& Conquer был тибериум. В Age of Empires были древесина, золото, камень и пища. Этот список можно продолжать бесконечно.

Возможно, вы говорите себе «Большое дело! Управление ресурсами легко реализовать». Прежде чем сделать подобный вывод, минутку подумайте о том, насколько сложной может быть такая простая вещь, как управление ресурсами. Вернемся к моему предыдущему примеру с пищевыми ресурсами в игре Empire Earth. Описав только первые 15 минут игры, я уже отметил многие связанные с ним сложности и причины для беспокойства. В предыдущем разделе ресурсы рассматривались главным образом с точки зрения игрока. Теперь, когда мы подошли к вопросам реализации ресурсов, пришло время взглянуть на них с точки зрения разработчика.



Выберите, что вы будете пить


Первое необходимое действие — выбор ресурсов, которые должен собирать игрок. В зависимости от сложности вашей игры, потребуется наличие от трех до шести видов ресурсов, которые будет добывать игрок. Я всегда люблю обучать на примерах, поэтому давайте начнем с игры, над которой я работал некоторое время. В игре Battle Armor есть три основных вида ресурсов: топливо, руда и пища. Вы можете спростить — как я придумал их? Проще простого — я всего лишь напечатал их названия! Это была шутка. В действительности все следует начинать с записи некоторых ключевых целей для игрока. Для Battle Armor я придумал следующий список целей:

Кормить население.

Строить инфраструктуру.

Увеличивать армию.



Вычисление обороноспособности


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

Таблица 3.1. Броня боевых единиц

Тип брони Огонь Снаряд Химическое
оружие
Личная 0,1 0,2 0,5
Тяжелый танк 0,9 0,7 0,8
Легкий танк 0,7 0,6 0,7

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

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

100 (наносимый ущерб) x 0.1 (оценка брони) = 10 единиц поглощено броней

Эта формула означает, что пехотинец получит следующее количество повреждений:

100 (наносимый ущерб) – 10 (поглощено броней) = 90 единиц повреждений получено

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

100 (наносимый ущерб) x 0.9 (оценка брони) = 90 единиц поглощено броней

100 (наносимый ущерб) – 90 (поглощено броней) = 10 единиц повреждений получено

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



Вычисление скорости боевых единиц


Что касается математической стороны расчета скорости боевых единиц, я рекомендую вам создать базовую шкалу скоростей со значениями от 1 до 100, где 1 соответствует самой медленной скорости, а 100— самой быстрой. Используя подобную шкалу вы можете просто умножить скорость боевой единицы на метод ее передвижения, чтобы получить перемещение.



Вычисление скорости снаряда


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

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

netlib.narod.ru< Назад | Оглавление | Далее >



Вычисление скорострельности


Хорошо зарекомендовавший себя на практике метод вычисления скорострельности— определить сколько раз в минуту может выстрелить конкретное оружие. Это дает хорошую систему для установки параметров скорострельности (rate of fire, ROF) или количества снарядов в минуту (round per minute, RPM) ваших систем вооружения. Несколько примеров приведено в таблице 3.2.

Таблица 3.2. Скорострельность

Оружие Снарядов в минуту
9-мм пистолет 120
M1917A1 — влагозащищенный автомат калибра .30 400 – 600
Автоматический пистолет PPS43 700
81-мм гранатомет M1 18

Как видно из таблицы 3.2, автоматическая винтовка имеет гораздо большую скорострельность чем миномет. Это имеет смысл, если принять во внимание перечисленные виды оружия.



Заключительная цель


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

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


Рис. 3.4. Полное дерево целей игры Empire Earth

netlib.narod.ru< Назад | Оглавление | Далее >



Фаза идей


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

В данной фазе вы придумываете идею вашей программы. Так как вы имеете дело со стратегическими играми, стоит задать несколько вопросов, таких как:

К какому типу относится стратегическая игра— реального времени или походовая?

Игра основана на реальных или на вымышленных событиях?

В какой период времени разворачивается действие игры — средневековье, Гражданская война, Вторая Мировая война или будущее?

Игра будет однопользовательской, многопользовательской или поддерживать оба режима?

Графика будет двухмерной, трехмерной или и той и другой?

Как долго длится средний раунд игры до завершения?

Какова цель игры?

Игра в основном стратегическая или тактическая?

Игра простая или сложная?

Как выиграть в игре?

Как проиграть в игре?

Как долго продолжается игра до победы?

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



Фаза определения требований


Хорошо, у вас есть ясно очерченная идея игры и вы готовы перейти к фазе определения требований. В этой фазе вы определяете, что должно быть в игре, чтобы она была признана готовой к производству. Будьте осторожны, чтобы не оказаться слишком честолюбивым, иначе вы закончите с проектом-монстром!

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

Используя в качестве примера мой предыдущий набросок, вот как бы я перечислил требования для раздела многопользовательской игры:

Требования для многопользовательской игры.

Поддержка от 2 до 16 игроков.

Игра может быть сохранена и заново загружена.

Необязательный выделенный сервер.

Администратор игры может отключать и блокировать игроков.

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

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

netlib.narod.ru< Назад | Оглавление | Далее >



Фаза производства


Ко времени перехода в фазу производства в вашем программном обеспечении не должно быть ошибок с серьезностью выше низкой. Если осталась хоть одна ошибка с высокой серьезностью, коду не место в этой фазе!

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

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

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

netlib.narod.ru< Назад | Оглавление | Далее >



Фаза разработки


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

Очевидно, что в течение фазы разработки вы разрабатываете игру. Хотя вы и знакомы с этой фазой. возможно, вы упустили из виду следующие ключевые моменты:

Контроль исходного кода.

Управление метками.

Отслеживание ошибок.

Тестирование отдельных частей.



Фаза технической документации


Руководители проекта и дизайнеры закончили свою работу, и теперь на сцену выходят разработчики, которые пишут техническое задание. Оно основывается исключительно на документе с формулировкой требований и ни на чем более. Если что-то отсутствует в документе с требованиями, оно не будет помещено и в техническое задание.

Пока это может звучать несколько запутано, так что взгляните на рис. 4.1, чтобы получить визуальное представление.


Рис. 4.1. Взаимоотношения между проектной документацией

На рис. 4.1 вы видите как высокоуровневая идея игры обретает плоть в наброске. Элементы наброска служат основой для документа с формулировкой требований. Каждый элемент наброска разбивается на несколько требований, которые, в свою очередь служат основой для технического задания. В техническом задании выделены и подробно описаны основные задачи программирования. Возьмем для примера требования к многопользовательской игре которые я сформулировал в предыдущем разделе.

Требования к многопользовательской игре

Необязательный выделенный сервер

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

На одном компьютере можно запускать одновременно несколько выделенных серверов.

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

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

Сосотояние игры отображается в окне интерфейса командной строки сервера. Должны выводиться такие сведения как количество игроков, текущее время игры, среднее время игры и сообщения об ошибках.

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

Теперь возьмите ваш документ с требованиями и составьте техническое задание. Вы должны перечислить все, о чем можно подумать, рассматривая игру с точки зрения разработчика. В отличие от документа с требованиями, этот не столь гибок и может вызвать значительные разветвления проекта, если вы забыли что-либо включить в него. К счастью, поскольку вы сами являетесь разработчиком, — завершить эту фазу вам будет проще всего. Я завершил написание технического задания для моего последнего проекта приблизительно за три недели (в результате получился документ, объемом 137 страниц!).

netlib.narod.ru< Назад | Оглавление | Далее >



Фаза тестирования


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

В фазе тестирования команда тестировщиков подвергает вашу программу различным испытаниям. Обычно у команды тестировщиков есть документ, называемый план возвратного тестирования (regression plan), содержащий список испытаний, которым следует подвергнуть вашу программу. Если все пункты плана возвратного тестирования выполняются без ошибок, ваш код значительно продвигается к стадии бета-версии.

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

Несколько простых этапов процесса тестирования показаны на рис. 4.3.


Рис. 4.3. Процесс тестирования

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

netlib.narod.ru< Назад | Оглавление | Далее >



Издатели


Если вы думаете, что ваша игра достаточно хороша для издателя, можете попробовать предложить ее некоторым сетевым издательствам. Одна из таких компаний — Garage Games, которая может издать вашу игру за определенный процент с продаж. Дополнительную информацию можно получить на сайте www.garagegames.com.

Если вы хотите, чтобы вашу игру опубликовал издатель с мировым именем, вроде Electronic Arts, вам лучше иметь первосортную игру. Я настоятельно рекомендую, чтобы вы подумали об этом перед созданием вашей игры. Вам необходимо озвучить свой бизнес-план, кроме того вам потребуется большой опыт. В действительности, это наиболее трудная вещь которую вы можете попытаться сделать, если ваше имя еще никому не известно. Я советую вам самостоятельно выпустить несколько популярных игр, прежде чем вступить на этот путь.

netlib.narod.ru< Назад | Оглавление | Далее >



Контроль исходного кода

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

Делали ли вы когда нибудь изменение в стабильном коде только чтобы обнаружить, что оно привело к появлению ошибки или к нестабильности? Если да, то возврат к предыдущей версии и вычисление, какие изменения привели к возникновению проблем, может быть действительно болезненным. Используя контроль версий, вы можете получить старый код, проверить его и вычислить где появилась ошибка. Это дает как минимум отправную точку для последующих поисков. Кроме того утилиты, такие как WinDiff, позволяют вам сравнивать две версии кода и точно видеть различия между ними. Это неоценимо!

СОВЕТ

Утилита WinDiff включена в операционную систему Windows. Если вы используете Windows2000, ME или XP, она должна у вас быть. Щелкните по кнопке Start (Пуск), выберите пункт Run (Выполнить), и введите WinDiff. После щелчка по кнопке OK, вы увидите окно программы WinDiff. Поиграйтесь с программой и попробуйте сравнить два похожих файла, чтобы увидеть различия. Держу пари, вы полюбите эту утилиту!

На рынке существует множество программ, которые помогут вам в организации контроля исходного кода. Наиболее попуярной из тех, которые я видел до настоящего времени, является CVS. Чтобы увидеть ее в действии, посетите сайт www.sourceforge.net. На SourceForge.net существуют тысячи проектов с открытым исходным кодом, которые вы можете посмотреть. Там есть даже свободно распространяемые стратегические игры и игровые библиотеки! Информацию о CVS можно получить на сайте www.cvshome.org.



Метрики качества


Одно из преимуществ наличия истории ошибок состоит в том, что на основании исторического архива вы можете создавать метрики качества. Вы можете вернуться во времени и увидеть, где было обнаружено больше всего ошибок. Была ли большая часть ошибок найдена во время тестирования? Или они были обнаружены в бета-версии? А может они были обнаружены во время производства? Ответив на эти вопросы вы сможете обнаружить дыры в ваших стандартах качества и попытаться устранить их. Если большая часть ошибок была обнаружена во время тестирования, попытайтесь выяснить, почему разработчики отправляют тестировщикам код, который содержит так много ошибок. Если большинство ошибок найдено в бета-версии, необходимо установить, почему тестировщики пропустили их. Если большинство ошибок обнаружено во время производства, вы должны выяснить, почему их пропустила команда, выпускающая бета-версию. Хуже всего, когда ошибка достигает фазы производства. Устранение ошибок на этом этапе может обойтись вам очень дорого.

Суть в следующем: метрики качества позволяют изолировать узкие места в вашем цикле тестирования и отслеживать вносимые усовершенствования.



Отслеживание

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

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

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

СОВЕТ

Один из пакетов, которые я использую для отслеживания ошибок называется TestTrack и выпущен Seapine Software. Посетите веб-сайт этой компании, расположенный по адресу www.seapine.com.

Отслеживание ошибок


Предположим, во время игры вы обнаружили ошибку в вашем коде. Что делать дальше? Вместо того, чтобы сразу исправлять ее, вам необходимо ввести данные о ней в систему отслеживания ошибок. Зачем? Использование программ отслеживания ошибок приносит много выгод. Основные из них— отслеживание, привязка к исходному коду и метрики качества.



Привязка к исходному коду


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



Распространение


Теперь у вас в руках есть полностью законченная игра; как поступать дальше? В то время как предыдущие разделы этой главы были посвящены внутренней работе цеха профессионалов, данный раздел посвящен тому, как славный малый представляет выпущенную игру публике. Может быть этим «славным малым» будете вы, может быть, кто-то другой, но в любом случае этот раздел поможет вам.

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



Сайты аукционов


Другой метод — упаковать вашу игру и руководство к ней в коробку и выставить на продажу на eBay или другом Интернет-аукционе. Вы не должны столкнуться с трудностями, устанавливая цену на игру в районе 10 долларов; однако помните, что цена должна окупать затраченные усилия. Единственная проблема, связанная с этим методом, заключается в том, что у публики будет очень ограниченное представление о вашей игре. Чтобы противодействовать этой проблеме, вы должны разместить на общедоступных сайтах демонстрационную версию вашей игры. В демонстрационную версию поместите ссылку на свой сайт, чтобы заинтересовавшиеся люди могли получить информацию о том, как купить полную версию игры.

Большинство записывающих приводов CD-ROM в наши дни очень дешевы, настолько же дешевы чистые диски. Общая стоимость упаковки вашей игры не должна превысить двух долларов. Как видите, прибыль весьма значительна; только убедитесь, что вы продемонстрировали игру широкой общественности до того, как будете пытаться продать ее. Я так же не беспокоился бы о том, чтобы заранее упаковывать много копий. Делайте это по мере поступления заказов.

Вы можете даже пробовать продавать разрешения на загрузку вашей игры. Некоторые клиенты не согласятся на такой вариант, но если у вас есть подобная возможность, это более простой способ, чем продажа компакт-дисков. Одно из мест, где вам предоставят такую возможность — www.digibuy.com.



Создание наброска


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

Исходные данные

Вторая Мировая Война

Сражения Паттона

Тщательное моделирование реальных событий

Сражения

Уровень бригад

Основное внимание механизированным подразделениям

Команды передаются вниз до уровня подразделений

Реализм

Туман войны

Проблемы с коммуникациями

Отсутствует вид со спутника

Возможные маршруты

Необходимость маршрутов снабжения

Игроки

Один игрок

Игровая кампания

Многопользовательский режим

Стычки между отрядами

События однопользовательской кампании

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

Читая мой набросок, вы представляете основную идею игры — реалистичная игра, посвященная танковым сражениям Второй Мировой войны. Несомненно, есть сотни деталей, которые еще следует определить, но это только первая стадия разработки программы.

netlib.narod.ru< Назад | Оглавление | Далее >



Тестирование отдельных частей


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

Лично я руководствуюсь следующими принципами, прежде чем передаю свой код в тестирование:

Код выполняется без сбоев 5000000 раз в одном потоке.

Код выполняется без сбоев 5000000 раз одновременно в 32 потоках.

Код работает без сбоев в течение одной недели.

Код без сбоев проходит полное возвратное тестирование.

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

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

netlib.narod.ru< Назад | Оглавление | Далее >



Управление метками


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

Main.cpp

Версия 1.4

Версия 1.3

Версия 1.2

Версия 1.1

Версия 1.0

Main.h

Версия 1.2

Версия 1.1

Версия 1.0

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

Main.cpp

Версия 1.4

Версия 1.3 BETA

Версия 1.2

Версия 1.1

Версия 1.0

Main.h

Версия 1.2 BETA

Версия 1.1

Версия 1.0

Только взгляните на это! Возле тех файлов, которые использовались при создании бета-берсии стоит метка BETA. Все, что вам теперь остается сделать — выбрать исходный код с меткой BETA. К счастью программное обеспечение для контроля исходного кода позволяет снабжать код меткой или номером ревизии, так что для вас все автоматизировано. Вы должны также отметить насколько важны метки с точки зрения стабильности. Если бы для постройки бета-версии вы взяли бы самые последние файлы, у вас оказался бы выбран неправильный файл Main.cpp. Это могло бы вызвать огромные проблемы во всем проекте. Вышеупомянутый пример проиллюстрирован на рис. 4.2.


Рис. 4.2. Версии и метки исходного кода



Условно-бесплатные программы


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

Единственная проблема с условно-бесплатными программами заключается в том, что ваши шансы заработать реальные деньги практически равны нулю. Честно говоря, гораздо больше шансов быть пораженным молнией. Если ваш основной мотив — заставить людей запускать вашу игру, то условно-бесплатные программы можно рассматривать как полезный метод. Только не ожидайте, что таким образом вы заработаете на жизнь.

Одно из возможных мест для размещения ваших файлов называется FilePlanet. Оно располагается по адресу www.fileplanet.com. Вы можете разместить файл размером до 200 Мбайт, и он будет доступен другим посетителям для скачивания. (Убедитесь, что указали адрес для тех людей, которые захотят сделать пожертвования!)

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