Добрый день. С
сегодняшнего дня я постараюсь как можно чаще выкладывать уроки по созданию игры
жанра РПГ на паскале с последующей переделкой ее на делфи. Сборник статей попал
ко мне от моего научного руководителя. Но качество этих статей было не очень
хорошим. Распечатано было все на листах формата А4. Мне понравилось то, что там
рассматриваются все аспекты создания игры, а также полный исходный код с разъяснениями
также присутствует.
Попытался я
найти что-то подобное в сети интернет, но мои деяния увенчались провалом! Тогда
я отсканировал страницы и решил их распознать, но полученный тест
получился - набором абракадабр. Поэтому
в итоге решил вручную переписать для Вас все страницы с нуля. Начало некоторых
слов практически не видно, но я постараюсь по логике вещей максимально точно
все подать. Главное чтобы не пострадал исходный код. И еще очень жаль, что о
авторе этих статей мне не известно абсолютно ничего, но сам русский текст похож
на текст из переводчика, поэтому можно сделать допущение, что автор из-за
рубежа. Хотя может просто написано было неграмотным языком. Постараюсь подать в
оптимальном виде. Итак начнем.
Урок 1.
Введение
Мы начнем
повышать свою квалификацию на уже новом весьма масштабном проекте – создания
ролевой игры жанра РПГ «Единица»! Играли в Диабло или Морровинд? Вот-вот это
они, РПГ.
Почему РПГ?
Во-первых потому, что я их люблю, а во-вторых программирование игр само по себе
– самое сложное в программировании и хорошо поняв что будет делаться в Единице,
вы уже станете очень приличными разработчиками для любых других проектов. При
этом уровень требуемой для последующего процесса подготовки рассчитан именно на
завершившего базовый курс.
Важно в этом
следующей нашим с вами шаге то, что в отличие от ВСЕХ других доступных в Рунете
рассылок по обучению программированию или программированию игр, которые все без
исключения живут два-три выпуска и более, а потом автор либо просто пропадает,
либо начинает извиняться, что дико занят, - весь материал по данной теме у меня
уже ПОЛНОСТЬЮ готов. Единственный недостаток соответственно в том, что
постоянного обсуждения и каких-либо доработок и усовершенствований just-in-time
по этому проекту-игре не выйдет (так, как я повторяюсь, уже ВЕСЬ текст готов),
но тем не менее каждый подписчик по отдельности или какая-то группа энтузиастов
вполне может на основании этого материала сделать свою полноценную игру с
любыми модификациями. Итак поехали?
Что мы будем
делать? Создание коммерческих ролевых игр – достаточно сложное и требующее
солидных навыков и знаний из области организации, проведения таких игр,
глубокого понимания правил и игровых систем. Оно требует начальной подготовки и
детального продумывания игрового мира, его карты, истории и тенденций будущего
развития, структуры городов и местностей, героев, населения, экономики,
политики, религии и множества других характеристик, которые учесть изначально
очень трудно. Поэтому в игровых кампаниях над ролевыми играми работают большие
коллективы, в которые входят не только программисты, но и художники, музыканты,
а также люди подчас определяющие стратегический успех или неудачу проекта –
сценаристы, дизайнеры уровней и локаций и эксперты по игровым системам
наподобие Dungeons & Dragon или Gurps. От их способности создать
захватывающий, увлекательный виртуальный мир со всеми красками и звуками,
фактически и зависит конечный рыночный спрос на игру.
Однако
создается игра конечно программистами. Именно эти рутинные работяги формируют
итоговый продукт и вкладывают виртуальную жизнь и идеи, которые другие участники
проекта готовят в виде электронной документации, изображений, анимационных и
музыкальных ресурсов. Этому техническому аспекту создания ролевых игр и
посвящена данная рассылка.
Постановка
задачи. Можно, конечно, попробовать с самого начала максимально подробно
описать на бумаге мир, предназначенный для компьютерной реализации. Такой
подход наиболее оптимален для быстрого и качественного создания программы.
Однако эта работа может занять не один день, не один месяц и даже не один год.
Господин Толкиен изобретал свой прекрасный мир десятки лет. Но в нашу, более
скромную задачу, входит всего лишь создание законченного учебного примера,
который охватывает все аспекты создания легко расширяемого шаблона ролевой игры
и показывает основные приемы разработки и ведения проекта. Поэтому мы не можем
взять слишком сложное для реализации задание, чтобы не увязнуть в деталях его реализации.
Сдругой стороны
слишком простой пример не позволит разьяснить особенности, характерные именно
для ролевых игр. Правила и системы, доступные в виде книг и электронных
руководств обычно весьма сложны и содержать множество деталей специфических для
конкретных игровых сеансов и миров. Такая детализация неудобна еще и тем, что
не позволяет сделать гибкий шаблон игрового проекта, способный настраиваться на
разные системы правил. Поэтому наш проект мы будем делать так, чтобы иметь
возможность в дальнейшем легко добавлять в него функциональные возможности, не
сильно изменяя ядро программы.
Наш пример
учебный, но это не означает, что он будет представлять собой скучный урок, в
начале которого проходит долгое изучение теории и только в конце начинается
программирование и создание работающего прототипа. Это не рекомендуется современными
гибкими методологиями, так как заказчик в подобных условиях вынужден долго
ждать промежуточных версий продукта, которые нередко существенно отличаются от
его пожеланий, а программистам приходится излишне много времени уделять
продумыванию деталей технического задания, которые в дальнейшем скорее всего
изменятся. Поэтому мы выберем несколько наиболее крупных игровых концепций,
подлежащих реализации в обязательном порядке, и запрограммируем их таким
образом, чтобы дальнейшее расширение проекта происходило бы без особых усилий и
проблем. К этим концепциям, очевидно, относятся следующие понятия:
Герой. Главный
герой игры, который в ходе исследования мира повышает свои различные
характеристики. Герой характеризуется набором этих характеристик, в которые входят
навыки (например умение биться на мечах, обнаруживать ловушки, стрелять из
лука), параметры героя (несколько базовых характеристик – телосложение, сила,
ловкость, ум), и величины, необходимые для ведения игры (текущее здоровье,
уровень опыта). Общую развитость героя определяет такая его общепринятая
характеристика, как уровень.
Карта. Карта
описывает одну ограниченную в пространстве локацию (месность, область). Из
таких локаций может быть составлен весь игровой мир. Локации в коммерческих РПГ
обычно создаются профессиональными дизайнерами уровней. Автоматическое создание
хорошей локации – задача очень сложная и не решенная на качественном уровне до
сих пор. Однако существует группа задач, где компьютер по технике генерации
карты значительно превосходит человека. Это создание лабиринтов, обычно
представляющих собой подземные пещеры, состоящие, например, из множества
комнат, соединенных длинными узкими коридорами. Мы опишем как автоматически
создавать несложные, но достаточно трудоемкие для прохождения локации. В нашем примере размеры мира мы
ограничим небольшим числом автоматически генерируемых локаций. Обобщение
примера на мир, состоящий из большего количества локаций, оставляется для
реализации читателю и требует несложного количественного расширения программы
(например, добавления новых типов монстров). Эти локации будут связаны друг с
другом по схеме, принятой в популярном жанре так называемых игр-"бродяг"
(го*>иеПке §атез). Каждая локация представляет собой один уровень пещеры, с которого
можно либо дальше спуститься вниз, либо подняться вверх.
Какой вид будет
иметь одна локация? Для простоты примем, что она имеет прямоугольную структуру
и составлена из квадратных клеток. Чем будет характеризоваться карта? Очевидно,
элементом поверхности (так называемым тайлом), который к тому же может быть
видимым или невидимым (в игроделаньи невидимые тайлы называются тайлами, скрытыми
в тумане), а также проходимым (дорога, лужайка) или непроходимым (например. дерево
или стена). Монстры. Ролевая игра конечно же немыслима без схваток с врагами. В
нашем случае это будут различные монстры, контролирующие локацию. За
уничтожение монстров герой будет получать пункты опыта и совершенствовать свои
характеристики. Какой выбрать внутреннюю структуру монстра? Она может быть
копией достаточно многоплановой структуры героя, однако на практике проще и
удобнее сделать ее более простой для реализации. Можно например ограничиться
такими условными характеристиками, как
атака, оборона
здоровье и способ перемещения. Эти характеристики будут подробно определены на
этапе выбора игровой системы. Кроме того, условимся, что из монстров. Кроме
того условимся, что из монстров после их уничтожения могут выпадать различные полезные
вещи.
Предметы.
Предметы - это часть игрового мира, которая может изменяться. Таил карты всегда
привязан к конкретному местоположению, а предмет может быть поднят с таила Героем,
или положен им на таил. Герой может использовать предметы для решения своих
задачь.
Ловушки.
Ловушки, а также их противоположность - статические объекты, которые нельзя переносить,
но которые не отнимают здоровье героя, а наоборот прибавляют (источники цечебной
маны), - неотъемлемый элемент всех ролевых игр. В принципе наш пример вполне могли
бы обойтись и без них, однако идея ловушек придает игре дополнительное
очарование, а также показывает, как реализовывать схожие с ловушками концепции
сундуков с сокровищами.
Игровая система.
В заключение нам осталось определить игровую систему набор правил, ми которым в игре будет
происходить различные события, прежде всего сражения. Конечно, м качестве такой
системы можно взять D&D - последние ее редакции предоставляют создателю
огромную свободу выбора персонажей и инвентаря, очень хорошо сбалансированы,
содержат готовые алгоритмы проведения и расчета схваток, роста опыта и других
параметров, и охватывают неисчислимое множество возможных сюжетов. Знатоки РПГ напомнят
и о GURPS - общедоступной системе правил, которая в некоторых сферах превосходит
D&D и не имеет таких старых ограничений как обязательный выбор класса игрока.
На основе GURPS была сделана в частности ставшая легендарной пост-шюкалиптическая
PIII' Fallout.
Однако их
компьютерная реализация потребует от нас слишком больших усилий, и даже простое
описание такой игровой программы вряд ли уместится в одной книжке. Поэтому остановимся
на достаточно простой и в чем-то условной схеме. Герой и монстры в схватках
будут характеризоваться такими параметрами, как вероятность попадания, сила
удара и толщина брони, гасящая удар. Для монстров эти параметры будут заданы
исходно, для героя - вычисляются как функция от характеристик его оружия и брони,
а также базовых параметров из поверженного монстра герой получает опыт. Когда
накопленный опыт превышает некие заранее определенные пороги, уровень героя
повышается. Вместе с уровнем увеличиваются и его базовые характеристики.
Вот в принципе
и все! Детализация этих основных концепций будет выполняться непосредственно в
ходе создания игры. Такой подход позволит быстро получить работающий прототип,
костяк программы, который постепенно станет обрастать "мясом" - кодом,
уточняющим и расширяющим наиболее важные функциональные возможности проекта.
|