Как я придумал свой фреймворк для пространственных головоломок

В конце прошлого года я наткнулся на вакансию гейм-дизайнера в проект INDIKA от Odd Meter (посмотрите геймплей, там очень круто). Для отклика требовалось придумать несколько пространственных головоломок.

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

В этой статье я:

  1. Расскажу про свой схематический язык описания головоломок.
  2. Подробно разберу 5 примеров из Tomb Raider и Plague Tale.
  3. Объясню, как это можно использовать.

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

Как я придумал свой фреймворк для пространственных головоломок

Общий язык

Моим главным референсом была Tomb Raider. Я начал с анализа геймплея
и попыток подогнать все взаимодействия элементов под общую схему.

Типы логических блоков на основе головоломок из<i> Tomb Raider.</i>
Типы логических блоков на основе головоломок из Tomb Raider.

Спустя несколько итераций у меня получился вот такой набор логических блоков. Суть каждого блока я описываю в примерах ниже.

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

Если вы решили использовать этот подход, то обязательно составляйте словарь на основе базовых механик вашей игры или референсов. Например, мой словарь полностью основан на механиках из Tomb Raider и я не смогу описать им головоломки из Portal или The Witness.

Анатомия блока.
Анатомия блока.

Каждый блок может:

  • быть активирован
  • получать значение
  • передавать значение и активировать другие блоки

Активация блока — это не только некий сигнал в механическом понимании, но в том числе и физический доступ к объекту. Если вам нужен ключ, который не достать без ящика, значит ящик «активирует» ключ.

Как я придумал свой фреймворк для пространственных головоломок

В этом примере ключ обозначен как goal блок, а ящик — manual movable блок.

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

Важным элементом схем является value блок (блок значения). Изначально он появился как обозначение штук для управления механизмами и всегда помечался как manual блок (ручной блок / блок с воздействием игрока).

Как я придумал свой фреймворк для пространственных головоломок

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

<i><mark class="cdx-marked-text marked-text">value</mark></i> блок автоматически передаёт значение <i><mark class="cdx-marked-text marked-text">movable</mark></i> блоку.
value блок автоматически передаёт значение movable блоку.
Как я придумал свой фреймворк для пространственных головоломок
Как я придумал свой фреймворк для пространственных головоломок
Как я придумал свой фреймворк для пространственных головоломок

Тут еще несколько простых примеров.

Как я придумал свой фреймворк для пространственных головоломок
Как я придумал свой фреймворк для пространственных головоломок
Как я придумал свой фреймворк для пространственных головоломок

Нарисовав десяток подобных схем, я решил отказаться от связей в виде стрелочек. Как ни крути, грани блока строго определены и смысл каждой связи всегда однозначно понятен. Без стрелочек схема выглядит «чище»
и проще считывается визуально.

Как я придумал свой фреймворк для пространственных головоломок

Дальше я буду подробно разбирать несколько примеров из Tomb Raider. Это самая жирная (и скучная, но важная) часть статьи. Вот ссылка на последнюю часть, если не хотите смотреть примеры.

Как я придумал свой фреймворк для пространственных головоломок

Практические примеры

Здесь описаны некоторые из тех головоломок, которые я использовал при создании фреймворка. Я достаточно дотошно описываю все детали текстом и скриншотами, но всё равно рекомендую смотреть видео.

Как я придумал свой фреймворк для пространственных головоломок

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

Как я придумал свой фреймворк для пространственных головоломок
Как я придумал свой фреймворк для пространственных головоломок

Описание с помощью фреймворка

  • катушка с тросом — ручной блок значения
  • платформа — вращающийся блок
  • вагонетка — подвижный блок
  • баррикада из палок — цель
Как я придумал свой фреймворк для пространственных головоломок

1. Все элементы головоломки.

2. Вагонетка активирует цель (разрушает палки).

3. Платформа активирует вагонетку (в нужном положении позволяет поднять вагонетку на возвышенность).

