четверг, 22 октября 2015 г.

Геймдизайн: Лабиринт

Расправившись с "Рапсодией", я приступил к исполнению своей следующей мечты — сделать игру. Неважно уже какую, просто чтобы сказать: "Вот. Игра. Я её сделал".
Но, как человек, который к любому делу подходит серьёзно, я вот уже лет десять(sic!) изучаю геймдизайн (см. Глоссарий), в связи с чем хочу поделиться накопленным или новоприобретённым опытом.

Начну с интересной темы, которая является как игрой сама по себе, так и деталью многих видеоигр различных жанров.
ЛАБИРИНТ


Казалось бы, что сложного — нарисовать лабиринт? Хотелось бы нарисовать эффективный лабиринт, т.е. такой, который не будет очень простым, не будет очень сложным, будет использовать почти всю отведённую под него площадь.
И вот, что я узнал.
(источник: http://www.astrolog.org/labyrnth/algrithm.htm)

Само слово "лабиринт" в первоначальном и подлинном смысле означает лишь одну извилистую дорожку, которая не имеет ответвлений и не пересекается с другими ходами.
Такой тип лабиринта ещё называется Unicursal (уникурсальный).


Англичане отличают такой лабиринт (собственно Labyrinth) от лабиринта-путаницы или МЭЙЗА (Maze). Как вы понимаете, я искал именно мэйз.
Лабиринт-путаница или мэйз в свою очередь бывает двух основных видов (по способу прокладывания маршрута):

Perfect (идеальный)
"Идеальный" лабиринт это такой, в котором нет витков или замкнутых кругов, и отсутствуют недоступные области.
Из каждой точки есть только один путь в любую другую точку. У лабиринта всего одно решение.

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


Может быть также лабиринт смешанного типа.
То есть идеальный, но в котором есть замкнутые дорожки, или замкнутый, в котором есть тупики.

Заметьте, я здесь даже не рассматриваю такие экзотические вещи, как трёхмерный или даже многомерный лабиринт.

В лабиринте человек не теряет себя — в лабиринте человек находит себя!

По запросу "как сделать лабиринт" Google выдаёт ссылки на скачивание программных алгоритмов генерации. Тысячи их! И на всех возможных языках мира и программирования. Наиболее популярным из них является алгоритм Эллера (не путать с Эйлером!).
http://habrahabr.ru/post/176671/

Мне не нравятся такие генераторы. Почему? Алгоритму Эллера удовлетворяет, например, вот такой "красавец":

Согласитесь, не лучший пример лабиринта.

Очень полезный совет — пользуйтесь СПИРАЛЯМИ. Особенно это выгодно для лабиринтов в видеоиграх, использующих вид сверху. Само по себе изображение спирали запутывает, сбивает человеческое восприятие с толку. Знаменитый лабиринт минотавра на Крите состоял всего лишь из одной дорожки, закручивающейся к центру. Зачем понадобилась нить, чтобы выбраться из этого — мне не понятно.


Зато хочу похвастаться первым этажом своей "Башни Чернокнижника", которую я сделал на основе изображения критского лабиринта. (Пользуюсь RPG Maker VX Ace.) Здесь вы видите одну извивающуюся дорожку, ведущую к центру, но в игре будет виден лишь кусок коридора, и будет создаваться впечатление запутанного пути. Усложняющим фактором являются лестницы, их четыре: сверху, слева, справа и в центре. (Ну, в центре даже две, но я ещё работаю над этим.) О том, как выглядит второй этаж расскажу в другой раз.