1. СТРУКТУРА ИГРОВОЙ ПРОГРАММЫ
Перед каждым, кто впервые приступает к созданию игровой программы, встает непростая проблема: с чего же начать? Чтобы облегчить ее решение, попробуем условно разделить программу на несколько частей, каждую из которых можно было бы разрабатывать и отлаживать независимо от других. Если повнимательнее присмотреться к хорошим компьютерным играм, то таких частей можно выделить четыре (см. [6]):
заставка;
игровое пространство;
блок взаимодействия с играющим;
блок оценки игровой ситуации.
Давайте поподробнее познакомимся с каждой из этих частей и для начала в самых общих чертах решим, как их создавать.
Заставка
С этой частью программы мы сталкиваемся каждый раз, когда загружаем фирменные игры. Поскольку процесс загрузки с магнитофона занимает обычно несколько минут, то разработчики программ придумали первым делом загружать на экран красочную картинку, рекламирующую предстоящую игру (рис. 1.1).
Таким образом, пока идет загрузка, вы любуетесь заставкой и готовите себя к очередному компьютерному приключению. Надо сказать, что картинка на экране -это еще не вся заставка, а лишь первая ее часть, и в дальнейшем мы будем называть ее картинкой-заставкой, или просто картинкой.
После того как игровая программа загрузилась, на экране последовательно появляются остальные части заставки, информирующие игрока о некоторых деталях предстоящей игры
Посмотрим, какие данные выводятся в заставке и как они распределяются между ее отдельными частями, которые мы будем называть кадрами.
На первой, обычно самой красочной картинке, сопровождающей загрузку, помещают название игры и фирмы-изготовителя, а также имена авторов программы (здесь вы можете увековечить свое имя, когда напишете хорошую игру).
Это не только «визитная карточка» программы, но еще и неплохая реклама.
Далее в большинстве игр в качестве одного из кадров заставки выводится меню - список действий, которые необходимо выполнить для настройки игры. Пример меню приведен на рис. 1.2.
В меню вы можете выбрать способ управления игрой: один из типов джойстика (KEMPSTON, SINCLAIR и др.) или клавиатуру (KEYBOARD). Здесь же можно «заказать» удобные для игрока клавиши управления (REDEFINE KEYS), просмотреть таблицу рекордов (HI-SCORE), иногда - выбрать уровень игры (LEVEL). Обычно из меню осуществляется запуск игры (START GAME). Ввод имен играющих (ENTER YOUR NAME), переназначение клавиш и просмотр таблицы рекордов очень часто выполняются, как отдельные кадры. По окончании игры вы снова возвращаетесь в меню.
Обычно все части заставки красиво оформлены, а их демонстрация чаще всего сопровождается звуковыми эффектами или музыкой.
Игровое пространство
Игровое пространство - это совокупность всех подвижных и неподвижных объектов, которые появляются на экране во время игры.
В распространенной игре Рас-man (упаковщик) игровое пространство представляет собой лабиринт с прожорливыми «колобками», одним из которых управляете вы, а несколько «врагов» подчиняются программе и пытаются причинить вам массу неприятностей. В программе Chess (Шахматы) игровое пространство - шахматная доска с расположенными на ней фигурами, которые в соответствии с вашими указаниями могут передвигаться по полю, не нарушая при этом шахматных правил. Наконец, в игре Tetris игровое пространство представляет собой стакан с падающими разноцветными геометрическими фигурками, которые вы должны плотно укладывать в нижней его части (рис. 1.3).
Используя эти примеры, попробуйте теперь сами определить, из чего состоит
игровое пространство в знакомых вам играх.
Посмотрим на игровое пространство с другой стороны, а именно со стороны. разработчика программ. Начнем с того, что любое сложное изображение на экране можно представить в виде некоторого количества небольших по размерам, но вполне законченных объектов. Часть из этих объектов передвигается, а основная масса составляет фоновый рисунок (пейзаж), на котором развивается действие игры.
Все ползающие, летающие, стреляющие и прочие двигающиеся изображения в компьютерных играх носят название спрайты (от английского слова «sprite» -эльф). Более точно спрайт можно определить как перемещаемый графический объект с неизменными рисунком и размером (см. [2]). Трудно себе представить хорошую игру без таких «объектов», поэтому, чтобы научиться писать приличные игровые программы, нужно прежде всего освоить технику создания спрайтов.
Информация о спрайтах, представленная в виде блоков кодов, обычно хранится в спрайт-файле, который загружается в память компьютера вместе с игровой программой.
Теперь вы знаете, что шахматные фигуры в игре Chess - это спрайты, и геометрические фигурки в Tetris'e - тоже; даже снаряд, вылетевший из ствола пушки в программе Tanx - это тоже спрайт. Есть игры, которые буквально напичканы спрайтами, отчего игровое пространство, как правило, становится сложнее и богаче, а игра - интереснее. Например, в программе River Raid можно насчитать семь спрайтов-противников, шныряющих у вас под самым носом, один спрайт-самолет, принадлежащий вам, а также спрайты-снаряды, летящие со всех сторон.
О том, как делать спрайты, мы подробно расскажем дальше, здесь же только перечислим способы их создания. Самый простой из них состоит в том, чтобы нарисовать спрайт на бумаге, а затем вручную закодировать его изображение. Другой способ - создать изображение спрайта в любом графическом редакторе (например, Art Studio или The Artist II), а затем автоматически закодировать его с помощью специальной программы - генератора спрайтов. Некоторые генераторы спрайтов (например, из пакета программ Laser Basic) позволяют сразу и рисовать и кодировать спрайты, то есть включают в себя графический редактор (правда, довольно примитивный).
При помощи графических редакторов можно создавать не только спрайты, но и картинки-заставки, а также рисовать пейзажи (которые, впрочем, тоже можно назвать спрайтами). В нашей книге приводятся примеры использования для перечисленных целей редактора Art Studio.
В игровом пространстве возможны любые, самые фантастические действия: объекты на экране могут менять цвета, возникать и исчезать, двигаться с невероятной скоростью, превращаться в другие объекты и т. д. и т. п. Чтобы ваша игра была привлекательной и интересной, не жалейте времени на проработку всех объектов игрового пространства.
Блок взаимодействия с играющим
Пожалуй, одно из самых привлекательных свойств компьютерных игр заключается в том, что играющий может влиять на события, развивающиеся на экране - в игровом пространстве. Например, в программе Рас-man вы можете менять направление движения вашего «колобка» по лабиринту: вверх, вниз, вправо и влево. А в игре Flying Shark, помимо управления движением самолета, пролетающего над объектами противника, можно еще стрелять по целям, нажимая кнопку джойстика Огонь, и сбрасывать бомбу, наклоняя джойстик на себя и одновременно нажимая Огонь. Есть игры с еще более сложным управлением.
Все эти перемещения по экрану и стрельба возможны благодаря той части игровой программы, которая носит название блок взаимодействия с играющим. Попытаемся в общих чертах представить, как он работает.
Как известно, в ZX Spectrum существует два способа управления компьютером: с помощью клавиатуры и с помощью джойстика. Когда вы нажимаете клавишу или наклоняете ручку джойстика, программа переходит к выполнению той или иной своей части. Поворачивая, например, ручку джойстика вправо, вы «включаете» ту часть программы, которая перемещает спрайт-самолет вправо. Нажимаете кнопку Огонь - и начинает работать та часть программы, которая выводит на экран спрайт-ракету и перемещает ее в заданном направлении.
Блок оценки игровой ситуации
Во время игры на экране появляются не только предметы и персонажи, задействованные в сюжете, но и выводится различная дополнительная информация для играющего. Так, в Tetris'e на экран выводятся набранные играющим очки. В программе Into The Eagles Nest сообщается о количестве патронов, ключей от помещений, числе ранений и числе набранных очков. В River Raid программа информирует о количестве оставшегося топлива в самолете, числе жизней и набранных очках.
Несмотря на большое разнообразие игр, есть нечто общее, что объединяет выводимую на экран информацию: она представляет собой оценку игровой ситуации. Следовательно, в программе должна быть часть, которая оценивает действия играющего на всех этапах игры и выводит на экран результаты этой оценки. В большинстве игр ведется подсчет числа очков, что позволяет легко выяснить, как со временем растет мастерство играющего или сравнить силу нескольких игроков.
Мы попытались выделять наиболее важные части игровой программы для того, чтобы лучше понять, как она работает. А это, в свою очередь, поможет более четко и осмысленно подходить к созданию собственных игровых программ. В следующих главах мы подробно поговорим обо всех перечисленных частях программы, то есть от вопроса о том, что делает каждая из них, перейдем к вопросу о том, как сделать эти части и соединить их между собой.