4. Катушка под воздействием игрока задаёт значение платформе и вагонетке (платформу и вагонетку можно цеплять тросом к катушке).

Как я придумал свой фреймворк для пространственных головоломок

— Почему вагонетка не manual блок, если игрок выталкивал её руками?

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

— Почему палки не destructible блок?

В данном случае разрушение палок вообще не играет роли, как и сами палки. Головоломка считается пройденной в момент перерезания троса, если value вагонетки превышает заданный порог (вагонетка на нужной высоте).

Как я придумал свой фреймворк для пространственных головоломок
Как я придумал свой фреймворк для пространственных головоломок

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

Из верхней башни течёт вода. Все башни нужно повернуть так, чтобы вода протекла через каждую и попала на колесо. Поворот верхней башни с водой блокируют палки. Палки можно сломать, забравшись на вторую башню.

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

1. Всем башням передаётся значение с единственной катушки руками игрока.

2. Каждая башня, начиная с первой, активирует следующую, передавая воду. Последняя башня активирует цель.

3. Первая башня активируется разрушением палок.

4. К палкам можно добраться, если залезть на вторую башню (вторая башня активирует палки).

Как я придумал свой фреймворк для пространственных головоломок

— Почему нельзя убрать value блок и обозначить все башни manual блоками?

Manual блок подразумевает прямое воздействие игрока на блок и служит для обозначения важного условия в пространственных головоломках — необходимости находиться в конкретном месте.

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

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

Как я придумал свой фреймворк для пространственных головоломок
Как я придумал свой фреймворк для пространственных головоломок

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

Как я придумал свой фреймворк для пространственных головоломок
Как я придумал свой фреймворк для пространственных головоломок

1. Катушка регулирует обе башни.

2. Первая башня активирует вторую, вторая активирует колесо.

3. Вода с первой башни активирует палки, палки активируют вторую башню,

4. Вторая башня активируется палками + водой с первой башни. Тут мы узнаем, что блок может активироваться несколькими блоками.

Как я придумал свой фреймворк для пространственных головоломок

Описывая эту головоломку, я первый раз столкнулся с задачей визуализации нескольких активаций. Я наивно хотел сохранить блоки в виде квадратиков, но все варианты либо ухудшали визуальное восприятие (1-3), либо просто были стрёмные (4). Конечный вариант с прямоугольным блоком оказался, на мой взгляд, самым визуально понятным.

Неудачные варианты
Неудачные варианты
Как я придумал свой фреймворк для пространственных головоломок
Как я придумал свой фреймворк для пространственных головоломок

Вот здесь прям рекомендую посмотреть видео.

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

Получается, нужно активировать журавль, вода начнёт заполнять ведро,
ведро начнёт опускаться. Вместе с ведром опускается катушка. Нужно успеть добежать вниз и зацепить мост за катушку. Журавль активируется на время,
а ведро протекает, поэтому через несколько секунд все возвращается в исходное положение.

Как я придумал свой фреймворк для пространственных головоломок
  • рычаг — триггер
  • журавль — таймер
  • ведро + катушка — блок значения и вертикальный блок
  • мост — ручная цель
Как я придумал свой фреймворк для пространственных головоломок

1. Рычаг активирует журавль (таймер).

2. Ведро и катушка двигаются синхронно — это единый механизм. Таймер активирует ведро на конкретное время.

3. Блок цели отмечен как manual, потому что опущенная вниз катушка даёт только возможность зацепить (активирует), но игрок должен успеть сделать это сам.

4. Просто еще одна картинка для симметрии :-)

Как я придумал свой фреймворк для пространственных головоломок

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

Три катушки.
Три катушки.

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

Цель — достать книгу.
Цель — достать книгу.
Первый шкаф.
Первый шкаф.

Первый шкаф держит в заложниках первый ящик. Ящик позволяет подняться на уровень выше через проход справа (стрелочка). На уровне выше игрок получает доступ ко второму ящику и остальным шкафам.

Последний шкаф.
Последний шкаф.

Вторым ящиком нужно подпереть последний шкаф.

Произошло успешное подпирание.
Произошло успешное подпирание.
Как я придумал свой фреймворк для пространственных головоломок

Со вторым шкафом всё в порядке.

Как я придумал свой фреймворк для пространственных головоломок

1. Три катушки контролируют три шкафа. Или нет?

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

3. Три шкафа и два ящика вместе создают визуальную кашу.

4. Заменил ящики на блок с буквой М для лучшего считывания схемы.

 Поднять шкаф можно дистанционно, отдав приказ компаньону
 Поднять шкаф можно дистанционно, отдав приказ компаньону
Как я придумал свой фреймворк для пространственных головоломок

5. Из-под первого шкафа мы вытаскиваем первый ящик.

6. Первый ящик позволяет достать второй ящик и залезть на второй шкаф.

7. Через второй шкаф можно попасть на последний шкаф...

8. ...но его надо подпереть ящиком.

Как я придумал свой фреймворк для пространственных головоломок
Как я придумал свой фреймворк для пространственных головоломок

Как этим пользоваться

На самом деле, часть с примерами, это:

1. Реверс-инжиниринг готовых головоломок

Инженеры разбирают чужие приборы, разработчики копаются в коде чужих приложений, а я в этой статье анализировал чужие готовые головоломки — это всё reverse engineering. В самом общем смысле, это способ исследования готовой сущности, путем разложения её на составные части.

Как я придумал свой фреймворк для пространственных головоломок

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

Например, Tomb Raider — один из основных референсов для ребят из Odd Meter. Любую схему из моих примеров они могут легко адаптировать под геймплей INDIKA. Механизмы и мир будут другими, но сохранится целостность пазла.

Подборка симпатичных схем из примеров.
Подборка симпатичных схем из примеров.
Как я придумал свой фреймворк для пространственных головоломок

2. Изучить идею с разных сторон

Как я придумал свой фреймворк для пространственных головоломок

Представь, ты полез за вдохновением на пинтерест, а в итоге залип на пару часов, изучая картинки промзоны и заброшенных заводов. Насмотревшись на всевозможные турбины, катушки, цепи и тележки, ты придумал идею крутого сюжета — что и где должно происходить. Ты придумал «мясо» пазла, которому теперь нужен «скелет» (структура).

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

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

Как я придумал свой фреймворк для пространственных головоломок

3. Великий рандом и мозговой штурм

Как я придумал свой фреймворк для пространственных головоломок

Если совсем нет вдохновения, то можно составить пронумерованный словарь объектов, сгенерировать набор случайных чисел и по нему собрать парочку схем, наобум проводя связи между блоками.

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

Это будет твоя исходная необработанная информация. Дальше мозг начнет пытаться её осмыслить, генерируя различные интерпретации.

Как я придумал свой фреймворк для пространственных головоломок

Заключение

Буду искренне счастлив, если кто-то попробует использовать фреймворк в своём проекте! Давайте развивать эту тему вместе — задавайте любые вопросы и делитесь фидбеком (даже негативным). Мне всегда можно написать в телеграм @waltan или на почту shir.vs@yandex.ru.

Благодарю за внимание.

122122
50 комментариев

Я правильно понимаю что ты изобрел геймдизайн? 

19
Ответить

он изобрел прототипирование.. оп стоп.. оно уже давно было

4
Ответить

Геймдизайноведенье скорее:D

Ответить

"Статья получилась объемной за счёт" 
целых 2 страницы А4...  Даже в школе и технаре рефераты больше были. Да я за вечер чата алко, флужу и обсуждений разных тем в разы больше генерирую контента

2
Ответить

Тебе если размер моего текста не нравится, то ты выйди со мной раз на раз, а не в интернете базарь. А вообще, речь больше про объем смысловой нагрузки, а не размер полоски скроллбара.

28
Ответить

Shiryaevпридумал свой фреймворк

4
Ответить

Комментарий недоступен

2
Ответить