Создание лабиринтной игры. Лабиринт в игре. - 3 Сентября 2007 - Light & New Live
Воскресенье, 04.12.2016, 13:07
Приветствую Вас Гость | RSS

Light & New Live

Наш опрос

Нравится ли вам работать в нашей системе
Всего ответов: 235

Статистика


Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Главная » 2007 » Сентябрь » 3 » Создание лабиринтной игры. Лабиринт в игре.
14:30
Создание лабиринтной игры. Лабиринт в игре.
Даже при том, что Game Maker действительно прост в использовании и создание замысловатых игр осуществляется легко, но с первого взгляда его возможности могут привести тебя в замешательство и будет трудно понять, с чего же начать. Эта обучающая программа, как предполагается, продемонстрирует тебе, как сделать игру популярного типа: игру лабиринт. Шаг за шагом мы вместе с тобой проследим весь процесс создания игры. Самое заманчивое, что уже на первом этапе мы создадим простенькую игру, и уже после поэтапно мы будем улучшать созданный вариант и добавлять в него множество интересностей. Каждая из рассматриваемых частей игры предлагаются в виде отдельных файлов и в любой момент могут быть загружены в Game Maker. Основное и пожалуй единственное требование - для рассмотрения предлогаемого урока необходимо чтобы у тебя был установлен Game Maker версии 4, или более поздней.
Игровая идея
Перед тем как начать создание игры мы должны тщательно продумать, и четко представить себе идею будующей игры. Это очень важный (и в некотором смысле наиболее сложный) шаг в проектирование игры. Хорошая игра должна быть захватывающей, позволяющей удивить и увлечь. Желательно чтобы основная игровая задача была максимально понятна игроку, интерфейс пользователя должен быть интуитивен.

Игра, которую мы собираемся создать - это игра лабиринтного типа. Каждая комната состоит из одного лабиринта. Чтобы выбраться из него, игрок должен собрать все алмазы и затем добраться до выхода. Необходимо решить все головоломки и избежать столкновений с населяющими лабиринт монстрами. Можно создать большое количество головоломок: блоки должны быть помещены в соответствующие выемки; участки комнат могут быть разрушены при помощи бомб и т.д. Очень важно не показывать все предлагаемые загадки сразу в первой комнате. Постепенное появление новых предметов и монстров, должно на долго задержать интерес игрока к твоей игре.

И так, основной объект в игре это персонаж, управляемый игроком. Имеются стены (возможно различных типов, чтобы сделать внешний вид лабиринта более привлекательным). Имеются алмазы, которые необходимо собирать. Также имеются предметы, разбросанные по округе, при поднятии которых или прикосновении к ним игроком что-то происходит. Один специфический пункт в игре - это выход из комнаты. И конечно же в нашей игре живут всевозможные персонажи, самостоятельно перемещающиеся по территории уровней. Но давай рассмотрим создание всего этого великолепия по очереди, друг за другом.
Очень простое начало
На первых порах мы не станем использовать алмазы. Мы создаем простую игру, в которой ты должен добраться до выхода. В игре присутствуют три основных компонента: игровой персонаж, стена и выход. Необходимо выбрать подходящие спрайты и создать объекты для каждого из них. Ты найдешь эту первую, очень простенькую игру, в файле под названием (maze game 1.gmd). Загрузи его и познакомься что все это из себя представляет.
Объекты
Давай познакомимся с объектами. Размер каждого из них 32x32, все они имеют простые спрайты.

* Стена (wall): Объект стены - просто твердый (solid) объект. Другие объекты реагируют, когда они сталкиваются с ним. Твердыми являются только объекты стены. Мы можем создать их столько, сколько захочется.
* Цель (goal): Это объект выхода, до которого должен добраться игровой персонаж. Данный объект не является твердым. Я решил отобразить его в виде финишного флажка. Так будет понятнее игроку, что двигаться нужно именно к нему. Когда игровой персонаж сталкивается с ним, мы должны перейти в следующую комнату. Для этого нужно поместить действие (Go to the next room) в событие столкновения с персонажем (используем действие с рукой показывающей направо). В данном случае имеет место один недостаток. Данное действие вызывает ошибку, когда игрок заканчивает последний уровень. Самый простой способ решить эту проблему состоит в том, чтобы сделать последний уровень (комнату), непроходимым или лучше, вознаградить игрока каким-то экстравагантным способом (смотри позже в более сложных играх).
* Персонаж (person): Это основной игровой объект, которым управляет игрок. Здесь необходимо поместить некоторые действия. В особенности мы должны указать, как персонаж реагирует, на действия игрока.

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

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

