Платформинг в горах: почему в Celeste такая приятная система управления Материал редакции

Разбор основных действий и сравнение с другими платформерами.

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

Автор YouTube-канала Game Maker's Toolkit Марк Браун опубликовал новое видео, в котором рассказал об основных достоинствах платформинга в Celeste. Игра отличается удивительно отзывчивым и точным управлением, благодаря чему персонаж делает именно то, чего от него хочет пользователь. Чтобы узнать, как авторам удалось добиться этого, Браун поговорил с геймдиректором Мэттом Торсоном, и программистом Ноэлем Берри. Мы выбрали из видео главное.

Бег персонажа в любом платформере можно разделить на три этапа: ускорение (время от состояния покоя до достижения максимальной скорости), максимальная скорость и замедление (за какое время герой остановится, если изначально будет двигаться на максимальной скорости).

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

График скорости ускорения и замедления в Mega Man 11

В Super Meat Boy ускорение занимает достаточно много времени, а замедление — мало, поэтому персонаж ощущается тяжёлым.

График скорости ускорения и замедления в Super Meat Boy

А в Super Mario Bros. 3 и ускорение, и замедление занимают довольно много времени, из-за чего создаётся ощущение, что Марио бежит по льду.

График скорости ускорения и замедления в Super Mario Bros. 3

В Celeste Маделин разгоняется и замедляется очень быстро: ей нужно всего шесть кадров, чтобы разогнаться (что в четыре раза меньше, чем в Super Meat Boy), а чтобы остановиться — всего три (что в девять раза быстрее, чем Марио в New Super Mario Bros. U).

График скорости ускорения и замедления в Celeste

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

Максимальная скорость героини ниже, чем в некоторых других платформерах

Подобный анализ можно провести и с прыжками. Для этого достаточно посчитать, на какую высоту своего тела может прыгнуть герой. Например, в New Super Mario Bros. U Марио может прыгнуть на высоту, которая в четыре раза больше высоты его тела, Мясной парень — в шесть раз. А героиня Celeste прыгает на высоту, которая в три раза выше её собственного роста.

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

В Super Meat Boy у героя высокий и долгий прыжок, из-за чего возникает ощущение «плывучести».

У Ярни в Unravel очень короткий прыжок, и очень маленький промежуток времени между возвышением и падением. Из-за этого персонаж ощущается тяжёлым, чего не ждёшь от вязаной игрушки.

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

Конечно же, есть ещё множество особенностей, которые делают управление приятным. Например, этому во многом помогает её умение менять направление почти мгновенно. Также в воздухе игрок может перестать наклонять стик или нажимать на кнопки управления, что приведёт к тому, что героиня практически сразу полетит прямо вниз. Это позволяет приземлиться именно там, где это нужно.

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

Всё движение героини прописано в Visual Studio с помощью XNA Framework от Microsoft. Разработчики не использовали физические системы, которые можно увидеть, например, в Unity или Game Maker, так как они хотели иметь полный контроль над тем, как игрок будет управлять персонажем.

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

Мэтт Торсон
геймдиректор и соавтор Celeste

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

Ноэль Берри
программист и соавтор Celeste

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

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

Рывок забирает контроль у пользователя — персонаж просто летит в выбранном направлении на максимальной скорости. Но это продолжается лишь 0,15 секунды — после этого контроль возвращается.

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

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

Множество препятствий в Celeste можно преодолеть разными способами — можно выбирать между рывком или карабканьем. В одних местах нужно использовать что-то одно, в других — оба действия в разных последовательностях. Рывок всегда задумывался как более хаотичная функция, которую сложнее контролировать, а с карабканьем наоборот — над ним контроля больше.

Мэтт Торсон
геймдиректор и соавтор Celeste

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

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

Есть и другие хитрости: если во время рывка героиня наткнётся на угол платформы, то она не врежется, а обогнёт его; хит-бокс острых пик немного меньше, чем кажется, поэтому пользователь не проиграет, если дотронется до самого кончика; блоки со светофором дают чуть больше времени, чтобы нажать на кнопку для подбрасывания героини.

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

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

Также Марк Браун поговорил с игроком TGH, имеющим мировой рекорд по скоростному прохождению Celeste, и попросил назвать техники, позволяющие максимально эффективно проходить уровни.

Dash cancel — мгновенная отмена рывка с помощью кнопки прыжка, которая позволяет использовать первоначальный импульс для совершения длинного прыжка. Если сделать это действия пригнувшись, то получится hyper dash — менее высокий, но более быстрый вариант. Также можно немного увеличить время между рывком и прыжком, что позволит героине перезарядить действие в воздухе.

Если же после hyper dash сделать рывок по диагонали вперёд и вниз, то в некоторых моментах можно получить значительное ускорение. Это действие называется ultra dash. Dash cancel также можно совершить при прыжке у стены — такое действие называется up-hyper или wallbounce. Учитывая, что все эти действия были специально созданы разработчиками, они отлично подходят для прохождения и вписываются в левелдизайн.

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

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

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

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

{ "author_name": "Владимир Семыкин", "author_type": "editor", "tags": ["long","\u043b\u043e\u043d\u0433","celeste","\u0433\u0435\u0439\u043c\u0434\u0438\u0437\u0430\u0439\u043d"], "comments": 27, "likes": 95, "favorites": 175, "is_advertisement": false, "subsite_label": "gamedev", "id": 62418, "is_wide": true, "is_ugc": false, "date": "Mon, 05 Aug 2019 11:06:00 +0300", "is_special": false }
0
{ "id": 62418, "author_id": 94357, "diff_limit": 1000, "urls": {"diff":"\/comments\/62418\/get","add":"\/comments\/62418\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/62418"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954, "last_count_and_date": null }
27 комментариев
Популярные
По порядку
Написать комментарий...
14

После этой статьи сразу захотелось поиграть в Celeste. Многие ее нахваливали, но мне не довелось в нее поиграть

Ответить
0

Если любишь платформеры, точно не пожалеешь

Ответить
0

Если седалище жароустойчивое и не имеешь привычки кидать геймпады в стенку - обязательно поиграй! :)

Ответить
0

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

Ответить
0

Дык... А смысл-то играть без клубничек и би-сайдов в такой жанр?

Ответить
0

би-сайды ещё ничего, по сравнению с си-сайдами...

Ответить
7

Какой же все таки шедевр Celeste 🤗

Ответить
6

Плюсану статью.
Вот эти графики прыжков - я всегда чувствовал что Митбой тяжёлый. А теперь я понял, почему и как это достигалось.
Крутое исследование.

Ответить
–9

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

Ответить
3

видимо в том что она делает дэш не туда, куда я хочу виноваты мои кривые руки

Ответить
2

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

Ответить
2

Аналогично, что на стиках, что на крестовине (dualshock 4), у меня было столько смертей из-за неправильно распознанного дэша (и не только у меня, судя по поиску в интернетах).

Ответить
0

После этой игры я понял, что на Joy_Con'ах очень сильный люфт стиков. 30% смертей только из-за них.

Ответить
0

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

Ответить

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

5

самая обыкновенная пиксельная графика. никакой любви к ретро там нету, она же не выглядит как какая-нибудь castlevania. да и эффекты довольно приятные

Ответить
1

нет, не обыкновенная , она совсем уж минималистичная

Ответить
3

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

Ответить
1

Обыкновенная по нынешним халтурным временам, надо полагать.

Ответить
1

Интересная статья, спасибо!

Ответить
–1

"Разработчики не использовали физические системы, которые можно увидеть, например, в Unity или Game Maker, так как они хотели иметь полный контроль над тем, как игрок будет управлять персонажем."
Чаво, как это взаимосвязано?? Как будто кто-то заставляет в юнити физику использовать. Хочешь, пиши всё так же в одном классе и делай обработку коллизий, как душе угодно.

Ответить
1

ну так это они и сделали

Ответить
0

Ну такто визуальные эффекты в игре нифига не помогают, а наоборот - при рывке весь экран смазывается, а учитывая цветовую гамму и порой кашу на экране(я про Отель) то часто это вызывает дискомфорт

Ответить
0

Если бы я расставлял платформеры, в которые играл, вдоль линии от самого неудобного к самому удобному управлению, то на одном краю был бы Donkey Kong, а на другом - Celeste.

Ответить
0

Довольно интересная тема. На самом деле сделать управление персонажем хорошим действительно очень сложно.

Ответить
0

Да идите-ка вы НАХЕР! Того урода, который изобрёл облака, которые работают как бонус в Кирби, того урода, который изобрёл перо, которое разворачивается через весь экран, и особенно того урода, который изобрёл "продвинутый" отскок от скалы после дэша на Б-сайде в 6ой главе, я бы лично поставил в угол и отходил ремнём по жёппе, приговаривая: "Будешь ещё так криво управление делать? Будешь заставлять людей с управлением бороться? На тебе! На тебе!".
Но в остальном - отлично всё и игра замечательная!

Ответить
0

Бесили некоторые моменты с миллиметражом и супертаймингами, а так очень круто! Ещё подбешивали незначительные замедления времени рядом с некоторыми врагами (хотя на поверку оказались значительными)

Ответить

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

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

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

Прямой эфир

[ { "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": 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" } } } ]