?

Log in

No account? Create an account
20 июн, 2013 @ 16:37 Как сделать уровень для Марио
Оригинал взят у andyjr в Как сделать уровень для Марио
Однажды я подумал, как бы выглядела игра Super Mario Brothers, если бы она была создана в наши дни? Я решил попробовать создать уровень для этой игры, опираясь на особенности современного геймдизайна.

Mario_logo

Возьмем за основу классическую механику серии игр про Марио времен Super Nintendo.
Одна из необычных особенностей, имеющихся в игре Super Mario World, заключалась в том, что игрок мог не только разбивать кирпичи головой, но и проламывать их под собой особым прыжком.
Итак, перед нами стоит конкретная задача по геймдизайну. Как же ее решить?
Для начала следует подобрать подходящий инструментарий для решения задачи. Классические уровни Марио состояли из квадратных блоков. Для того, чтобы изготовить схему уровня необходима программа, которая позволит расчертить экран на клетки и отредактировать их внешний вид. Лучше всего для этой цели подойдет Microsoft Excel или его аналог (например, Open Office или Google Docs).
Для удобства редактирования установим размер каждой клетки 40 на 40 точек. Для этого нужно открыть Excel и установить соответствующую ширину и высоту клеток. Получается огромный лист, состоящий из клеток.
Теперь нам нужно определить размер уровня. Пусть это будет первый уровень в игре, а значит, он не должен быть ни слишком маленьким, ни слишком большим. В первой части уровня игрока необходимо обучить управлению и основам механики игры, а во второй части игрок сможет попрактиковать полученные навыки.
Чтобы подобрать оптимальную протяженность уровня, я посмотрел, какую длительность имели уровни в самой первой игре — получилось около 14 экранов. Свой уровень я решил сделать чуть подлиннее — 16 экранов. Также я решил сделать 2 этаж в своем уровне, т. е. установил высоту, равную 2 экранам.
Теперь нам осталось понять, а каков же размер экрана? Пусть это широкоформатный размер, скажем, 15 клеток в ширину и 12 в высоту. Зная этот размер, вы можем рассчитать количество клеток в нашем уровне (140 клеток в ширину и 24 клетки в высоту) и очертить его границы в таблице.
Для начала работы нам осталось лишь установить метки, отмечающие границы экранов по ширине и высоте. Благодаря этим меткам мы всегда сможем понять, на каком участке уровня мы находимся: в начале, в середине или в конце. Также я рекомендую нарисовать горизонтальную цветную линию, отмечающую высоту 1 экрана. Эта линия позволит нам видеть, на какой высоте сейчас находится игрок (например, остается ли он в пределах 1 экрана по высоте или уже забрался на второй).

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

Mario1

Классическая механика Марио подразумевает, что игрок умирает от одного соприкосновения с противником. Мы не хотим, чтобы игрок погиб при встрече с первым врагом, поэтому необходимо выдать ему специальный приз — гриб, увеличивающий очки жизни персонажа с 1 до 2. В соответствии с традициями Марио, приз должен содержаться в призовом блоке. Но как убедиться, что игрок ударит его головой, а не просто пройдет мимо? Для этого поместим монетки прямо под блоком — при попытке подобрать их игрок ударит блок и получит награду. Главное подстарахуйтесь, чтобы гриб не мог убежать от игрока — поставьте заслон на его пути.
Справка для тех, кто не знаком с механикой Марио: как только игрок выбивает гриб из блока, приз начинает двигаться в сторону, противоположную от игрока. При столкновении с препятствием гриб начинает двигаться в другую сторону. Для того, чтобы гарантировать взятие гриба игроком, следует поместить приз между 2 препятствиями, в этом случае гриб будет перемещаться между ними.

Mario2

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

Mario3

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

Mario4

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

Mario5

