Кажется, контроллеры сломают меня быстрее, чем я их

Кажется, контроллеры сломают меня быстрее, чем я их

Краткий пересказ всей статьи: «поначалу я не любил контроллеры, затем я полюбил контроллеры, но любовь не оказалась взаимной».

Осторожно! «Контроллер» - слово-паразит данной статьи.

Сперва….

…длительное время я сторонился использования контроллеров, предпочитая альтернативный вариант взаимодействия с игрой, даже если она настаивала на том, что играть с контроллером в неё удобнее. Даже Super MeatBoy я целиком прошёл на клавиатуре, со всеми тёмными мирами и варп-зонами, и, если верить надписям на стартовых экранах этой игры, МакМиллен не считает меня адекватным человеком. Усугубило ситуацию то, что лет 6 назад мне предложили взять в руки контроллер и поиграть в некоторую игру, название которой я не запомнил. Чёрно-белый адреналиновый платформер, который не оказался мне под силу. Вероятно, следовало пытаться в него играть с самого начала, а не посреди прогресса какого-то другого игрока, но выбора мне не дали.

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

Как часто вы пользуетесь контроллером в играх?
Чаще играю с помощью контроллера, если игра его поддерживает
50 / 50
Чаще играю с помощью других устройств.
Хочу приобрести.
Что такое контроллер?
На футболе вместо мяча.

Но однажды…

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

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

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

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

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

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

Разумеется…

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

1) Различные протоколы. Каждый канал может передавать значение только одного элемента контроллера, будь то кнопка, крестовина, триггер или ось стика. Проблема в том, что некоторые каналы передавали значения разных элементов, в зависимости от неизвестных условий. Отличия небольшие, но их наличие, в любом случае, плохой знак. Экспериментально выявилась зависимость от способа подключения (шнур – один протокол, блютуз - другой), а также от самого ПК. Обновление Windows актуальной версией решило эту проблему. (один из редких случаев, когда они в чём-то помогли)

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

3) Возможность подключения нескольких контроллеров. Это хорошая возможность для кооператива, которую движок позволяет реализовать. Но при подключении нового \ отключении старого устройства, список реорганизуется, а поскольку к различным контроллерам я обращаюсь по индексу, сходу трудно выявить, какой был добавлен, а какой пропал. Благо кооперативные игры я пока не делал. (хотя это было бы любопытно)

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

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

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

Недостаточно…

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

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

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

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

Это и случилось.

Внезапно…

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

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

Я вырезал возможность подключения контроллеров, чтобы она не вызывала у игроков проблемы и убрал со Steam-страницы значок «Контроллер (полностью)» до лучших времён.

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

С тех пор...

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

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

После я ушёл отдыхать.

А затем… я наконец-то купил его себе. Для личных и экспериментальных нужд. Мой собственный контроллер. Вновь Xbox.

Ну посмотрите на этого красавца!
Ну посмотрите на этого красавца!

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

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

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

Кажется, контроллеры сломают меня быстрее, чем я их

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

Приступая за разработку третьей игры, я уже понимал… что-то. Затем месяцы отняла сама разработка. Ближе к её концу на этапе внедрения контроллерного управления начал искать другие варианты устройств для тестов. Целью стали контроллеры для PS4, PS5 и Nintendo Switch. Первый был найден.

Контроллером какой фирмы вы пользуетесь? (консолеперепалки не разводить!)
Xbox
PS
Nintendo
Иная фирма (может даже напишу в комментариях, но это не точно)
Некоторая фирма, производящая клавиатуры и мыши

Как ни удивительно…

…именно PS-контроллер способен нокаутировать камеру. Не факт, что только он, но он в том числе.

Хорошо, когда баги возникают не где-то далеко при неизвестных условиях, а у тебя на столе – сразу лучше понимаешь причинно-следственные связи. Следовало озаботиться этим раньше, но теперь уже очевидно: каждый тип контроллера имеет свой протокол передачи данных. Каналы, по которым Xbox-контроллер передавал положение правого стика по осям X и Y, предназначены в PS4-контроллере для триггеров. Всё это вылилось в картину, где триггеры регулировали вращение камеры, и если их не трогать - камеру постоянно вертит.

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

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

Наглядная разница между триггерами Xbox и PS. Будет занятно, если окажется, что у разных экземпляров одного и того же типа контроллеров разные протоколы.

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

Пруф, что теперь всё хорошо.

Найти Dualsense и Switch Pro Controller не вышло. Купить их в ближайшее время нет адекватной возможности, потому пока что уповаю на то, что хотя бы протоколы Dualsense, такие же как и у Dualshock. Подружить джойконы от Nintendo Switch с движком не получилось. Так что пока довольствуюсь тем, чем могу.

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

А вы много разновидностей контроллеров знаете?
Только самые популярные
Только те, что озвучены в статье.
Явно больше, чем автор статьи.
Огромное количество, в том числе малоизвестные.
Я всё ещё не пойму, что такое контроллер?!

Решения…

…к которым я на данный момент пришёл, следующие.

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

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

Кажется, контроллеры сломают меня быстрее, чем я их

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

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

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

В любом случае есть плашка «Больше не показывать», чтобы перекладывать руку на мышь больше никогда в жизни не приходилось …хотя поговаривают, что для некоторых игроков это проблема, в виду наличия у них контроллерного управления и отсутствия мышного.

Как часто вы оказываетесь в ситуации, когда во время игры в ПК-игру у вас нет возможности совершать простые действия мышью (тачпадом)?
Никогда.
Незначительно редко.
Редко, но неприятно, когда игра требует пользоваться мышью.
Время от времени.
Часто.
Если игра поддерживает управление контроллером – необходимо, чтобы всё было управляемо контроллером, даже подобное подтверждение.
Когда открывается окно, должна ли изначально стоять галочка на параметре “Больше не показывать”?
Да.
Нет.
Мне всё равно.
Убрать параметр “Больше не показывать”. Нельзя давать игрокам такую власть.

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

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

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

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

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

Статья…

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

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

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

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

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

И теперь..

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

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

1414
10 комментариев

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

У меня другая ситуация: из-за разного лейаута кнопок на джойстиках - подсказки часто перестают работать нормально.

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

Когда открывается окно, должна ли изначально стоять галочка на параметре “Больше не показывать”?Скорее после этого стоит ввести QTE "показать окно такое-то?" Потому что иногда вообще невозможно найти закрытое окошко, как приветствие Липкого в Вангерах.

3
Ответить

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

2
Ответить

*поклон

2
Ответить

В первом опросе не хватает пункта вроде "Чаще играю с помощью контроллера, если жанр игры для этого подходит".

1
Ответить

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

1
Ответить

Мой первый и самый народный геймпад!

1
Ответить

Автор, как ты смеешь не суметь добавить поддержку joycon, самого удобного контроллера во вселенной. Без моушн управления, играть в игры совершенно невозможно. Жду продолжения статьи о том, как ты осваивал его добавление и адаптацию размахивания руками в игре про газовую камеру и кубголоволомку!

1
Ответить