Когда я приступал к сборке пазлов, у меня не было ни малейшего представления о том, как и почему они должны работать. Но собрав больше сотни уровней, я начал понимать определенные паттерны и вывел для себя некоторые правила в построении загадок. Я не претендую на истину в последней инстанции, но лично мне они помогли с самым сложным, а именно: какой должен быть уровень на конкретном месте, как он должен работать и почему. Начну с того, что в рамках этого текста я предлагаю понимать под головоломкой «пазл». Это в первую очередь игровая сцена, которая ставит перед игроком ряд задач, с объектами на ней, с частью из которых игрок может взаимодействовать. Как правило, любой пазл можно декомпозировать до нескольких «ходов», звеньев в цепи решения. В зависимости от сложности уникальности и количества таких ходов на одной сцене, которые нужно подобрать, будет и увеличиваться сложность самого пазла. Но об этом позже. В самом начале идет обучение какой-то механике. Любая игра сначала учит нас чему-то, а потом экзаменует на умение обращаться с полученным знанием. Моя задача заключалась в том, чтобы игрок не мог пройти уровень, не освоив представленную на нем механику. Например, на первом уровне игроку доступна только механика поворота. Это первая механика, с которой он сталкивается. Как нам быть уверенными в том, что он ее усвоил? Очевидно, решение уровня должно засчитываться только после того, как игрок верно применит механику, а именно повернет зеркало. На этом этапе точность его движений для нас не слишком важна, главное, что он попал в цель. Пройти уровень, не повернув зеркало, нельзя, игрок вынужден его повернуть и тем самым, освоив механику, научиться ей пользоваться. Но это не значит, что он ее понял, осознал все тонкости ее работы. То, что игрок освоил что-то, означает лишь то, что он может этим пользоваться, не вдаваясь в детали самого процесса. Чтобы водить машину, необязательно досконально знать, как устроена ручная коробка передач. Чтобы пользоваться компьютером, не обязательно задумываться о том, как настроены вторичные тайминги оперативной памяти и т.д.  В дальнейшем, чтобы игрок закрепил механику, мы повторяем ситуацию, которую он уже решил, усложняя ее, но так, чтобы игрок понимал, что в цепочке действий, которые ему предстоят, добавился еще один элемент или шаг. Конечная цель должна быть прозрачной для игрока. Добавив на следующем уровне стену, мы добавляем к привычной схеме еще одно звено.  Игрок уже не может кратчайшим путем, освоенной механикой поворота достигнуть цели. Ему нужно сделать несколько дополнительных действий, поворотов и обогнуть препятствие. Мы добавляем механику преград, одновременно закрепляя механику поворота. Это все довольно просто, и я уделяю этому столько времени просто для того, чтобы стал ясен дальнейший принцип. В последующих уровнях игроку встретятся более сложные в понимании механики, но принцип овладения ими не изменится. В начале мы не оставим ему выборов, кроме единственно верного, для решения, а затем будем постепенно добавлять звеньев в цепочку его действий.  Когда игрок в должной степени освоит механику, можно углубляться в ее суть. Что будет, если вернуть луч в расщепитель? Я знаю, игрок – нет. Осталось объяснить это ему без использования слов и подсказок. То есть создать ситуацию, в которой верным решением стало бы то, что я уже знаю о механике и хочу до него донести. Возможно, у него уйдет немало времени на перебор возможных вариантов, если он попробует решить пазл перебором или чрезвычайно сложным образом, но, если задача подобрана верно, этого произойти не должно. Можно просто дать человеку ответ, написав подсказку в духе «верни луч», и он создаст еще один, игрок это поймет, но радость «Ага!-момента» пропадет. Не будет ощущения, что он сам до этого дошел.  Тут стоит сделать отступление и сказать, что никогда не знаешь, как игрок себя поведет. Про это написано немыслимое количество шуток и анекдотов о тестировщиках и просто о человеческом поведении, не поддающемся прогнозам. Но тут, конечно, ради допущения предполагается среднестатистический человек. Этот сферический конь в вакууме не станет совсем уж ломать игру и подбирать немыслимые варианты, он пойдет по более простому пути. Однако не учитывать тех, кто захочет проверить игру на прочность, нельзя. Многие из тех, кому я давал ранние билды игры, намеренно пытались проверить ее на устойчивость ко взлому, а меня, как создателя, на предусмотрительность. Игроки пытались найти баги, использовать недопустимые углы, искали любые лазейки и недокументированное поведение механик, чтобы добиться чего угодно, необязательно победы, просто чтобы показать: смотри, как я могу, а ты вообще смог это предвидеть, не сломает это твою игру, я тебя перехитрил? Иногда я ловил себя на мысли, что все возможные варианты я просто не смогу перебрать сам. Когда я создаю пазл, уже на стадии прототипа я играю в него и пытаюсь решить эффективнее, чем это сделано в исходном решении. Например, освободить один элемент и решить пазл меньшим количеством из доступных. Так как наш пазл дает довольно большую свободу по расстановке зеркал, в отличие от подавляющей массы таких игр, где зеркала привязаны к условным клеточкам на поле, то и вариантов перебора, а значит, и потенциальной возможности сломать пазл куда больше. И вот я завершил пазл и сажусь в него играть. Мне нужно перехитрить самого себя. И это довольно сложно на самом деле, обладая пониманием того, как именно устроен тот или иной уровень. Я точно знаю цепочку действий, которую нужно совершить, и в каком-то смысле это понимание меня ограничивает. Игрок, который впервые столкнется с этим пазлом, не знает, что его ждет. Он может перебирать любые варианты и пытаться пройти его с нахрапом, даже не вдумываясь в принцип его построения. И вот в этой креативной непоследовательности может найтись совершенно неожиданный для меня, как для создателя, способ. Более того, я, как правило, стремлюсь, чтобы сам уровень и его решение были элегантными и, если это возможно, красивыми, с эстетической точки зрения. Поэтому я намеренно оставляю отступы от краев экрана и не скидываю все элементы в кучу, стараясь располагать их согласно композиции сцены, как если бы это была картина.  Но игрок не ограничен моим видением прекрасного. Если можно все элементы стянуть в один край, он это обязательно сделает, и если там будет расщепитель, то различные пограничные значения углов и скученность зеркал могут дать неимоверно большое количество лучей. И даже такой случай не должен ломать пазл. С самого начала мы с командой решили не ограничивать игрока строго. Это был основной замысел - дать игроку свободу действий. Конечно, полной ее можно назвать лишь условно, так как зачастую именно какие-то условные препятствия и делают пазл пазлом. Дать игроку возможность делать совершенно что угодно сравнимо с паролем на бессмертие и убийством любого с одного выстрела в шутерах. Это весело короткий отрезок времени, но ни о каком вызове для игрока в такие моменты речи не идет. Ограничения - это не только препятствие на пути к получению удовольствия, иногда сами ограничения и есть удовольствие. Речь шла, конечно, о свободе в подборе вариантов. На мой взгляд, стоит разделять то, какой расстановкой решен пазл, и то, каким способом, с использованием какой особенности механики он решен. Мне кажется, привязывать игрока к конкретным клеточкам на поле – это, в каком-то смысле, упрощать ему подбор вариантов и частично отнимать у него развлечение. Если он захочет попробовать что-то совсем уж фантастическое, зачем ему мешать. Я для себя избрал следующий критерий правильности готового решения. Если уровень решен с использованием всех запланированных мной элементов, той механики или тонкости работы этой механики, что и задумано, значит, он решен верно. Вне зависимости от того, в каком месте игрок расположил доступные ему элементы или в каком порядке.  К слову, о порядке элементов. Были довольно специфические этажи на сложные для меня механики, где в силу ограниченного пространства наших уровней невозможно наращивать количество объектов до бесконечности. В результате механики, требующие для адекватной работы определенного количества элементов, ставили меня в тупик. Например, сигнал, угасающий от зеркала к зеркалу, требовал не менее трех зеркал, чтобы угаснуть. Но нам еще нужно заложить возможности для вариативности – это еще сколько-то объектов, необходимых для самой загадки, и несколько сверху для возможности перебора вариантов. Все это по итогу создавало нечитабельную мешанину на экране - проходить такой пазл просто неприятно. Это ощущение можно сравнить с тем, как достаешь запутавшиеся в кармане провода наушников или гирлянду из коробки. Тебе хочется скорее получить удовольствие, а нужно сидеть и распутывать все это, свернувшееся клубком совершенно неудачнейшим образом. С другой стороны, отказываться от механики не хотелось, она содержит в себе интересные принципы. Если игрок в решении изначальных задач не был ограничен в количестве зеркал и их расположении, их порядок на решение не влиял, то здесь, по сути, важно не только то, какое зеркало использовано, но и где именно оно находится и после которого идет. Это добавляет к базовой задаче определенный менеджмент доступных ресурсов, что углубляет игровой процесс. Схожих целей можно добиться при использовании цветных зеркал и фильтров, а также промежуточных целей. Благодаря этим нехитрым элементам можно создать внушительное количество разнообразных загадок с изменяющимися принципом и логикой решений.  Внезапно для меня оказалось, что сложнее делать простые уровни. Речь об уровнях с минимумом базовых механик и элементов, при этом не менее интересных и разнообразных, чем уровни со сложной механикой из кучи элементов. Безусловно, можно создать подобие лабиринта, где игрок может повернуть луч вправо и влево, а затем любой из этих выборов также приведет к выбору из нескольких доступных поворотов. И так до тех пор, пока одна из цепочек не приведет игрока к искомому финалу.  Таких уровней можно наклепать сотни – знай себе меняй положения стен. Но будет ли это интересно на второй, десятый, сотый раз? На мой взгляд, нет. Мне хотелось добиться системы, при которой уровни не сводились бы к формуле: выбери направление из нескольких, затем повтори. Но что из средств создания остается нам тогда? Как вариант, мы можем предложить игроку, помимо выбора направления, найти наиболее «удачный», скажем, короткий путь. Например, можно ограничить подвижность части элементов, чтобы, манипулируя свободными, игрок достраивал решение. Мы можем предложить использовать элементы более эффективно, завязав загадку на повторном отражении света от одного и того же зеркала, или предложить найти правильную позицию для конкретного элемента, которая разрешила бы загадку, и много чего еще. Это все база, на нее сверху мы накидываем механики, которые должны разнообразить процесс и дать игроку в прежних условиях получить новые возможности, а значит, способы решения и, как итог, впечатления, и удовольствие от решения.  А что если нам нужно ранжировать пазлы по сложности? Казалось бы, берешь и ставишь простую в начало, сложную – в конец. Тогда как понять, насколько один пазл сложнее другого и как их упорядочить? Можно, например, начать с количества действий, за которые игрок ее решит. Чем больше их потребуется, тем сложнее. Либо начать с того, насколько сложна сама механика или насколько нестандартный ход используется на уровне.  И это все работало бы, если бы все игроки думали одинаково. На деле же сложная задача для одного оказывается простой для другого. Помимо индивидуального опыта, с которым каждый конкретный игрок подходит к той или иной головоломке, это часто зависит от выбранного способа решения. Кто-то пытается увидеть картину целиком, кто-то разобрать на составляющие и искать взаимосвязи частей, а кто-то решает от обратного, например, выстраивая головоломку от конца к началу. И в каждом конкретном случае один или несколько способов будут проще остальных, а значит, и загадка будет ощущаться игроком легче.  Фактически игрок, не зная, что перед ним простая загадка, может довольно надолго увязнуть, перебирая все чрезвычайно сложные варианты, приходящие ему на ум. В итоге к тому моменту, когда он дойдет до решения, затратив уйму времени, субъективно сама загадка будет ощущаться сложнее, чем она планировалась. Сложным покажется сам путь до ответа, если игрок не анализирует свои действия, а просто ищет способы решения, ориентируясь на затраченное время и число попыток, а не на реальную сложность ходов. И таких субъективных факторов масса. Остается только стараться достичь прогрессии сложности с пониманием того, что идеальной для всех ее сделать невозможно. Я не мог точно назначить сложность пазла, даже глядя на ответ к нему. Все игровые сессии, что я видел, сидя рядом, из-за плеча игрока, давали противоположные результаты. Кто-то легче справлялся с первым, но страдал над поиском ответа ко второму, а кто-то наоборот. Плюс мое восприятие сложности того или иного пазла было также искажено тем, что именно я их и придумал, а значит, заранее знал суть. Для меня после десятков прогонов одного и того же они казались значительно проще и равны между собой, что, конечно же, необъективно.  Собрав немалое количество своих головоломок, я стал иначе смотреть на чужие. После того, как сам собираешь что-то по кусочкам, проще декомпозировать чужие задумки. Мой способ решения в подобных играх строится на понимании того, что сама загадка всегда имеет решение доступными нам средствами. Ее кто-то придумал, и ее можно понять и решить, если подобрать принцип, увидеть закономерности и ограничения, рассуждать, чего я пытаюсь добиться на каждом из этапов, что мне для этого доступно и т.д. Если это хороший пазл, его создатель что-то пытался мне сказать, осталось только понять, что именно. Это подкрепилось и на практике: были головоломки в рамках жанра, которые я бросал не пройдя, но, вернувшись к ним, уже набравшись опыта самостоятельной разработки, смог их осилить. Не скрою, это было приятно. Значит, не только игрок смог бы научиться чему-то в процессе игры, но и я в процессе ее создания.  Что я мог бы посоветовать человеку, который станет заниматься созданием подобного рода игр? Первое – изучите доступные вам механики. Первое время не пытайтесь создавать уровни с загадками, для начала вы сами должны научиться играть в игру. Разместите элемент на сцене, подумайте, по каким правилам он взаимодействует со всеми прочими доступными игроку элементами, есть ли в этом взаимодействии какие-то тонкости и нюансы, можно ли их донести до игрока через головоломку так, чтобы он тоже их увидел и понял. Когда вы переберете все, что могло прийти вам в голову, начинайте добавлять элементы. Попробовали с одним, переберите все возможные варианты с двумя или тремя одинаковыми, потом добавьте к этой куче другой элемент другого вида, работающий по другим правилам. Возможно, на стыке двух механик у вас выйдет что-то занимательное. В конце концов, полезным будет просто выставить на игровую сцену некий набор элементов, поиграться с ними без конечной цели. Тут пригодится фантазия, как когда вы смотрите на облака и пытаетесь понять, на что они похожи, зная, что на самом деле их форма случайна. Так и перебирая элементы и их положения, вы можете навести себя на интересную мысль. Тогда, очистив сцену от лишнего, вы такой своеобразной огранкой доведете головоломку до правильного вида. Более того, обязательно сохраняйте скриншоты, если в ходе таких перестановок что-то получающееся показалось вам интересным. Оно, возможно, не понадобилось вам в текущей головоломке, но, когда вдохновение покинет в следующий раз, вы сможете вернуться и поискать идеи в таких сохранениях. Когда за вашей спиной будут уже дюжины созданных пазлов, вам начнут приходить идеи без необходимости включать редактор. Вы сможете в голове представлять себе идею и расстановку и примерно прогнозировать то, к чему она вас приведет. Останется только включить компьютер и перенести все идеи в игру. Порой, когда вдохновение покидает вас, а работать и выдавать новые головоломки все еще нужно, можно попробовать посмотреть, как это сделано в подобных играх. Копировать чужое не нужно, но проанализировать то, что работает и почему оно кажется вам любопытным или, наоборот, скучным, будет полезно. В процессе такой декомпозиции чужих работ вам также может прийти мысль о том, как это возможно применить на своей практике. Ну и, конечно, спустя много времени полезно вернуться к вашим первым работам и, если уже забылось решение, поиграть в них: иногда можно найти любопытные ответы. Еще это возвращение дает понять, что вы выросли и какие-то из вещей в ваших первых работах нужно исправить с учетом вашего текущего уровня понимания их. Для тех, кому интересно ознакомиться непосредственно с описанной мною игрой, оставлю ссылку тут. Она бесплатна и доступна целиком. Дополнительную информацию по теме создания головоломок можно получить, ознакомившись с серией видео на английском тут.