Справка: классическая механика Super Mario Brothers не позволяла разбивать кирпичи головой, когда персонаж находился в своей миниатюрной форме (то есть имел 1 очко здоровья). Это означает, что если бы персонаж в нашем уровне пострадал от противника, то он не смог бы разбить кирпичи и выбраться из пещеры. Однако такая механика накладывает существенные ограничения на дизайн уровней, поэтому в последующих играх Марио получил возможность разбивать кирпичи даже в миниатюрной форме.
На выходе из пещеры можно расположить секретный проход, который позволит персонажу забраться на горную часть пещеры и найти там дополнительные призы. Нахождение секретных зон приносит игрокам огромное удовольствие.

Mario6

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

Mario7

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

Mario8

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

Mario9
После того, как мы продемонстрировали механику скольжения, самое время позволить игроку применить ее на практике. Создадим еще один склон, расставим врагов у его подножия, разбросаем монетки на склоне и будем надеяться на сообразительность игрока.

Mario10

Итак, мы достигли середины уровня. Обучение игрока можно считать законченным. Пора порадовать игрока интересным дизайном.
Я решил следовать канонам жанра платформеров и создать во второй половине разветвление (надо ведь использовать «второй этаж», который мы зарезервировали при создании уровня). Одна дорога пролегает через пещеру, другая проходит на поверхности.
Как бы хороша не была классическая механика Марио, все равно хочется добавить в нее что-то новенькое. Давайте придумаем новое оружие для персонажа, новую способность, новое препятствие, а также нового противника.

Новое оружие: бомба.
Бомба_мин
- бомба может быть получена из специального призового блока.
- персонаж может иметь только 1 бомбу.
- персонаж может установить бомбу перед собой.
- бомба имеет таймер в 3 секунуды, который отображается на ней.
- бомба взрывается, когда таймер достигает 0, убивая всех малых врагов (включая нового противника — грязевика), а также разрушает кирпичные и металлические блоки в радиусе поражения.
- Радиус поражения бомбы составляет 2 блока во всех направлениях.
- Взрыв бомбы не наносит вреда персонажу (хардкор не пройдет=).
- Если бомба убивает нескольких врагов одновременно, игрок получает дополнительные очки.
- Если бомба убивает более 5 врагов одновременно, игрок получает достижение «Подрывник»
- Персонаж может подобрать бомбу и бросить ее по дугообразной траектории. Бомба падает на землю примерно в 8 блоках от игрока.
- Если бомба взрывается в руках у персонажа, то персонаж оглушается (не реагирует на команды управления) на 3 секунды.
- Если персонаж оказывается в радиусе поражения, взрывная волна отталкивает его в противоположном направлении. Например, стоя на бомбе в момент взрыва, персонаж получает импульс, который подбрасывает его вверх на значительное расстояние, что позволяет ему запрыгивать на поверхности, недоступные при обычных прыжках.

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

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

Новый враг: грязевик
Mario_ball
- выглядит как черный шар с глазками.
- встречается только на поверхностях, покрытых грязью.
- при виде игрока начинает катится к нему. После того, как грязевик перекатывается 3 блока, он останавливается, проверяет позицию игрока, после чего продолжает катится в его сторону (то есть грязевик не просто катится в одном направлении, а целенаправленно преследует игрока).
- прыжок на грязевика временно оглушает его, делая безвредным на 6 секунд. По прошествии времени грязевик приходит в себя и продолжает преследовать игрока.
- Грязевик может быть убит взрывом бомбы.

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

Mario11

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

Mario12

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

Mario13

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

Mario14

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

Mario15

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

Mario16

Вот такой уровень получился в итоге:
СМОТРЕТЬ ТУТ

PS
Для удобства просмотра вам понадобиться трансформировать полученную таблицу со схемой уровня в картинку. Сделать это можно следующим образом: в Microsoft Excell выделяем все необходимые ячейки и копируем их клавишами Ctrl+C. После этого открываем любой графический редактор (например, стандартный Paint), вставляем туда скопированные ячейки клавишами CTRL+V и сохраняем рисунок.

© Andy Jr
Практический геймдизайн



andyjr: