Hella World: Диалоги о дизайне
Меня каждый раз веселит, когда очередная большая игра, которая кичится своим «реализмом», огромным миром и проработанными персонажами, реальзует общение с NPC через «Нажми Е чтобы поговорить», намеренно показывая их тупыми болванчиками, единственная задача которых — дождаться игрока, вылить на него очередную порцию экспозиции и выдать квест на убийство десяти крыс в подвале.
Я искренне считаю, что можно лучше. Что мы, как творцы, должны всеми силами противостоять застою в индустрии и формированию каких-то механических, искуственных, глупых условностей. Так что сегодня мы поговорим про фидбек-луп из семи круп, и про то, как мы в своей игре реализовали взаимодействие игрока с NPC.
Напомню для тех, кто к нам только присоединился: Hella World — это болезненно скучная игра, происходящая в мире, который вас ненавидит. В Hella World игрок берёт на себя роль графического дизайнера, задача которого — создавать для клиентов разного рода полиграфию: визитки, открытки, флаеры, и т.д., борясь при этом с отвратительным интерфейсом, который явно не помогает игроку делать работу быстро.
Про общее видение игры я рассказывал вот в этой статье, сегодня же мы поговорим о прогрессе в игре и о том, как для игрока формируются задачи.
Hella Clients
Наша квестовая система и система диалогов совмещены в одном окне, представляющим собой таск-менеджер, наподобие Jira или Trello.
Здесь игрок видит список рандомно генерирующихся задач, которые ему предстоит выполнить, а также их тип и награду. Затем игрок читает вводное письмо от клиента, и пытается понять, что клиенту вообще нужно. Обычно это письма такого вида:
Добрый день! Я представитель магазина Better World Inc.™, и в эту пятницу у нас стартует недельная акция: «Всё за полцены». Пожалуйста, сделайте клёвый флаер, чтобы он выглядел серьёзно и презентабельно. Заранее спасибо!
Из этого письма игрок вычленяет всю нужную информацию: сегодня 7е мая, а значит, распродажа идёт с 8.05 до 15.05, «полцены» -- это скидка 50%, а «серьёзный и презентабельный» стиль будет, скорее всего, строгим: без рюшек и ярких цветов. После этого игрок открывает редактор, выбирает нужный шаблон, и заполняет все поля на основе письма клиента.
Затем игрок сохраняет файл и отправляет его клиенту. На данный момент прикреплять файлы к письму относительно удобно, в будущем мы это обязательно исправим.
Так как клиент заранее знает, какой результат он хочет получить, то он может однозначно ответить, верно ли игрок заполнил каждое поле, и рассказать, что не так. И если с вводным письмом — возьми готовый текст и немного нарандомь процент скидки, период распродажи, и имя клиента — всё понятно, то с правками, которых может быть много, а может не быть вовсе, генерация письма становится интересней. Такой имейл зависит от множества переменных: сколько ошибок совершил игрок, сколько попыток он уже потратил, как клиент формирует предложения, насколько чётко он это делает? Что, если игрок постоянно ошибается, и клиенту уже надоело постоянно расписывать, что не так? Что, если клиент забыл отправить какую-то важную информацию, и должен извиниться за свою ошибку?
Так что это отличный шанс вдохнуть в наших персонажей жизнь. На данный момент клиенты у нас тупенькие: отвечают односложно, пишут невнятно, часто повторяются. Хотя, если подумать, а кто из нас нет?
В итоге такая, казалось бы, простая система диалогов позволяет нам реализовать разнообразных персонажей, где каждый ведёт себя по-своему и ставит перед игроком нестандартые задачи:
- Клиент адекватный (в дикой природе не встречается)
- Отправляет всю инфу чётко и по пунктам
- Отвечает чётко и по теме - Клиент обычный
- Всю нужную инфу отправляет вразнобой
- Даты пишет в формате «послезавтра», «следующая пятница», «до Хэллоуина»
- Вносит правки в стиле «мне не нравится» - Клиент нервозный
- Нервничает, часто пингует игрока «ну чё там»? - Клиент забывчивый
- Отправляет инфу несколькими письмами
- «ой я забыл вам логотип отправить», «ой у нас сайт поменялся»
- Отвечает раз в тысячу лет, «ой простите я забыл ответить», вот это всё - Клиент неуверенный
- Вечно недоволен дизайном, но не может сформулировать, почему.
- «Ощущения не те, понимаете? Может, что-то ещё попробуете?»
- Вынесет тебе все мозги бесконечными правками, в итоге согласится на самую первую итерацию дизайна - Заботливый родитель
- «У меня сын тоже дизайнер»
- Имеет ребёнка, который на бумажке накалякал дизайн визитки, требует сделать точь-в-точь как ребёнок сделал, но красиво - Клиент разговорчивый
- Отвечает аудиосообщениями
- Половину сообщения бормочет что-то не по теме, мычит, чото мямлит, забывает о чём хотел сказать вообще - И так далее
Добавьте к этому индивидуальную манеру речи (например, открытка, которую один человек назовёт «элегантной и милой», для другого человека будет просто «дерьмовой»), и у нас формируется хороший инструментарий для реализации очень разнообразных персонажей, которые, хоть и сильно ограничены в средствах выражения, с помощью даже такого формального письма способны раскрыть тонкие аспекты своего характера.
И день за днём игроку открывается возможность немного заглянуть в жизнь каждого клиента, узнать, что в его жизни происходит. У владельца магазина проблемы с бизнесом и он устраивает тотальную распродажу, чтобы хотя бы выйти в ноль? Или нерадимый внук только что вспомнил о дне рождения своей бабушки, и просит вас сделать красивую открытку, чтобы это наверстать? А, может, любимая дочь, давно переехавшая в другую страну, хочет отправить своим родителям приглашение на свадьу? Каждый день перед глазами игрока вершатся судьбы людей — разве это не замечательно?
Очень претенциозную вещь скажу, но мне лично кажется, что мы, с помощью довольно простой диалоговой системы, нащупали необычный способ раскрывать персонажей чуть тоньше, чем это обычно делается в играх. Если у вас появятся идеи интересных персонажей, или примеры из жизни — будем рады послушать.
Время ссылок
Если вам понравилась эта статья, можете оценить прерыдущие статьи из цикла разработки Hella World:
Hella World: A Tidy Build — играбельное демо
Также подписывайте на нашу группу vk, чтобы следить за проектом после фестиваля
Клиент разговорчивый- Отвечает аудиосообщениями
бооооооль