От переводчика. Статью написал Итай Керен, основатель инди-студии Untame, автор игры Mushroom 11. Получился настоящий учебник по управлению камерой в играх с боковой прокруткой. Хоть там нет ни строчки кода ни на каком языке (вру, одна есть), думаю, несложно будет перевести всё это в инструкции для компьютера. Обязательно к прочтению всем программистам и дизайнерам, которые занимаются динамичными 2D-играми. Терминологию я переводил больше по смыслу: например, position-locking — «привязанная камера». Да, и для многих игр до 1983 года показана версия для Dendy — немного неисторично, но простим.

Введение




Работая над игрой Mushroom 11, я натолкнулся на множество дизайнерских и технических вопросов. Я не рассчитывал, что кто-то напишет о вершинной анимации или плавном изменении формы, но я удивился, что по работе с камерой, задаче с 30-летней историей, тоже практически не пишут.

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

Прокрутка


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

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

Кое-что из неврологии



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

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

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


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

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

Так что противоречивые сигналы с органов чувств (зрения и вестибулярного аппарата) могут привести к дискомфорту и укачиванию. Хотя в 3D (особенно в виртуальной реальности) эти эффекты ярче, это заметно и в двухмерных играх.

Внимание, взаимодействие и комфорт



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

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

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

Комфорт: облегчить и объяснить изменения в фоне (как сделать, чтобы эти задачи элегантно сочетались, не создавая игроку неудобств).

Скролл-ностальгия


image

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

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

Вслед за действом


Всё внимание — управляемому герою

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

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

И поразительно, что аж в 1980 году игра Rally-X преодолела эти ограничения и представила настоящую двухосную камеру. Там был простейший механизм «привязанная камера»: машина всегда в центре, а движение камеры полностью предсказуемое.

Rally-X (Namco, 1980)
Привязанная камера — камера всегда смотрит на героя.

Примечание. Все эти термины я придумал сам, для своей работы и чтобы как-то назвать эти явления. Я буду польщён, если ими воспользуется кто-то ещё, улучшит и напишет мне отзыв.

Ещё один хороший пример привязанной камеры — Kung-Fu Master, разработанный Такаси Нисиямой, дизайнером, который также сделал Moon Patrol, а впоследствии — и Street Fighter.

Одновременно виден ещё один несложный механизм, который я называю «упор в край» — когда камера упирается в край экрана, персонаж может уйти от точки привязки.

Kung-Fu Master (Irem, 1984)
Привязанная камера
Упор в край — устанавливается жёсткий край, за который камера выйти не может.
(Камера упирается в край почти во всех играх, так что больше этот приём упоминать не будем.)

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

Terraria (Re-Logic, 2011)
Привязанная камера

Ограничить движение камеры


Поменьше ненужных или непредсказуемых прокруток

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

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

Jump Bug (Alpha Denshi / Hoei > Coreland, 1981)
Окно свободного хода — сдвигать камеру, как только игрок упрётся в край окна

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

В одной из моих любимых, Rastan Saga, можно двигаться по двум осям и ходить разными путями. И она — одна из первых, которая выработала взаимосвязь между камерой и механикой. Свободный ход такой же высоты, как стандартный прыжок, и прыжки не вызывают движение камеры вверх — если, конечно, Растан до этого не сдвинулся вверх. Это исключает потребность в рывках камеры.

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

Rastan Saga (Taito, 1987)
Окно свободного хода

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

Fez (Polytron, 2012)
Окно свободного хода (по горизонтали, сохраняется при развороте измерений)
Привязанная камера (по вертикали)
Линейное сглаживание (курсивом выделены термины, определение которым дадим ниже)
Географический ракурс
Ручное управление (правым рычажком)


Возврат


Вернём беглую камеру на место!

Мы уже показали, как окно свободного хода уменьшает движение камеры. Но, как мы видим в Jump Bug и Rastan, это имеет и недостатки, когда игрок у края окна. Вот один из способов исправить это.

Shinobi, наверно, моя любимая классическая игра, и в ней очень высокие прыжки по платформам. Дизайнеры устроили уникальное управление камерой: по вертикали, поскольку платформ много, есть очень широкое окно свободного хода. И, как обычно, Ниндзя упёрся в край окна — сразу тянем камеру. У высокого (или широкого) окна есть и недостаток: после небольшого прыжка игрок может застрять наверху окна, и сверху видно очень мало, как в Rastan Saga. А Shinobi медленно тянет камеру к игроку, удерживая всю гущу событий в кадре и сводя резкие движения камеры к минимуму.

Shinobi (Sega, 1987)
Возврат камеры (по вертикали): постоянно снижать «увод» камеры, подтягивая её к игроку.
Окно свободного хода (по вертикали)
Привязанная камера (по горизонтали)
Статическое упреждение

Одна из новых функций, придуманных в Super Mario World — платформенный возврат. Как и с любым окном свободного хода, камера стоит на месте, пока герой не упрётся в край. Но как бы Марио ни прыгал, он в конце концов приземлится на платформе, и когда это случится, подтянем камеру к нему.

Super Mario World (Nintendo, 1990)
Географический ракурс
Платформенный возврат: камера возвращается к игроку, как только он приземлится на платформу.
Окно свободного хода (по вертикали, срабатывает редко)
Двойное упреждение (включается по порогу)
Ручное управление (по горизонтали, дополнительными кнопками пульта)

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

Эту же идею видим в самом первом Rayman. Верх экрана служит верхом окна свободного хода. Заметьте, камера не двигается, когда Рейман прыгает — она аккуратно подъезжает, когда он приземляется. Вот умное решение, ведь окно свободного хода немногим больше, чем высота прыжка. И снова перед нами пример, как игровая камера становится неотъемлемой частью дизайна игры.

Rayman (Ubisoft, 1995)
Платформенный возврат
Окно свободного хода (по вертикали, срабатывает редко)
Географический ракурс
Двойное упреждение
Линейное сглаживание

Эта техника действует и сейчас, не давая камере сдвинуться во время прыжков и центрируя её, когда прыжок закончен — или когда вышли из зоны свободного хода. Естественно, платформенный возврат работает, когда персонаж может вставать на платформы. А если нет, как в реактивном ранце в Awesomenauts, работает только вертикальный свободный ход.

Awesomenauts (Ronimo Games, 2012)
Окно свободного хода (по вертикали)
Платформенный возврат
Привязанная камера (по горизонтали)


Сглаживание


Избегать резких изменений в скорости камеры и направлении движения

Мы уже говорили о роли периферийного зрения и как оно влияет на зрительный комфорт. Давным-давно, когда мы были маленькими, а пиксели — большими, даже простое движение камеры выглядело дёргано из-за больших пикселей.
image
Пиксель 80-х
Dendy: разрешение 256?240
image
Современный инди-пиксель
Содержит множество физических пикселей

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

Сглаживание (псевдо)физикой

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

Pac-Land — по утверждению некоторых, первый современный платформер. В нём много элементов, которые помогли определить жанр: прыгать по платформам, уворачиваться от врагов и подбирать бонусы. Насчёт сглаживания — скорость там от 0 пикселей/кадр поднимается до 1, 2, 3, и так до максимума, а затем так же плавно падает до нуля. Хотя камера привязана к Пакману, результат чёткий и плавный. Но Pac-Land не надо прокручивать по вертикали, а именно там основные сложности — в быстром ускорении и замедлении, когда прыгаешь и падаешь.

Pac-Land (Namco, 1984)
Привязанная камера
Статическое упреждение


Сигэру Миямото

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

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

Excitebike (Nintendo, 1984)

Devil World (Nintendo, 1984)
В Северной Америке отказано в выпуске

В Excitebike была современного вида прокрутка, зависящая от скорости мотоцикла. Достаточно плавная, но особенно на игру не влияла.

А в Devil World всё было построено на прокрутке. В этом клоне Pac-Man вы играете христианским драконом, который борется с дьяволом, а тот постоянно меняет направление прокрутки, отталкивая вас ближе к краю. Это единственная игра, которую так и не выпустили в США из-за религиозных образов, но, по сравнению с качеством других его работ, это небольшая потеря. Хотя познавательно — и зачастую вдохновляюще — увидеть первые, менее удачные работы мэтра. Даже лучшие художники экспериментируют, и не все эксперименты удаются.

А теперь перескочим на год вперёд. Трудно преувеличить блеск Super Mario Bros. Сама игра — простенькое движение слева направо по горизонтали. Да ещё она и не даёт ходить назад за край экрана, что нередко в платформерах (технически это можно определить как одностороннее окно свободного хода).

Super Mario Bros. (Nintendo, 1985)
Толкающая зона разгона: когда персонаж в зоне, постепенно ускоряем камеру, пока не сравняется со скоростью персонажа.
Окно свободного хода (одностороннее)
Статическое упреждение

Если бы Марио отошёл назад для разгона, а затем со всей скорости вышел бы из окна свободного хода, за один кадр камера разогналась бы от 0 до максимума, с большой сменой в скорости прокрутки и неминуемым дискомфортом. Дизайнеры решили это, добавив ещё одну точку, в 25% от центра, где камера начинает разгоняться, чтобы сравняться скоростью с Марио. Так что, когда Марио должен упереться в край, камера уже гонится за ним на полной скорости.

Metroid был новаторской игрой, создавшей новый жанр, сочетающий прыжки с исследованием (в брате по жанру Castlevania, кстати, была простейшая привязанная камера).

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


Metroid (Nintendo, 1986)
Окно свободного хода (горизонтальное/вертикальное)
Тянущая зона разгона: как только игрок пересечёт границу окна, разгоняем камеру, пока она не сравняется по скорости с персонажем.

Развитие техники дало больше пикселей и быстрые процессоры, это повлияло и на игровую камеру. Теперь камера могла ездить свободно, без дрожания, присущего низким разрешениям — особенно на низких скоростях, когда за несколько кадров сдвигается всего на 1.

Donkey Kong Country придумал много новаторских решений с камерой. Он был один из первых, кто сделал меняющееся упреждение (об этом позже), а также линейное сглаживание, которое сделало прыжки очень плавными.

Donkey Kong Country (Rare / Nintendo, 1994)
Линейное сглаживание: постоянно снижать расстояние между камерой и игроком по формуле линейной интерполяции.
Привязанная камера (по вертикали)
Географический ракурс
Двойное упреждение

Линейная интерполяция — не такое-то и большое достижение. Но именно эта формула стала стандартным инструментом, снижающим рывки камеры на скорости, особенно при прыжках.

float lerp (float a, float b, float t) { return a + t * (b - a); }

Это, пожалуй, самая эффективная и вездесущая методика сглаживания. Она работает и для медленных персонажей, и для таких быстрых, как Super Meat Boy. Только если персонаж большой и движется очень быстро, камера может и не нагнать его, и враги будут скрыты за кадром до последней секунды.
От переводчика…
В этой несложной формуле глубокий смысл. Это решение дифференциального уравнения

y'(t) = ?k·y(t)

при k > 0 в моменты времени t = 0, 1, 2, 3… Грубо говоря, скорость полёта пропорциональна расстоянию. Хочется сказать «камера висит на пружине», но задача с пружиной подразумевает ускорение (вторую производную).

Super Meat Boy (Team Meat, 2010)
Линейное сглаживание
Привязанная камера

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

Never Alone (Upper One Games, 2014)
Физическое сглаживание: камера — физическое тело, постоянно летящее к целевой точке.
Усреднение позиции
Кинематографические рельсы
Географический ракурс
Ракурс на объект

В терминах программирования линейное сглаживание — это EaseOut, а физическое — EaseInOut. Если можно, воспользуйтесь методом SmoothDamp [функция движка Unity — Переводчик], или напишите свой вариант, который будет учитывать и расстояние до цели, и скорость.

Если вы пользуетесь шейдерами «пиксель в пиксель», то иногда замечаете, что ваши спрайты сдвигаются на пиксель по сравнению с другими спрайтами или фоном — из-за ошибок машинного деления. Игра Hyper Light Drifter, исполненная в пиксельной графике низкого разрешения, умно решила эту задачу. Она проводит рендеринг в промежуточный «холст» в игровых пикселях, а затем выводит его на экран в нужном масштабе, сдвигая в зависимости от дробной части. Есть там и другие интересные решения, о них мы поговорим позже.

Hyper Light Drifter (Heart Machine, ещё не вышла)
Физическое сглаживание (разрешение игрового холста 720?480, но прокрутка идёт в физическом разрешении монитора).
Географический ракурс
Упреждение по управлению
Ракурс на объект
Жесты камерой


Кадрирование


Держим самое важное в кадре

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

Scramble (Konami, 1981)
Автопрокрутка: игрок никак не управляет прокруткой, но имеет полное право определять, где в кадре ему быть.

Как мы видели в Pac-Land, если камера привязана к игроку и движется туда-сюда вместе с ним, можно сместить камеру слегка вперёд. Это оставит немало места, чтобы смотреть вперёд, но и о пространстве сзади не забудет. А заодно укажет, куда идти, ведь мы стремимся к центру.

Pac-Land (Namco, 1984)
Привязанная камера
Статическое упреждение: больше места для обзора в главном направлении

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

Defenter (Williams Electronics, 1981)
Двойное упреждение: когда игрок меняет направление движения, камера меняет ракурс и смотрит вперёд.

Bonanza Bros. — восхитительная игра в ограбление, выпущенная Sega для автоматов в 1990 году. В ней есть уникальный режим на двоих (кооперативный, с разделённым экраном), где два брата сотрудничают, чтобы исполнить ограбление.

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

Bonanza Bros. (Sega, 1990)
Двойное упреждение (скорость камеры зависит от скорости движения)

А вот так камера работает в Super Mario World, моей любимице по части работы с 2D-камерой. Посмотрите, с каким вниманием камеру подогнали к геймплею.

Super Mario World (Nintendo, 1990)
Географический ракурс
Платформенный возврат
Окно свободного хода (по вертикали, срабатывает редко)
Двойное упреждение (включается по порогу)
Ручное управление (по горизонтали, дополнительными кнопками пульта)

Опять-таки, есть два ракурса камеры, в зависимости от того, в какую сторону игрок решит пойти. Но если вдруг нужно назад (обычное дело в Super Mario World), камера никуда не поедет, пока Марио не пройдёт определённый порог. И только после этого камера наведётся на новую точку. Это очень помогает, ведь повернуться влево в SMW не означает пойти назад.

А совсем недавно Cave Story воспользовался двойным упреждением, чтобы двигать камеру влево-вправо в зависимости от скорости хода. Почти то же самое, что мы видели в Bonanza Bros. Только камера идёт в нужное место медленно, если игрок стоит, и быстро — если движется.

Cave Story (Studio Pixel, 2004)
Привязанная камера (по вертикали)
Двойное упреждение
Физическое сглаживание
Ручное управление (по вертикали)

Jazz Jackrabbit 2, красивый платформер первых дней Epic Games, имел один необычный элемент камеры: он сдвигал камеру дальше от игрока, и по горизонтали, и по вертикали, в зависимости от нажатых кнопок.

Это отличный пример того, что я называю «упреждение по управлению»: сам игрок указывает камере, куда сдвинуться, в зависимости от того, куда он хочет попасть. Идёт влево — значит, нужно видеть больше слева. Отпускает кнопку — камера возвращается в центр.

Jazz Jackrabbit 2 (Epic Games, 1998)
Линейное сглаживание (по вертикали)
Упреждение по управлению: камера подбирает упреждение в зависимости от состояния управления (в данном случае — клавиш-стрелок)
[ручное управление] (как частный случай упреждения по управлению)

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

Snapshot (Retro Affect, 2012)
Упреждение по управлению (на середину между игроком и указателем)
Линейное сглаживание

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

Swapper (Facepalm Games, 2013)
Упреждение по управлению
Физическое сглаживание
Географический ракурс
Ракурс на объект
Кинематографические рельсы

В Secrets of R?tikon есть несколько интересных моментов с камерой. Насчёт компоновки кадра — там упреждение по движению, с простой экстраполяцией положения персонажа на основе текущей скорости.

В платформерах такая техника может и не сработать, особенно по вертикали: прыжки и приземления нельзя надёжно экстраполировать.

