Как создавалась механика изменения правил в Baba Is You Материал редакции

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

В закладки
Аудио

Основная механика Baba is You удивительна: когда три слова подряд составляют предложение, например «ROCK IS PUSH», это создаёт правило, которое немедленно вступает в силу в игре — камни на сцене можно толкать. Если убрать одно из слов, этот эффект немедленно исчезнет.

Арви Тейкари создал оригинальную версию Baba Is You для геймджема ещё в 2017 году. Теперь же она доступна для Switch, ПК, Mac и Linux на itch.io, Steam. Автор Gamasutra пообщался с создателем игры и выяснил подробности создания основной механики изменения правил. Мы выбрали из текста главное.

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

Например, слово «Baba» необходимо, чтобы написать предложение «Baba Is You», поэтому первое слово должно располагаться сверху или слева по отношению к остальным блокам. После того, как эти «первые слова» собраны, игра проверяет наличие других блоков рядом с ними и выполняет несколько элементарных проверок для сочетания этих слов.

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

Наконец, когда всё установлено, игра проверяет окончательный набор правил и корректирует их при необходимости. Например, если существует правило «Baba Is Not You», «Baba Is You» помечается как недействительное.

Некоторые слова, такие как SINK и PULL, имитируют поведение классической игры-головоломки, и поэтому их эффект очевиден. Другие слова возникли из-за того, что разработчик пытался придумать эффекты, которые могут быть интересными или забавными: MORE и LONELY — хорошие примеры этого.

Пример применения слова MORE

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

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

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

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

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

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

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

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

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

Тем не менее потенциальная опасность состоит в том, что чрезмерно конкурентная среда может привести к переутомлению и переработкам. По словам Арви, для него геймджемы — это по большей части прогулка по залу и впитывание атмосферы.

Baba Is You создана в Multimedia Fusion 2. Разработчик использует инструменты семейства продуктов Clickteam не менее 14 лет. По его словам, он очень привык к причудам MMF2, и поэтому считает его удобным инструментом. Также он добавил, что до того момента, как его друг-разработчик показал ему плагин Lua для MMF2 в 2016 году, у него не было каких-либо существенных знаний о языках программирования.

Таким образом, решение использовать MMF2 для Baba Is You было принято скорее по привычке. Lua позволил реализовать игровую логику таким образом, чтобы базовая «система событий» MMF2 не вызывала проблем. А сама MMF2 очень упрощала рендеринг графических ассетов.

Этот подход значительно усложнил портирование — у MMF2 есть несколько официальных инструментов экспорта, но у них есть собственные правила, которым нужно следовать. Компания MP2 Games создала движок специально для портирования игр: без него порт на Switch нужно было бы переписывать с нуля, а версии для Mac и Linux были бы значительно более ограниченными.

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

К самым ранним идеям относится, например, правило «Game Is Win» или «You Is You», которое приводит игрока к кат-сцене, происходящей «вне игры», или добавление слов, которые напрямую влияют на пользовательский интерфейс («Right Is Defeat» — при нажатии кнопки вправо наступает смерть и так далее). По признанию автора, это были интересные, но довольно мелкие и более разовые уловки, чем всестороннее изучение игровой механики.

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

Я был очень счастлив, когда мои знания кода наконец-то достигли такого уровня, что я смог полностью реализовать эту метасистему. (Тестер фактически убедил меня сделать метаструктуру на один уровень глубже, чем я изначально планировал, хе-хе).

Арви Тейкари
создатель Baba Is You
{ "author_name": "Владимир Семыкин", "author_type": "editor", "tags": ["\u043e\u043f\u044b\u0442","\u0438\u0441\u0442\u043e\u0440\u0438\u0438","\u0433\u0435\u0439\u043c\u0434\u0438\u0437\u0430\u0439\u043d"], "comments": 24, "likes": 68, "favorites": 107, "is_advertisement": false, "subsite_label": "gamedev", "id": 52139, "is_wide": false, "is_ugc": false, "date": "Wed, 29 May 2019 15:47:45 +0300", "is_special": false }
0
{ "id": 52139, "author_id": 94357, "diff_limit": 1000, "urls": {"diff":"\/comments\/52139\/get","add":"\/comments\/52139\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/52139"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954, "last_count_and_date": null }
24 комментария
Популярные
По порядку
Написать комментарий...
15

Интересная игра-головоломка. Ещё никогда мне не доводилось ходить по уровню стенами.

Ответить
10

Очень крутая и интересная идея с реализацией

Ответить
3

Сами вы бабы.

Ответить
1

Шутка is не смешная

Ответить
3

Scribblenauts на минималках.

Ответить
–18

Комментарий удален по просьбе пользователя

Ответить
7

Ты, конечно, готов наглядно аргументировать свою позицию, я надеюсь?

Ответить
0

Комментарий удален по просьбе пользователя

Ответить
0

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

Ответить
–1

Комментарий удален по просьбе пользователя

Ответить
1

Ну потому и не работает, что фраза построена не по правилам, а полное отсутствие правил не дало бы новых сочетаний, но реально упростило бы решение загадок в ноль. Тут главное, что можно составить BABA IS WIN и любое другое сочетание токенов, составленное по правилам.

Ответить
–2

Комментарий удален по просьбе пользователя

Ответить
3

Играл, правила вполне логичные и стройные. Не знаю даже, что там улучшить.

Ответить
1

Люблю когда в головоломке есть свобода чтобы решить загадку больше чем одним способом, баба из ю в этом плане для меня один из самых интересных опытов в головоломках на ряду с Crayon Physics

Ответить
0

например

Ответить
0

Сейчас бы на мнения ютубовских недоюмористов ориентироваться

Ответить
1

Отличная и необычная игра. Приятно видеть, что она хорошо стартовала в Steam )

Ответить
–1

https://www.youtube.com/watch?v=3a9j7x40xLs Гуфовский орет и радуется постоянно, а на 5:10 хвалит.

Ответить
0

Лучшая головоломка в которую я играл

Ответить
2

Одна из лучших.
Я в последний раз такие впечатления получал от [The Witness], когда нашёл первую настоящую головоломку.

Ответить
0

🎮 The Witness
Дата релиза: 25.01.2016
Рейтинг Metacritic: 87

Разработчики: Number None, Thekla, Inc, NVIDIA Lightspeed Studios
Издатели: Number None, Thekla, Inc.

🛒 SteamPlayStation StoreXbox StoreApp StoreGOGGoogle PlayEpic Games

Ответить
0

О да, тоже шикарная

Ответить
0

Таких свежих механик очень не хватает в нынешних современных играх :с

Ответить
–1

Лучше Baba Is You только стримы Гуфовского по Baba Is You

Ответить

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovz", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "chvjx", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "chfbl", "p2": "gnwc" } } } ]