Понятно, что мы также должны останавливать движение, когда персонаж касается стены. Для этого в событии столкновения для персонажа мы помещаем действие (start moving in a direction), которое останавливает движение (красный квадрат).
Создание комнат
С действиями мы, пожалуй, разобрались. Теперь давай создадим несколько комнат. Создай одну или две комнаты, чтобы они представляли из себя некий лабиринт. В каждой комнате помести объект выхода (goal) и объект персонажа (person) в стартовой позиции. Не забудь добавить комнату, в которой отсутствует выход и в заголовке напиши, например - "Не может быть пройден".
Сделано
Все! Первая игра готова. Попробуй немного поиграться. Например измени скорость персонажа в событии создания (creation), создай больше уровней, измени изображения и т.д.
Собирание алмазов
Но ведь цель нашей игры состояла в том, чтобы играющий собирал алмазы. Сами алмазы просты в создании. Но как сделать так, чтобы игрок не мог покинуть комнату, пока не собраны все алмазы? Для этого в мы добавляем объект двери (door). Объект двери будет вести себя подобно стене до тех пор имеется хоть один алмаз и исчезнет, когда все алмазы будут собраны. Ты можешь найти вторую игру в файле под названием (maze game 2.gmd). Загрузи ее и посмотри как это работает.
Объекты
Помимо объектов стены, выхода и персонажа, нам понадобятся еще два объекта, с соответствующими спрайтами:

* Алмаз (diamond): Этот не твердый объект. Когда он сталкивается с персонажем, то просто уничтожается. Это все.
* Дверь (door): Она помещается в критическое место, чтобы заблокировать проход к выходу. Это твердый объект (чтобы избежать возможности прохождения через него персонажа). В событии шага (step) для него устанавливаем проверку (If the number of instances is a value) равно ли число алмазов 0 и если да (Equal), то объект уничтожает (Destroy the instance) себя. В акте столкновения (collision) персонажа с дверью мы должны остановливать движение.

Создание комнат
Теперь мы можем создать несколько комнат с алмазами. Обрати внимание, что первая комната лабиринта не содержит алмазов и мы может беспрепятственно покинуть ее. Это логично, потому что для начала игрок должен понять, что достижение флажка позволит ему покинуть комнату, а уже после этого можно предложить ему заняться непосредственно сбором полезных ископаемых. Давая название с подсказкой для второй комнаты с алмазами, ты даешь игроку понять, что следует делать.
Улучшение движения
Один нюанс, который ты вероятно заметил при запуске игры, состоял в том, что персонаж останавливается, в тот момент когда ты отпускаешь клавишу курсора и место его остановки - не обязательно соответствует расположению ячейки сетки. В связи с этим не всегда удается коректно заворачивать, там где имеются стены с углами. Допустим ты хочешь, чтобы персонаж всегда останавливался или изменял направление в соответствии с сеточными ячейками. Этого можно достигнуть, добавив действие вопроса (If instance is aligned with a grid), которое проверяет, выровнен ли образец с сеткой. Как значения сетки (snap) используется значение 32. Только, если ответ истинный (true), мы изменяем направление движения или останавливаем его.

Продолжая разговор, хочется отметить существование момента, к которому следует отнестись более внимательно. Если спрайт твоего персонажа не полностью заполняет ячейку, что как правило и бывает, то может произойти то, что твой персонаж, при сталкновении со стеной, не будет выровнен с ячейкой сетки. (Если говорить точнее, это происходит, когда размер границы спрайта больше чем скорость изображения). В данном случае персонаж застрянет, потому что он не будет реагировать на клавиши (так как он не выровнен с сеткой), а таже он не сможет двигаться дальше (потому что там находится стена). Решение - сделать спрайт больше или в дополнительных параметрах спрайта, отключить точную проверку столкновения (precise collision checking), и в качестве поля ограничения указать изображение полностью.
Сделаем это немного лучше
Сейчас, когда наша базовая игра создана, давай общими усилиями сделаем ее немного лучше. Ты можешь найти улучшенную игру в файле под названием (maze game 3.gmd). Загрузи ее и ознакомься с тем, о чем пойдет дальше речь.
Стены
Наши стены выглядят довольно уродливо. Поэтому давай вместо них создадим три стенных объекта: один для угла, один для вертикальных стен и один для горизонтальных. Присвой им соответствующие спрайты и сделай их твердым телом. Теперь немного подправив комнаты, ты несколько улучшишь их внешний вид. Для улучшения картинки можно также использовать фоновые изображения.

Для того чтобы избежать необходимости определения событий столкновения персонажа с каждой их этих разных стен (а позднее так же само и для монсторов), мы используем замечательую возможность имеющуюся в Game Maker. Мы сделаем объект угловой стены (corner wall) материнским (parent) для других объектов стены (во вкладке advanced). Теперь мы должны определить столкновения только с угловой стеной. Это событие столкновения будет автоматически использоваться для других объектов стены. Для объекта двери мы также определим, в качестве родителя - угловую стену.
Счет (Score)
Теперь давай позволим игроку набирать игровые очки, для того чтобы он мог реально оценивать результативность прохождения игры. Делается это довольно просто. За каждый собранный (уничтоженный) алмаз мы начисляем игроку 5 пунктов (очков). Так в событии уничтожения (destroy event) алмаза мы добавляем 5 пунктов к игровому счету. Прохождение уровня дает 40 очков, для этого мы добавляем 40 пунктов к игровому счету в событии столкновения флажка (goal) с главным героем (person)

Обрати внимание, что игровой счет автоматически отображается в заголовке окна. Это, согласись, немного не эстетично в смысле дизайна. Давай чтобы избежать этого создадим объект контроллера (controller) и присвоим ему спрайт с изображением компьютера. Этот объект будет помещен нами во все комнаты. Он будет производить этакий глобальный контроль за происходящим. В нужный момент мы будем использовать его, для отображения игрового счета. В событии рисования (drawing event) для него, мы устанавливаем цвет и размер шрифта, а затем используем действие рисующее тектовую информацию (draw text), для того чтобы нарисовать следующий текст:

'Score: ' + string(score)

Это может показаться по началу странным. Так как текст начинается с кавычек, но в действительности перед нами формула. Первая часть это строка 'Score: ' к которой мы добавляем счет, преобразованный из числа в строку, используя функцию строки string(). Ты должен отключить пункт отображения счета в опциях.
Стартовый экран
Лучше всего начать игру с титульного экрана, который будет отображать название игры. Для этого мы используем первую комнату. Создаем фоновый ресурс с подходящей картинкой. (Во вкладке advanced ты можешь указать, чтобы не использовалась видеопамять). Этот фон мы используем для первой комнаты (лучше всего отключить, рисование цвета фона и сделать его не-плиточным). Объект стартового контроллера (start controller), он конечно должен быть невидимым, ждет в течение пяти секунд и затем перемещает игрока в следующую комнату. Вместе с этим, когда игрок нажимает клавишу (любую клавишу), он также перемещается в следующую комнату (Также стартовый контроллер устанавливает игровой счет в нулевое значение - 0).

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

* end_controller: Он устанавливает сигнальные часы в значение 1. В событии сигнала он отображает сообщению, поздравляющее игрока с окончанием игры. После этого он показывает списку лучших резульатов и перезапускает игру. (Причина для помещения его в событие сигнала, а не в событие создания, в том что иначе экран не будет повторно перерисован).