Secrets of R?tikon (Broken Rules, 2014)
Упреждение по движению: камера гонится за будущим (экстраполированным) положением игрока
Физическое сглаживание
Ракурс на объект (положение и масштаб зависит от аттракторов)
Жесты камерой (определённые действия вызывают отклик со стороны камеры, например, в полёте масштаб уменьшается)
Кинематографические рельсы

В Luftrausers тоже камера интересная: чтобы определить, куда смотреть, учитывается, куда самолёт смотрит (по управлению), куда летит (по движению) и другие подсказки наподобие воды, кораблей и снарядов, которые тоже притягивают камеру (см. в следующей части «ракурс на объект»).

Luftrausers (Vlambeer, 2014)
Упреждение по управлению и движению
Физическое сглаживание
Ракурс на объект
Переводить вторую часть?

Проголосовало 400 человек. Воздержалось 24 человека.

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

Комментарии (18)


  1. demoded
    16.12.2015 02:40
    +7

    Отличный материал! Никогда не думал, что внутри оно все так сложно :)


    1. Mercury13
      16.12.2015 02:52
      +1

      Часть первая из двух. Во второй части…
      Рельсы.
      Жесты камерой.
      Кинематографические рельсы.
      Географический ракурс.
      Ракурс на объект.
      Ракурс на область.
      Как показать двоих в одном экране.
      Тряска камеры.
      Несколько разборов.

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


    1. anyxem
      16.12.2015 03:34
      +1

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


      1. IgnisNoir
        16.12.2015 09:12

        Скорее геймдизайнеры. Программисты просто реализуют это =)


        1. dendron
          16.12.2015 11:43
          +1

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


  1. Newbilius
    16.12.2015 09:00
    +2

    Как круто. На первый взгляд кажется, что «камера в платформере — это просто». Ан нет, вон сколько тонкостей закопано…


  1. OlegKozlov
    16.12.2015 09:14
    +2

    Прекрасная статья! Ещё! Ещё!


    1. Mercury13
      16.12.2015 12:47
      +1

      Это часть первая из двух. Так что будет ещё 2/2.


    1. Mercury13
      17.12.2015 00:40

      Интересно, а какие-то приёмы работы с камерой в «червеце» есть? Интересно было бы знать.


      1. OlegKozlov
        17.12.2015 07:57
        +1

        Есть. :) По терминам этой статьи:

        1. Упреждение по движению: точка привязки камеры вынесена вперёд от центра червя, причём чем быстрее он ползёт, там дальше она выносится.
        2. Упреждение по управлению: когда игрок начинает сжимать червя для прыжка, то вынос точки привязки камеры ещё усиливается заранее передвигая камеру в ту область, куда червь сейчас прыгнет.
        3. Линейное сглаживание — камера плавно стремится к точке своей привязки, тем быстрее, чем больше разница между фактическим положением камеры (центра экрана) и точкой её привязки.



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


        1. OlegKozlov
          17.12.2015 08:04
          +1

          4. Упор в край. Камера «упирается» в края уровня, становясь более статичной и позволяя голове червя сильно смешаться от центра экрана, буквально упираться головой в его край.


  1. DrLivesey
    16.12.2015 11:16
    +2

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


  1. inborn_killer
    16.12.2015 19:33

    Gamasutra — неиссякаемый кладезь статей для переводов ) Отличный перевод, а статья, по-моему, обязательна к прочтению всем небезразличным к геймдеву )


  1. MichaelBorisov
    16.12.2015 22:04
    +1

    В современных платформерах с управлением мышкой появляется еще возможность смещать камеру в направлении мышиного курсора. Мне очень нравится прокрутка в Raze 2. Похожим образом была реализована прокрутка на Амиге в Cannon Fodder.


    1. Mercury13
      16.12.2015 22:11

      Конечно, упомянуто и это.


    1. Mercury13
      18.12.2015 12:30

      А почему только на Амиге? На IBM тоже было.


      1. easy_john
        22.12.2015 14:26

        Потому, что оригинальная игра была написана именно на Амиге (так же как Worms, и многие другие известные игры 80-х и 90-ых), а уже позже портировалась на PC и некоторые другие платформы.


  1. SpiderMan
    18.12.2015 11:09
    +2

    Спасибо за перевод, обязательно переводи вторую часть, очень полезный материал