Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programming / GameProg / RPG_Programming_2ed.pdf
Скачиваний:
240
Добавлен:
12.02.2016
Размер:
12.06 Mб
Скачать

 

 

Джим Адамс

 

 

 

 

ПРИМЕЧАНИЕ

Зачем в игре беспокоиться о весе и размере предметов?

 

 

 

Вам нужен в игре подросток, размахивающий огромным

 

 

мечом? А как насчет крошечного эльфа, пытающегося

 

 

нести двухметровый меч и поклажу, которая в два раза

 

 

больше чем он сам? Многие игры игнорируют эти

 

 

проблемы, но если вы хотите, чтобы ваша игра выглядела

 

 

реалистично, учитывайте вес и размер.

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

typedef struct sItem

 

 

{

Name[32];

 

//

Краткое название предмета

char

 

char

Description[128];

//

Описание предмета

float Weight;

 

//

Вес (в кг.)

float Size;

 

//

Размер (в куб. дециметрах)

char

MeshFilename[16];

//

Имя X-файла с сеткой

char

ImageFilename[16]; //

Имя файла .BMP

} sItem;

 

 

 

 

ПРИМЕЧАНИЕ

Обратите внимание на 16-байтное ограничение размера

 

 

буферов

MeshFilename и ImageFilename — это значит,

что вы можете использовать имена файлов длиной только 16 символов (15 плюс завершающий символ NULL). Если

вы считаете, что вам потребуются более длинные имена, просто увеличьте размер буферов до требуемого.

Описание объекта Sword в игре будет выглядеть так:

sItem Sword = {

"Меч", "Большой тяжелый меч.",

2.25f, 12.68f, "Sword.x", "Sword.bmp"

};

Теперь меч готов к использованию! Ладно, не по-настоящему, поскольку сейчас мы задали только физические свойства меча (вместе с именами файлов для сетки и для изображения). Движку игры недостаточно этой информации чтобы использовать предмет. Здесь на сцену выходит функция предмета.

Определение функции объекта

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

netlib.narod.ru

479

Глава 11. Определение и использование объектов

быть отнесено к одной из следующих категорий (помните, что это не полный список, а лишь отправная точка для ваших идей):

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

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

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

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

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

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

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

Прочее. Все, что не попадает в перечисленные выше категории, классифицируется как «прочее».

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

У каждого предмета есть дополнительная информация для использования, так что мы не можем остановиться здесь. У оружия есть

480

netlib.narod.ru

Джим Адамс

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

Оружие

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

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

Персонаж не может использовать любое оружие; здесь есть ряд ограничений. Размеры, вес, мощность и цена — вот некоторые из ограничений, которые надо учитывать. Какое удовольствие, если в руках новичка окажется самое мощное оружие в игре? Поэтому вы добавляете ограничения использования (больше об этом вы узнаете в разделе «Ограничения использования»далее в этой главе).

Вернемся назад к тому факту, что одни виды оружия могут наносить больше повреждений, чем другие. Количество наносимых оружием повреждений определяется числом, называемым модификатор атаки (attack modifier). Чем больше число, тем больший ущерб наносит оружие. Кроме того, некоторые виды оружия проще в обращении, что позволяет вам чаще поражать цели. Чтобы определить, насколько легко поразить цель данным оружием, вы используете модификатор поражений (to-hit modifier). Чем больше модификатор поражений оружия, чем больше шансов, что персонаж, используя данное оружие, поразит цель. Об использовании модификаторов и о том, как эти модификаторы относятся к персонажам, вы подробнее узнаете в главе 12, «Управление игроками и персонажами».

ПРИМЕЧАНИЕ

Модификатор (modifier) — это нечто, меняющее каким-

 

либо образом атрибуты персонажа. Например,

 

модификатор повреждений (damage modifier) уменьшает

 

или увеличивает количество повреждений.

Некоторые типы оружия могут быть объединены в специальные группы, называемые группы вооружений (weapons groups). Отдельные виды оружия могут наносить конкретным созданиям больший вред, чем другие — для примера подумайте об использовании огненного меча против ледяного монстра.

И, наконец, вооружение может быть разделено на такие группы, как оружие ближнего боя (hand-to-hand) и оружие дальнего боя (ranged).

netlib.narod.ru

481

Глава 11. Определение и использование объектов

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

Броня

Чем больше защиты, тем лучше, и в игре помогает каждый кусочек брони. Броня помогает повысить сопротивляемость к повреждениям. Количество сопротивляемости называется модификатором защиты (defense modifier). Также как и у вооружения, у брони есть специальные возможности, ограничения использования и возможность объединения в группы защиты

(armor groups).

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

Аксессуары

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

Еда

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

Коллекции

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

Транспорт

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

482

netlib.narod.ru

Соседние файлы в папке GameProg