Поддержка джойстиков, уровень 1
Считаем, что игра — одиночный платформер, так что требуется поддерживать лишь геймпады от Xbox и Playstation (благо они стандартные и недорогие, китайские аналоги вообще дёшевы, как грязь). На пост меня натолкнула игра Potata: Chapter One, которую я честно купил, дабы поддержать прекрасную разработчицу. К чести «Потаты», нарушила она всего ничего из этих правил.
Первое правило: все опознанные устройства работают постоянно. То есть: все клавиатуры, мыши и джойстики, которые игра опознала, всегда принимают управление. А может, джойстик — это необычное средство реабилитации, а играем с клавиатуры? Можно! Играть джойстиком, а ходить по меню мышью? А почему бы и нет!
Часто на клавиатуре и джойстике вёрстка экрана разная — хотя бы тем, что в подсказках будут то клавиши клавиатуры, то кнопки джойстика. Перевёрстывать надо в двух случаях: 1) Когда совершено значимое действие: нажатие кнопки или достаточный сдвиг мыши/микроджойстика. 2) Когда подключён-отключён джойстик.
Dust: An Elysian Tail под джойстик, клавиатуру и мышь. Найдите два отличия.
Разумеется, вы можете не поддерживать мышь от слова «совсем» — и это нормально. Если же она есть — два правила: 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 в современных авто, и чем сложнее управление, тем больше хелпов. Наиболее известные — оттолкнуться от воздуха, автонаводка. |
Собственная неповторимая схема управления | Игры с необычной или нестандартизованной механикой |
Литература
- Zach Burke. The Five Golden Rules of Input. Русский реферат.
- Андрей Доценко. Designing Game Controls.
- Mozilla Developer Network. Desktop Gamepad Controls.
- Bruce Tognazzini. Anatomy of a Panic: A Case Study. Русский перевод.
- 22 декабря 2019, 13:31
- 06
Следовало написать "Поддержка геймпадов для платформеров". Потому что не все игры - платформеры и некоторые ваши "правила" будут вредны для других игр.
И правильнее не джойстик, а геймпад. Это со времен 90-х уже разные вещи.
Мне непонятно что вы имеете ввиду. Поясните.
ЧЕГО?! Как связаны органы управления с версткой на экране? Нельзя ли попонятнее написать? И что такое "переверстка"?
Фигово. Это сделало бы управление с геймпада более удобным.
Если мой геймпад не поддерживается игрой или есть какие-то проблемы с управлением - ты скажешь "купи нормальный геймпад", а я скажу "пошел на*ер".
В идеале в играх должна быть возможность перенастроить все управление, включая геймпад.
Тут уже разрабу приходится идти на компромисс между желанием получить максимальный охват аудитории и собственной ленью. Грубо говоря - насколько автору "не насрать" на игрока. Вопрос в том - кто будет чесаться, разраб или игрок? Если игрок - он будет немного недоволен. Вы ведь не любите стоять в пробках или в очереди в поликлинику?
Вот пара примеров из моей практики:
* У меня уже у второй мыши ломается колесико (не работают WheelUp и WheelDown), хотя почти им не пользуюсь. В Splinter Cell: Chaos Theory оно используется для изменения скорости перемещения. Если бы не возможность переназначить эти действия на кнопки клавиатуры, пришлось бы покупать новую мышь или отложить игру до покупки мыши.
* На геймпаде туговато нажимается "вправо" на крестовине, иногда залипает. Если бы не возможность в Trine переключать перемещение с крестовины на левый стик, то читай предыдущий пункт.
Еще несколько возможных ситуаций:
1) У меня не QWERTY-клавитура, а игра ориентируется на 'key' нажатой клавишы (т. е. какая буква получается при вводе).
Кто должен чесаться? Я покупать "нормальную" клавиатуру и переставлять ее каждый раз чтобы поиграть в игру? Или разработчик должен сделать возможность переназначить клавиши?
2) У меня залипает пробел и плохо работает 'tab'. Купить новую клаву или переназначить управление?
2) У меня нет левой руки. В играх где нужно попеременно работать мышью и клавиатурой мне будет удобнее чтобы все действия были на NumPad'е. А если кнопки разбросаны по всей клавиатуре для двуруких, то скучковать их поближе. Купить левую руку или переназначить управление?
Я ответил, только не в ветку почему-то.
Это значит, что все клавиатуры, мыши и джойстики, которые игра опознала, работают постоянно и с них можно дать какую-то команду.
Я уже написал: хотя бы тем, что при игре с клавиатуры в подсказках будут клавиши клавиатуры, а при игре с джойстика — кнопки джойстика. Но Dust: An Elysian Tail ОЧЕНЬ сильно меняет ракладку экрана.
70% игр позволяют для клавиатуры и не позволяют для джойстика. Почему так, не знаю.
Напиши эти пояснения прямо в статье.
А есть какие-нибудь аппаратные советы, как починить у геймпада фантомные нажатия кнопок и ведение стика в сторону?
Это неправильная настройка управления.
И еще иногда в играх бывают ошибки в коде. Например, стик ты отпустил, а игра этого не заметила и продолжает движение персонажа в сторону.
Я говорю про аппаратный совет, так как это относится к нескольким играм и геймпадам, в том числе, к консольному дуалшоку 3, который проработал годами, прежде чем начать тупить.
А это конкретно двой дуалшок во всех играх тупит или все другие такие же геймпады?
Считаю что аппаратные проблемы, если они аппаратные - нужно лечить аппаратными методами. Программно можно только навешать костылей.
Это конкретно дуалшок, конкретно спидлинк хеох и конкретно логитех (этот я брал как-то напрокат).
Есть шанс, что можно как-то откалиброваться от проблем, но я несколько раз пробовал и не помогло.
Я про то и спрашиваю же, как лечить :D Открывал дуалшок, особо никакой пыли не нашёл даже. Но может, глюк какой с аккумулятором, т.к. это появилось после того, как он повалялся без дела и сильно разрядился.
Тут есть два варианта: блок питания и чипсет матплаты. Или USB-хаб, если через него подключаете джойстик.
Блок питания и чипсет в геймпаде? Звучит дорого :( Я как-то принёс, кстати, в ремонт спидлинк, а он заработал там на ура. Бывает, что иногда кратковременно возвращается в норму, а потом снова тупит.
Пока вижу одну из двух причин: или в пылу игры пошло неверное напряжение, или, опять-таки в пылу игры, перестали ходить пакеты. Плавали, знаем: прямо посреди игры самодельный руль отключился, а компьютерный болид — носом в стену. Правда, БП был перегружен настолько, что не позволял даже планочку памяти.
Можно попробовать прямо в корпусе джойстика поставить между красным и чёрным проводом ≈20 мкФ (минусом к чёрному, понимаете!) и параллельно ему 100 нФ. Именно так я, кстати, и решил проблему, пока не заменил компу все потроха.
Спасибо! А есть более казуальный вариант типа проверить где-то щупами напряжение, убедиться что проблема там, где и думали, заказать в Китае запчасть и открутить-закрутить, в таком ключе? :) Ну или какие-то статейки с форумами, где это можно почитать? А то какая-то мистика, боюсь покупать новые геймпады даже после таких многочисленных сбоев.
Вариант второй — стрельните у кого-то активный USB-хаб (с собственным питанием).
Интересная мысль! Ведь я ещё и переехал на другой адрес (где потом включил конкретно дуалшок), может, баг с электричеством в квартире? :/
Хотя, если по радио тоже косячит, то не катит, получается...
А дуалшок в каком режиме работает? Проводном или радио-?
Радио, но и провод тоже.
Радио — вот это интереснее. Поведение дуалшока отличается от XEOX?
Дуалшок я использовал только с PS3, а хеох - только с ПК. Дуалшок по-страшному глючит, то кнопки сами нажимаются, то наоборот, не срабатывают. А хеох и логитех - там только стик косил.
Я надеялся, что какая-то проблема контактов, но ваш изложенный опыт показывает, что может быть намного хуже :'(
Что с дуалшоком, вообще сказать не могу. Получается, что-то с USB-пакетами?
Но почему USB, если по радио такая же фигня? Я понимаю, что свисток вставляется в USB, но в PS3 нет свистка, там либо USB, либо радио, встроенное внутрь консоли.
У джойстиков такого класса используется потенциометр (делитель напряжения) и простейший вольтметр. Если напряжение питания колбасит, в первую очередь начинает глючить этот самый вольтметр, и потому сработало такое решение.
По косвенным признакам есть ничем не обоснованное подозрение, что у Logitech и у XEOX одни и те же мозги.
Это может быть дрифт, чаще всего решается прочисткой и промыванием основания стика каким-то WD-40. Фантомное нажание зависит от того какой конструкции кнопки. Если стандартные мембранки, то может просто резинка уже поехала.
Геймпадов. А вообще - очень грамотная статья.
Чтоб далеко не ходить, интерфейс под мышь также работает как интерфейс под тач-пад (Android, iOS и подобные). Во всяком случае, в Гейм Мейкере так, причём жесты прописанные для тач-пада работают и для мыши.
Мне непонятно - почему нельзя для джойстика оставить вариант на 3-ей картинке? Он что, перестанет работать?
Не перестанет, разумеется. Просто игра Xbox’ового происхождения — мышь к ней прикрутили позже.