Адаптируем финальную комнату для этого.
Звуки
Игра без звуков - это не современно и несколько раздражает. В связи с этим наша игра нуждается в некоторых звуках. Прежде всего нем нужна ненавязчивая фонововая музыка. Для этого мы воспользуемся midi файлом. Запускаем эту музыкальную часть в стартовом контроллере (start_controller), проигрывая ее с использованием цикла (т.е. постоянно). Далее нам нужны подходящие звуковые эффекты для озвучивания подбираемых алмазов, открываемых дверей и момента, когда мы добираемся до финального флажка. Эти звуки вызываются в соответствующих событиях, описанных выше.

Особо стоит заострить внимание на двух моментах. В связи с тем, что игрок способен подбирать алмазы достаточно быстро, может возникнуть ситуация когда потребуется одновременно проигрывать один и тот же звук - хорошо бы установить для этого звука некоторое количество буферов, например 4. Во-вторых, при достижении финального флажка, после проигрывания соответствующего звука, хорошо бы поместить действие небольшого ожидания (sleep), чтобы перед переходом в следующую комнату, имелась небольшая пауза.
Добавление монстров
Теперь наша игра прикольно начинается и смотрится доволно неплохо, но тем не менее, она все еще остается достаточно простой и играть в нее не интересно. В связи с чем нам просто необходим какой-то экшен, например в лице страшных и опасных монстров. Мы создадим двух монстров: один из которых двигается слева на право, а другой перемещается вверх и вниз. Добавление монстров в действительности осуществляется очень просто. Монстр представляет из себя объект, который начинает движение и изменяет направление своих перемещений всякий раз, когда косается стен. Когда игровой персонаж сталкивается с монстром, он погибает (уничтожается), и как следствие происходит рестарт уровня. Дадим нашему персонажу три жизни. Объект контроллера реагирует в тот мометн, когда число жизней становится равным 0. Ты найдешь обновленный вариант игры в файле (maze game 4.gmd). Загрузи его и взгляни, чтобы понять о чем пойдет дальше речь.
Объекты
Нам понадобятся следующие новые объекты и соответствующие спрайты (и изменения для существующих объектов):

* monster_lr: Это - объект монстра. В событии его создания он решает идти ему влево или вправо. Также, чтобы усложнить жизнь нашего героя, устанавливаем немного завышенную скорость. Когда происходит столкновение, он изменяет свое горизонтальное направление.
* monster_ud: Точно такой же монстр, с единственной разницей - он перемещается вверх и вниз.
* monster_all: Точно такой же монстр, только с более интересным перемещением. Всякий раз, когда он натыкается на стену, он сперва пробует развернуться на 90 градусов влево. Если ему это не удается, он пытается повернуться на 90 градусов вправо. Если и в этом случае он терпит неудачу, монстр возвращается тем же путем, которым он шел до этого.

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

Когда первонаж сталкивается с монстром (monster_lr), мы должны проиграть какой-нибудь ужасный звук, вызвать небольшую задержку (sleep), после чего перезапустить комнату и уменьшить число жизней на одну. (Обрати внимание, что данная последовательность обязяательна). Объект контроллера, в событии "no more lives", отображает список лучших результатов и перезапускает игру. Делаем это для всех монстров. (Здесь мы не можем использовать родительский объект, так как иначе будет неясно что делать, когда монстр косается стен. Если мы используем событие того же самого монстра со углом стены или материнского монстра со стеной).

Это все. Теперь мы можем начать создание уровней с монстрами. (Обрати внимание, что если во воемя игры, нажать клавишу <N> то ты перенесешся в следующий уровень (комнату), а нажатие клавиши <P> вернет тебя в предыдущую комнату. Это может оказаться полезным при тестировании игры).
Жизни
Мы используем механизм жизней Game Maker, чтобы дать игроку три жизни. Объект контроллера делает это, точно так же, как и в случае со счетом. Простой показ числа жизней, выглядит вполне нормально. Но более прикольно, если вместо чисел, отождествляющих количество жизней, будут отображены миниатюрные изображения игрового персонажа. Для этого, в событии рисования контроллера мы помещаем следующую часть кода:

{
for (i=0; i<lives;i+=1)
draw_sprite_scaled(sprite_person,0,x+64+20*i,y+8,0.5);
}

