Привет, Хабр! Меня зовут Сергей Милосердов, я системный аналитик в Nau Engine и большой фанат геймификации во всём. Солидный бэкграунд в этой сфере подтолкнул меня к написанию серии статей об игровых контроллерах и особенностях их использования. 

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

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

Органы и сенсоры

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

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

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

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

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

Кнопка — основа всего. Самый простой и точный способ управления. Имеет два состояния: либо нажата, либо нет. Казалось бы, немного, однако этого уже достаточно для интерпретации событий («нажатие», «отпускание», «удержание»), которые можно разнообразить путём учёта времени («многократное нажатие», «время удержания»). При необходимости кнопки можно объединять в группы для дополнительной интерпретации сочетаний. Примером тут может послужить крестовина геймпада.

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

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

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

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

Контроллеры Pong предлагали лишь один элемент управления — поворотную ручку
Контроллеры Pong предлагали лишь один элемент управления — поворотную ручку

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

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

Современную компьютерную мышь всё сложнее ассоциировать с грызуном, давшим ей название
Современную компьютерную мышь всё сложнее ассоциировать с грызуном, давшим ей название

Указывающее устройство (pointing device) с относительным смещением — общее название большой группы устройств, сильно отличающихся внешним видом и характером взаимодействия. Общее у них одно — отправка сигнала о смещении в текущей итерации цикла. То есть данные плотно завязаны на времени и стартовых значениях того, к чему будут применяться. Чаще всего имеется в виду курсор, но в реальности вектор смещения универсален. Его используют в самых разных устройствах.  

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

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

Трекбол Logitech MX Ergo
Трекбол Logitech MX Ergo

Стики ассоциируются в первую очередь именно с играми, хотя используются не только в них. Это закономерное развитие джойстика, который в своём изначальном виде возвращал конкретное направление (сейчас для этого используют крестовину геймпада, кнопки WASD или стрелки). Сегодня под стиком понимают именно аналоговый двухосевой орган управления. Он возвращает смещение по осям X и Y с учётом степени отклонения от центра. То есть может аналогично мыши управлять относительным положением курсора на экране или направлением движения в двух осях.

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

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

Тачпад — не самая удобная, но необходимая замена мыши
Тачпад — не самая удобная, но необходимая замена мыши

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

Без акселерометров VR-контроллеры теряют смысл жизни
Без акселерометров VR-контроллеры теряют смысл жизни

Указывающее устройство (pointing device) с абсолютными координатами. Никакой ошибки, предыдущий раздел действительно назывался очень похоже, поэтому проясню ситуацию, чтобы не было путаницы. Главное отличие между устройствами с абсолютными и относительными координатами в том, что первые имеют собственную точку отсчёта, а это в целом даёт больше свободы в интерпретации их данных.

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

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

С тачскринами мы, пожалуй, взаимодействуем чаще, чем с любыми другими устройствами ввода
С тачскринами мы, пожалуй, взаимодействуем чаще, чем с любыми другими устройствами ввода

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

Всю центральную часть DualShock 4 занимает сенсорная поверхность
Всю центральную часть DualShock 4 занимает сенсорная поверхность

Оптические указатели тоже условно можно поместить в эту группу. Принцип их работы радикально отличается от собратьев, но в конечном итоге мы получаем абсолютные координаты устройства на экране. Главным и практически единственным таким устройством в игровой индустрии будет Wii Remote с технологией PixArt. Однако в нём для указания используется не только сам оптический сенсор, но и показания гироскопа.

Оптический датчик PixArt определяет, куда направлен Wii Remote
Оптический датчик PixArt определяет, куда направлен Wii Remote

Стилус стоит в этом же ряду. В Nintendo 3DS стилус был одним из стандартных органов управления, но в других сценариях этот способ ввода почти не используется. При этом на ПК графический планшет как устройство для рисования имеет дополнительные данные, которых в похожих устройствах практически нет. Например, угол наклона и сила нажатия особенно важны для художников, так как  сильно влияют на процесс рисования. Стилусы для смартфонов и планшетов тоже вещь не редкая и могут использоваться для игр.

Fun fact: Стив Джобс ненавидел стилусы. Но Nintendo это никогда не волновало, у них свой путь
Fun fact: Стив Джобс ненавидел стилусы. Но Nintendo это никогда не волновало, у них свой путь

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

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

Leapmotion в виде отладочного изображения кистей
Leapmotion в виде отладочного изображения кистей

Вращение. Набор сенсоров, данные которых определяют ориентацию в пространстве. Чаще всего эти данные приходят от пары «акселерометр и гироскоп». В итоговом виде мы имеем три числа, описывающих вращение. А данные об угловой скорости устройства можно получать непосредственно с гироскопа.

Волчок в каком-то смысле тоже гироскоп
Волчок в каком-то смысле тоже гироскоп

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

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

Родители: "Вылези из телефона и иди гулять!" Pokemon Go: "Есть идея получше"
Родители: "Вылези из телефона и иди гулять!" Pokemon Go: "Есть идея получше"

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

Коротко о стандартах

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

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

На ПК, как водится, всё ещё сложнее. Существует ряд универсальных стандартов, позволяющих навести хоть какой-то порядок в зоопарке разнообразных устройств ввода. 

HID (Human Interface Device) существует как часть спецификаций USB для различных устройств ввода и индикации, но также полностью совместим с Bluetooth. Хоть стандарт позволяет разработчикам устройств использовать его не только для устройств ввода, для нас важна именно эта его роль. Мыши, клавиатуры и прочие игровые устройства для ПК (не важно, беспроводные или нет) чаще всего относятся к HID-совместимым, позволяя избавиться от необходимости установки специализированных драйверов.

HID-девайсы в диспетчере устройств Windows
HID-девайсы в диспетчере устройств Windows

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

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

Хорошо решает эту проблему новая версия  Unity Input System, которая существенно расширяет поддержку устройств и сенсоров, позволяя самостоятельно организовать работу с большим количеством устройств, минуя HID. При этом, если устройство ввода поддерживает HID, но не поддерживается в Input System, его всё ещё можно использовать. 

Steam Input. Следующий этап работы по классификации игровых устройств провела Valve. К ПК можно подключить множество приспособлений, в том числе и геймпадов от консолей. При этом пользователь будет ожидать от них привычного для себя поведения, идентичного консольному. И тут могут возникнуть сложности. HID сам по себе не отрабатывает такие сценарии.

Раньше решение вопроса стандартизации поведения ложилось на разработчика, но на помощь пришла Valve. Программная прослойка Steam Input позволяет идентифицировать подключенное устройство и настроить особенности ввода для игр в библиотеке. В первую очередь система ввода Steam необходима для улучшения пользовательского опыта в различных сценария игры, отличных от привычной для ПК работы с клавиатурой и мышью. 

Steam Input позволяет детально настроить функции геймпада в любой игре
Steam Input позволяет детально настроить функции геймпада в любой игре

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

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

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

Данные и где они обитают

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

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

Нажать нужную кнопку — безошибочный способ сказать программе, что мы хотим (при условии, что не промахнулись). «Да/нет» или «true/false» — основа для логической переменной boolean.

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

Смещение по оси Х по-разному выглядит на разных контроллерах
Смещение по оси Х по-разному выглядит на разных контроллерах

А какую информацию в систему отправляет мышь или трекбол? Ответ: вектор смещения в двух осях. А уже относительно него вычисляется и положение курсора, и вращение камер или объекта. Для плоскости подходит хорошо, но с пространством уже необходимо работать дополнительно.

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

Данные о смещении легко интерпретируются в конкретное положение, если со стороны ПО установлена условная начальная точка отсчета.

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

Смещение по двум осям на указывающих устройствах с абсолютными координатами
Смещение по двум осям на указывающих устройствах с абсолютными координатами

1D. Триггер или сенсорная полоса вернёт одно действительное число. Хотя в некоторых случаях за значение может отвечать пара триггеров: один — за смещение в плюс, а другой — за смещение в минус. 

2D. Положение на экране или сенсорной поверхности — это два числа, указывающее на точку в заданном пространстве. Чаще всего она находится в левом верхнем углу, что может немного смутить, если вы привыкли к росту значений по оси Y снизу вверх. Самый понятный и привычный вариант устройства, оперирующего такими данными, — сенсорный экран. Но и сложные интерфейсы управления взглядом (например, устройства Tobii), на выходе предоставляют достаточно простые данные: координаты точки на экране, на которую смотрит пользователь.

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

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

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

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

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

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

Вопрос времени

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

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

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

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

Как выглядит звук скрипки
Как выглядит звук скрипки

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

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

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

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

Интерпретируй это

Комплексные данные часто легко представить как более простые. Например, большой угол смещения стика (сила нажатия триггера или скорость движения мыши) по одной оси может интерпретироваться как состояние А, а отсутствие смещения — как состояние Б.

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

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

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

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

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

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

OpenPose стала очень полезным инструментом для контроля результатов генерации в Stable Diffusion
OpenPose стала очень полезным инструментом для контроля результатов генерации в Stable Diffusion

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

Магия разработки

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

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

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

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

У сенсорных устройств с этим проблем не возникает. Их экран и есть то самое виртуальное пространство. В VR существует похожая история, правда в этом случае конкретная точка выбирается не на плоской поверхности, а внутри объёма. Наиболее ярким примером тут послужит технология Lighthouse.

В итоге мы имеем событие, положение и направление. Сенсор собирает «сырые данные» (к которым мы для упрощения отнесём ещё и сигналы с микрофона, и изображение с камеры). Их вполне достаточно для взаимодействия с бесчисленным числом механик и конфигураций интерфейса. За пределы этого набора выходит небольшой процент игр, которые можно назвать экспериментальными. Чем же они пользуются?

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

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

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

Благодаря ИИ, Vaudeville уже позволяет общаться с NPC как с живыми людьми
Благодаря ИИ, Vaudeville уже позволяет общаться с NPC как с живыми людьми

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

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

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

«Электронный нос» пока что далёк от состояния серийного игрового устройства
«Электронный нос» пока что далёк от состояния серийного игрового устройства

А что насчёт рисования? Сенсорный экран технически позволяет считывать формы и символы с поверхности, да и игры наподобие Crayon Physics Deluxe уже экспериментировали с интеграцией форм в механику. То, как именно мы пишем или как касаемся сенсорной поверхности (скорость, паузы, завитки), тоже может стать интересным источником данных для игрового процесса. Особенно в сочетании с развивающимися нейросетями, способными распознавать в нарисованном не только  образы, но и дополнительные оттенки настроения или характера.

Оригинальная головоломка Crayon Physics Deluxe предлагает решать загадки, дорисовывая недостающие элементы картинки
Оригинальная головоломка Crayon Physics Deluxe предлагает решать загадки, дорисовывая недостающие элементы картинки

Ну а контроль при помощи мысли? Как же заманчиво не возиться с кнопками, а просто подумать нужную команду! Однако долгие попытки анализа данных, снимаемых электродами с кожи головы, показали, что эта информация пока что не поддается точной интерпретации. Тем более, что придется не только учитывать индивидуальные особенности каждого человека, но и учить всех пользователей правильно «сигнализировать» мозгом как контроллером.

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

Вот любопытное видео о том, как первый пользователь Neuralink играет в Mario Kart при помощи вживлённого в мозг чипа:

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

Заключение

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

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

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

Интересные материалы по теме:

  1. Спецификации HID

  2. Метода аутентификации на основе анализа сенсорного ввода

  3. Заметка о Lighthouse

  4. Стартовая точка погружения в компьютерное зрение

  5. Заметка о детекторе YOLO-World 

  6. Инструмент с открытым кодом OpenPose

  7. Статья о камерах глубины

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


  1. gamedevcat
    29.03.2024 12:54
    +1

    Спасибо за статью!


  1. MulturokiPointJsEngine
    29.03.2024 12:54

    Вот мы и узнали в 21 веке что такое мышка и кнопка клавиатуры...