Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Создание ролевой компьютерной игры 1. Постановка задачи


Информационный Канал Subscribe.Ru

Постановка задачи

Вы играли в Диабло или Морровинд? Это и есть жанр ролевой игры.

Почему РПГ/RPG? Во-первых, потому что я их люблю, а во-вторых, программирование игр само по себе - самое сложное в программировании, и хорошо поняв, что будет делаться в этом проекте, вы уже станете очень приличными разработчиками для любых других проектов.

Важно, что в отличие от ВСЕХ других доступных в Рунете рассылок по обучению программированию или программированию игр - которые все без исключения живут два-три выпуска, а потом автор либо просто пропадает, либо в лучшем случае начинает извиняться, что дико занят, - в том, что ВЕСЬ материал по данной теме у меня ПОЛНОСТЬЮ готов. Единственный недостаток соответственно в том, что постоянного обсуждения и каких-либо доработок и усовершенствований just-in-time по этому проекту-игре не выйдет (так как, повторяю, уже ВЕСЬ текст готов), но тем не менее каждый подписчик по отдельности или какая-то группа энтузиастов вполне может на основании этого материала сделать свою полноценную игру с любыми модификациями.

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

Поехали?

Что мы будем делать

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

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

Постановка задачи

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

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

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

К этим концепциям, очевидно, относятся следующие понятия:

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

Карта. Карта описывает одну ограниченную в пространстве локацию (местность, область). Из таких локаций может быть составлен весь игровой мир. Локации в коммерческих РПГ обычно создаются профессиональными дизайнерами уровней, и в некоторых случаях генерируются случайно. Автоматическое создание хорошей локации - задача очень сложная и не решенная на качественном уровне до сих пор. Однако существует группа задач, где компьютер по технике генерации карты значительно превосходит человека. Это - создание лабиринтов, обычно представляющих собой подземные пещеры, состоящие, например, из множества комнат, соединенных длинными узкими коридорами. Мы опишем, как автоматически создавать несложные, но достаточно трудоемкие для прохождения локации.

В нашем примере размеры мира мы ограничим небольшим числом автоматически генерируемых локаций. Обобщение примера на мир, состоящий из большего количества локаций, оставляется для реализации читателю и требует несложного количественного расширения программы (например, добавления новых типов монстров). Эти локации будут связаны друг с другом по схеме, принятой в популярном жанре так называемых игр-"бродяг" (roguelike games). Каждая локация представляет собой один уровень пещеры, с которого можно либо дальше спуститься вниз, либо подняться вверх.

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

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

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

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

Игровая система. В заключение нам осталось определить игровую систему - набор правил, по которым в игре будет происходить различные события, прежде всего сражения. Конечно, в качестве такой системы можно взять D&D - последние ее редакции предоставляют создателю огромную свободу выбора персонажей и инвентаря, очень хорошо сбалансированы, содержат готовые алгоритмы проведения и расчета схваток, роста опыта и других параметров, и охватывают неисчислимое множество возможных сюжетов. Знатоки РПГ напомнят и о GURPS - общедоступной системе правил, которая в некоторых сферах превосходит D&D и не имеет таких старых ограничений как обязательный выбор класса игрока. На основе GURPS была сделана в частности ставшая легендарной пост-апокалиптическая РПГ Fallout.

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

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

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

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


(c) 2005 Сергей Бобровский
bobrovsky@russianenterprisesolutions.com

http://russianenterprisesolutions.com/sbo/


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.prognull.game
Отписаться
Вспомнить пароль

В избранное