Эта конструкция выглядит возможно несколько сложно, но тем не менее при помощи ее мы добиваемся именно того, что хотели. Для количества жизней выполняется цикл. В каждом выполнении масштабируемое изображение рисуется в соответствующем месте.
Добавление в игру новых возможностей
Чтобы внести в игру новые изменения, нам понадобится немного больше объектов. Ты можешь найти новую игру под названием maze game 5.gmd. Загрузи данный файл и познакомься с его содержимым.
Бомбы
Давай добавим бомбы и взрыватели, которые будут подрывать бомбы. Идея заключается в том что, когда игрок касается взрывателя, все бомбы взрываются, уничтожая все по соседству. Это может быть использовано, для создания проходов в стенах и для уничтожения монстров. Мы нуждаемся в трех новых объектах:

* Взрыватель (trigger): При соприкосновении с персонажем он должен активировать все бомбы, и взорвав их самоуничтожится.
* Бомба (bomb): Объект, который ничего не делает. Чтобы быть уверенным что монстры могут перемещаться поверх него этого (а не под ним) мы устанавливаем в качестве значения его глубины - 10.
* Взрыв (explosion): Взрыв всего лишь отображает анимацию. Он уничтожает все, чего касается. По окончанию данной анимации он уничтожает себя. (Тебе нужно быть внимательным, чтобы начало координат взрыва - соответствовало месту взрыва бомбы). Чтобы уничтожить все образцы всех объектов, которые окажутся рядом с ним, мы в его событии создания используем следующую часть кода:

{
with (all)
{
if (self != other && place_meeting(x,y,other)) instance_destroy();
}
}

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

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

Нам понадобятся два следующих объекта:

Камень (block): Это твердый объект. Его основная сложность в том, что он должен следовать за движением персонажа, когда тот двигает камень. Когда камнь сталкивается с персонажем, мы предпринимаем следующие действия: проверяем, является ли относительная позиция 8*other.hspeed, 8*other.vspeed пустой. Это - позиция, куда должен быть перемещен камень. Если позиция пустая, то мы перемещаем камень на нее. Делаем то же самое, если в данной позиции находится объект ямы. Чтобы избежать возможности прохождения монстров через камень, делаем для него материнским объектом объект угловой стены. Сее допустимо, хотя при этом проявляется небольшая проблема. Поскольку событие столкновения определено между персонажем и угловой стеной, а не между персонажем и камнем, это событие выполняется, останавливая персонажа. Это не совсем то, что нам надо. Чтобы разрешить данную проблему, мы помещаем ложное действие (только комментарий) в событие столкновения персонажа с камнем. Теперь выполняется данное событие, не останавливая при этом персонаж.
Яма (hole): Является твердым объектом. Когда она сталкивается с камнем, то уничтожает себя и камень. Также мы сделаем его родительским объектом угловую стену, чтобы яма обладала теми же свойствами что и стена.

Используя камни и ямы ты можешь создать много интригующих комнат (уровней). Хотя и здесь присутствует небольшая проблема. Ты можешь легко заблокировать себя камнем так, что в результате уровень не сможет быть пройден. В связи с этим мы должны дать игроку возможность перезапустить уровень, отняв у него при этом одну жизнь - воспользуемся клавишей ®, которая перезапускает уровень. Для этого в событии клавиатуры для контроллера мы просто перезапускаем комнату и вычитаем одну из жизней (именно в таком порядке, иначе если мы сначала исчерпаем все жизни и лишь затем перезапустим игру, то перезапустится уровень, который нам как бы уже будет и не нужен).
Несколько скромных уточнений
Улучшение графики
Графика нашей текущей игры выглядит недостаточно хорошо. Поэтому давай кое-что подправим, чтобы улучшить ее. Ты найдешь уже измененый вариант, демонстриующий все ниже изложенное, в файле под названием (maze game 6.gmd). Загрузите его, чтобы понять о чем пойдет речь.

