{ "author_name": "Артемий Леонов", "author_type": "self", "tags": ["\u0433\u0435\u0439\u043c\u0434\u0438\u0437\u0430\u0439\u043d"], "comments": 124, "likes": 123, "favorites": 52, "is_advertisement": false, "section_name": "gamedev", "id": "13948", "is_wide": "" }
Артемий Леонов
20 910
Gamedev

Принцип лифта: как сделать долгие загрузки приятными

Разработчик Kongregate делится советами о том, как сделать игру «быстрой».

Поделиться

В избранное

В избранном

Как быть разработчику, если даже после нескольких месяцев оптимизации и кучи затраченных усилий, у игроков всё равно возникает чувство, что его игра — «медленная»? Разработчик Даг Стюарт написал статью для Kongregate Development Blog, в которой поделился советами о том, как сделать так, чтобы игра ощущалась «быстрой», а игроку никогда не казалось бы, что он тратит время впустую — даже во время долгой загрузки.

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

Даг сводит эту притчу к следующей формуле.

Я жду слишком долго → в чём здесь проблема? → мне не нравится ждать! → почему? → потому что это скучно! → значит, нужно разобраться со скукой.

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

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

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

Если вы хотите, чтобы анимация ощущалась «быстрой», Даг советует ограничивать её длиной в 200-800 миллисекунд (в зависимости от сложности). Если необходима длинная последовательность действий, то её лучше разбить на составные части, каждая из которых в отдельности должна ощущаться «быстрой».

По словам Дага, у этой проблемы нет простого решения. Даже совет никогда не опускать средний фреймрейт ниже 60 кадров в секунду будет верным не всегда. Например, частота кадров в Cuphead может быть гораздо выше, но анимация всё равно ощущается гораздо более медленной — более редкая смена кадров лучше вписывается в эстетику мультфильмов тридцатых годов.

Даг рекомендует делать всё так, как лично вы считаете нужным — главное, чтобы у игрока не появилось ощущения, что ваша игра «притормаживает». Анимация повлияет на то, как игра будет ощущаться в целом, и напрямую отразится на том, насколько лояльным к игре будет игрок к тому моменту, когда вам всё-таки придётся заставить его немного подождать.

В этот момент Даг предлагает вспомнить об истории с лифтом. У вас есть несколько секунд внимания игрока, вопрос в том, как вы им распорядитесь.

Обычно загрузочные экраны не содержат ничего интересного, кроме арта и полосы загрузки. Но их всегда можно сделать более динамичными — например, при помощи меняющихся надписей с шутливой информацией о прогрессе загрузки. World of Goo, например, использует в этой ситуации абсурдный юмор. Главное в этом методе — заготовить как можно больше таких сообщений, чтобы они не повторялись. По мнению Дага, такое решение вряд ли будет эффективным, если загрузка занимает более одной минуты.

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

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

В некоторых случаях на время загрузки игрока можно просто отправить на «детскую площадку» и позволить ему развлекать себя самому. Идеально этот приём реализован в играх серии Assassin’s Creed — там игрока оставляют на бесконечной пустой арене, по которой он может сколько угодно бегать, размахивая оружием. Плюс ко всему, это отлично сочетается с лором и нарративом игры, события которой происходят внутри цифровой симуляции.

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

Одно из очевидных решений — отдельная мини-игра на загрузочном экране. Как бы странно это ни звучало, до 2015 года патент на «способ избегать излишней потери времени» при помощи мини-игр принадлежал Namco — любой другой компании закон запрещал добавлять отдельные игры на загрузочный экран. Однако сейчас запрет спал, и многие поспешили воспользоваться этой возможностью — например, разработчики Splatoon.

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

При этом никто не запрещает комбинировать эти способы. Загрузочный экран в Bayonetta 2 — это одновременно и «обучение», и «бесконечная арена» и «мини-игра». Игрок может бегать и совершать бессмысленные телодвижения, может попрактиковаться без вероятности быть побеждённым, а может попробовать выполнить челлендж. Если загрузка затянется — ничего страшного, если пролетит слишком быстро — игрок тоже вряд ли расстроится. В этом варианте лишь одна проблема — нужно быть уверенным, что геймплей вашей игры настолько сложен и разнообразен, чтобы такая загрузка не наскучила игроку спустя несколько раз.

Ваша игра может очень сильно отличаться от всех перечисленных, но это не значит, что её нельзя улучшить при помощи одной или нескольких описанных техник. Например, для условного 2D-платформера Даг предлагает следующий вариант: во время загрузки игрок может тренироваться, прыгая по абстрактным геометрическим формам. При этом с течением игры, когда игроку откроются новые умения и приёмы, дизайн этой «тренировочной площадки» тоже может меняться и становиться более сложным — чтобы игрок постоянно мог проводить время с пользой, тренируясь во время загрузки.

Даже лучшая в мире игра может погибнуть, если она будет восприниматься, как «медленная». Но вы всегда можете изменить это восприятие — если всё тщательно спланируете и сможете обратить «лишнее» время игрока ему на пользу. И если не будете забывать, зачем лифтам нужны зеркала.

Даг Стюарт
Kongregate

#геймдизайн

Популярные материалы
Показать еще
{ "is_needs_advanced_access": false }

Комментарии Комм.

Популярные

По порядку

0

Прямой эфир

Узнавайте первым важные новости

Подписаться
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "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": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "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", "tablet" ], "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, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "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": "create", "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-549065259", "adfox_url": "//ads.adfox.ru/228129/getCode?p1=bxeub&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid21=&puid22=&puid31=&puid32=&fmt=1&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } } ]