Поддержка джойстиков, уровень 1

Считаем, что игра — одиночный платформер, так что требуется поддерживать лишь геймпады от Xbox и Playstation (благо они стандартные и недорогие, китайские аналоги вообще дёшевы, как грязь). На пост меня натолкнула игра Potata: Chapter One, которую я честно купил, дабы поддержать прекрасную разработчицу. К чести «Потаты», нарушила она всего ничего из этих правил.

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

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

Dust: An Elysian Tail под джойстик, клавиатуру и мышь. Найдите два отличия.

EGP4kRK

FYtpUQi

9Rb769J

Разумеется, вы можете не поддерживать мышь от слова «совсем» — и это нормально. Если же она есть — два правила: 1) Продумайте, по какой логике скрывать курсор мыши; 2) Скрытый курсор не должен действовать — никак, даже подсвечивать пункт меню, над которым висит. Пример 1: экран свёрстан под джойстик, вы щёлкаете мышью — появляется курсор мыши, экран может переверстаться под клавиатуру. Пример 2: экран свёрстан под джойстик, вы нажимаете Enter — вы входите в выделенный пункт меню, экран перевёрстывается под клавиатуру.

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

(Я тут для испытания выдернул разъём безопасности — джойстик вообще перестал работать до перезагрузки Windows. Очевидно, глюк, потому что второй раз не повторилось — но, думаю, сбой в игре дешевле разбитого винчестера.)

Убедитесь, что изображения кнопок джойстика не похожи на другие элементы управления. И наоборот: элементы управления не похожи на кнопки джойстика. Например, в Type:Rider в углу экрана (кнопка закрытия) напоминает кнопку джойстика. А в «Потате» кнопка Xbox «Меню» — это иконка-гамбургер, приглашающая нажать чем-то — вот только нечем. Это уже смотрите по дизайну.

Низкоуровневую поддержку XInput и DirectInput сейчас пишут редко, ведь есть куча библиотек, объединяющих то и другое в единую абстракцию. Но если кто решит — в большинстве случаев хватает XInput. Доводы в пользу XInput — простота, достаточный (на 2020 год для платформеров) охват, поддержка нажатия обоих спусковых крючков сразу. Довод в пользу DirectInput один — 100% охват, важный, например, для симуляторов. Undertale поддерживает DirectInput, и этого достаточно — с тремя-то кнопками управления. А вот в Hyper Light Drifter есть и XInput, ведь наводка и стрельба — два крючка. Аналогично с гонками, где крючки — тормоз и газ (но гонки не платформеры и им 1-го уровня мало).

Скорее всего, в простеньком платформере вы не горите желанием писать настройку управления. Тогда установите ту раскладку кнопок, которая привычна для данного контроллера. На Xbox: A — прыжок, X — удар, B или RT — выстрел. Если прыжков нет, ставим на A и X самые важные вещи. Старайтесь не ставить на B, Y, Back, Start, LB и RB действия, требующие хорошей реакции (что интересно, в Logitech F310 наоборот: боковые кнопки LB/RB доступны лучше крючков LT/RT). В меню: A — действие/да, B — отказ/нет. Не забудьте, что игрок может нажимать A и X перекатом пальца.

(Мы тут портируем скучную деловую программу на Мак — приёмы, выработанные годами в Windows, вроде Ctrl+Ins/Shift+Ins вслепую, идут лесом. За Уралом леворульные машины сосуществуют с праворульными, и автоинструкторы говорят: дёрнулись без нужды дворники — афтар хочет повернуть. Слышал про «противоугонную систему»: у «ауди» поменяли местами педали — угонщики просто не могли уехать. Брюс Тоньяццини, автор интерфейса классического Мака и пилот-любитель, упоминает ситуацию: там, где на одном самолёте ручка газа, на другом катапультирование — переучивавшиеся в любой нехорошей ситуации катапультировались.)

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

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

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

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

Что находится за уровнем 1?

Вещь Жанры
Настройка управления Любые
Настройка мёртвых зон Любые, где маленькие движения джойстика важны; в первую очередь связанные с 3D-обзором (стрелялки, CRPG…) и симуляторы
Настройка линейности Симуляторы (и, возможно, другие, где джойстик — не только пульт)
Поддержка джойстиков иных конструкций, чем «6 осей, 10 кнопок, 1 крестовина» В первую очередь симуляторы — но, например, поддерживает Fez
Инверсия осей X/Y Связанные с 3D-обзором (стрелялки, CRPG…)
Хелпы (исправление ошибок игрока, недостатков контроллера) Чем-то напоминают ABS в современных авто, и чем сложнее управление, тем больше хелпов. Наиболее известные — оттолкнуться от воздуха, автонаводка.
Собственная неповторимая схема управления Игры с необычной или нестандартизованной механикой

Литература

  1. Zach Burke. The Five Golden Rules of Input. Русский реферат.
  2. Андрей Доценко. Designing Game Controls.
  3. Mozilla Developer Network. Desktop Gamepad Controls.
  4. Bruce Tognazzini. Anatomy of a Panic: A Case Study. Русский перевод.