Основная вещь, которую мы хотим изменить, заключается в том, чтобы наш игровой персонаж поворачивался в сторону того направления, куда он реально движется (т.е. чтобы герой был более интерактивен). Самый простой способ достичь этого, это использовать новое изображение, которое состоит из 4 фрагментов, по одному для соответствующего направления движения. Обычно Game Maker циклически прокручивает все имеющиеся в спрайте фрагменты. Мы можем избежать этого непосредственно изменяя настройку переменной image_single. Эта переменная указывает, какой фрагмент изображения следует показать (0 - самый первый). Теперь в событии шага для персонажа мы добавляем следующую часть кода, который устанавливает индекс изображения согласно его текущему направлению:

{
if (hspeed < 0) image_single = 3
else if (hspeed > 0) image_single = 2
else if (vspeed < 0) image_single = 1
else if (vspeed > 0) image_single = 0
}

Это - все. (Точнее не совсем все. В событии создания мы должны установить для image_single значение 0 чтобы избежать циклического прокручивания всех фрагментов в самом начале игры).

Подобные действия мы можем проделать и для всех имеющихся монстров.
Премии (Бонусы)
Теперь давай добавим парочку бонусов: первый будет давать игроку 100 очков, а другой будет добавлять ему дополнительную жизнь. Они оба делаются чрезвычайно просто. Когда персонаж сталкивается с любым из них, проигрывается звук, после чего они самоуничтожаются, и добавляют несколько очков к игровому счету или 1 дополнительную жизнь к имеющемуся числу. Все.
Односторонние проходы
Чтобы еще более усложнить уровни, давай добавим односторонние проходы, которые можно преодолеть только в одном направлении. Для этого мы создаем четыре объекта, каждый в виде стрелки, указывающей направление движения. Когда персонаж попадает на такой проход, мы должны переместить его в соответствующем направлении. Делаем мы это в событии шага персонажа. Мы проверяем, выровнен ли персонаж по сетке должным образом и встретился ли он с определенной стрелкой. Если это так, мы устанавливаем движение в нужном направлении. (Для скорости мы устанавливаем значение - 8, чтобы все это выглядело смешнее).
Теперь давай из всего этого сделаем реальную игру
На данный момент мы создали достаточное количество объектов, но реальной игры у нас по прежднему так и не получилось. Очень важная часть в любой игре - создание уровней. Они должны изменятся от простого к сложному. В начале можно использовать только несколько объектов. Позднее будет появляться все больше и больше разнообразных объектов. Убедись, чтобы в игре сохранялся эффект неожиданности, этак до уровня 50-того или еще дальше. Желательно чтобы уровни по своей сложности были адаптированнны под каждого определенного игрока. Для детей, например подойдут одни головоломки, для взрослых же несколько иные и более сложные.

Также любая серьезная игра должна иметь не менее серьезную документацию, например с описанием клавиш управления или что-то подобное. В Game Maker имеется возможность достаточно легко добавить документацию примо в саму игру.

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

Ты найдешь почти завершенную игру, включающую все вышеизложенное, в файле под названием (maze game final.gmd). Загрузи ее, поиграйся и если появится желание то можешь даже изменить в ней все что твоей душе угодно. В частности ты можешь добавить в нее больше уровней (в данный момент их всего 20). Также ты можешь добавлять какие-нибудь дополнительные объекты, например ключи - которые открывают; транспортеры - которые перемещают тебе из одной точки лабиринта в другую; патроны - которыми твой персонаж будет стрелять, уничтожая монстров; двери - которые время от времени будут открываться и закрываются; лед на котором персонаж будет скольить в определенном направлении; стреляющие ловушки и т.д.
В заключении
Я надеюсь, что эта обучающая информация и сопутствующие игровые примеры помогут тебе в создании своих собственных игр на движке Game Maker. Не забывай сначала грамотно спланировать свою игру и уже только потом принимайся за ее создание делая это поэтапно, шаг за шагом (или лучше, объект за объектом). Для достижения определенной цели, всегда существует несколько разных способов. Так что, если что-то не будет получаться, пробуй сделать это иначе.

Удачи!

Просмотров: 664 | Добавил: Asike | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Поиск

Календарь

«  Сентябрь 2007  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930