Galaxy2D Tutorials Галактика 2D
ЖАНРЫ

Введение

 

Существует  большое число различных игровых жанров. Я написал эту статью, чтобы кратко ознакомить Вас с некоторыми из них.

 

Приключения

 

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

 

 

Для того чтобы определить путь от одной области до другой, нужно использовать таблицу просмотра (look-up table), в которой хранится следующая зона на пути к цели. Такая таблица может выглядеть следующим образом:

 

A

B

B'

B''

C

D

A

-

B

B'

B

B

B

B

A

-

B'

B''

C

C

B'

A

B

-

B

B

B

B''

B

B

B

-

C

C

C

B

B

B

B''

-

D

D

C

C

C

C

C

-

 

Чтобы переместится от CurPos до TargetPos, Вы можете использовать такой код:

 

NextPos = look_up[CurPos][TargetPos];

While ( NextPos != '-')

{

      // Передвигать спрайт к соединяющей точке

      MoveToArea(NextPos);

      CurPos = NextPos;

      NextPos = look_up[CurPos][TargetPos];

}

// Передвигаться по указанным координатам щелчка

MoveToPos(MouseClick.X, MouseClick.Y);

 

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

 

Загадки

 

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

 

Самая простая загадка – «Запертая дверь» (Lock Door Riddle, LDR). То есть где-то на уровне находится закрытая дверь, и для того чтобы открыть её - придётся найти ключ. Иногда может понадобиться специальный ключ, помеченный, к примеру, некоторым цветом так, чтобы красный ключ открывал только красную дверь, зелёный – зелёную и так далее. Возможен вариант волшебной двери, где нужно принести некоторый предмет для того, чтобы она открылась. А так же ржавые двери, требующие предварительной смазки.

 

На LDR очень похоже использование различного рода рычагов и переключателей. В большинстве случаев игрок должен использовать более одного рычага, дабы достичь желаемого эффекта. Можно сделать действие рычага не явным (подобно открытию секретной двери в другой комнате). А так же их можно использовать для того, чтобы игрок вводил некое подобие «двоичного кода».

 

Другая распространённая загадка – поместить некоторые большие объекты на специальные поля-переключатели правильным образом для открытия двери. Если Вы думаете, что это слишком просто, значит никогда раньше не играли в sokoban. Так как Вы можете только толкать эти объекты (статуи или ящики), то перемещение такого в угол будет означать поражение, потому что оттуда его уже не вытолкать. Некоторое время назад я нашёл у себя старую дискету с древним CGA sokoban-ом и не мог от него оторваться в течение нескольких часов. Поверьте мне, подобные игры обладают эффектом «вот только пройду ещё один уровень и тогда уже закончу…»

 

Более простая форма sokoban-а – двигать ящики, чтобы расчистить себе путь к двери.

 

Так же есть загадки типа «объект-объект», которые обычно используются в приключенческих играх. Вы наверняка должны знать загадки вроде «если я использую отвёртку на повреждённой плазменной пушке, а пушку на кабель, то фортепиано упадёт на ловушку, ломая её, а я смогу пройти в дверь».

 

Верстка и поддержка Lennart Steinke

 


PMG  14 апреля 2007 (c)  Сергей Анисимов