Пару месяцев назад Steam выложил в Steamworks инструмент для разработчиков, позволяющий отправлять игры на сертификацию: Steam тестирует и проверяет игру, а затем решает, совместима ли она с Steam Deck. Так как я уже реализовал в своей игре поддержку геймпадов, то сразу приступил к делу. Мне понадобилось два месяца переписок со Steam, чтобы он наконец верифицировал полную совместимость игры со Steam Deck. Я не нашёл особо много информации об этом процессе, поэтому захотел поделиться своим опытом, чтобы другим разработчикам не приходилось совершать те же ошибки.
Примечание: у меня нет Deck и я ни разу им не пользовался. Разработка игры целиком зависела от помощи моего фаната и простоты разработки под сам Steam Deck.
Для начала приведу список требований Steam от игры:
Проверяющие не особо присматриваются к тому, хорошо ли работает игра и как она ощущается с контроллером. Если она функциональна и они могут легко понять, какая кнопка за что отвечает, они её одобрят. Они не проверяют все языки, поддерживаемые игрой, в основном только английский. Также они особо не следят за производительностью, как и за скоростью разряда аккумулятора. Зато их очень волнует, хорошо ли читаема игра на экране 1280x800, и действительно ли у игрока не возникает проблем при управлении с контроллера.
Тексты в игре должны быть достаточно большими — обычный английский алфавит в нижнем регистре обязан иметь высоту не менее 9 пикселей. Это серьёзная трудность для игр с большим количеством текста на PC или для игр со сложным интерфейсом. Я потратил несколько недель на проверку каждой текстовой метки в игре, пытаясь увеличить их, уместить в область UI с другими элементами. Это было мучительно. Так что если вы планируете поддержку Steam Deck (что, мне кажется, обязательно для каждой инди-игры, потому что, за исключением телефонов, не существует других портативных платформ, позволяющих запускать инди-игры), то вам следует разрабатывать игру, помня о минимальном размере в 9 пикселей. Можно просто сделать скриншот текста игры в движке/редакторе в масштабе 1:1, увеличить скриншот и посчитать количество пикселей по оси Y.
Игра должна определять устройство как Steam Deck и автоматически применять все необходимые параметры, такие как цветовая схема (контроллер XBOX) и разрешение (1280x800). В моём случае пришлось изменять масштаб некоторых окон UI, если игра запущена на Deck, потому что на PC они выглядели бы слишком крупными. Если у вашего игрового движка есть свежий Steam API, то для проверки того, запущена ли игра на Deck, достаточно одного вызова API. Но если его нет, то можно проверять имя устройства и тип операционной системы.
Ещё один аспект, вызывающий много проблем — это пользовательские поля ввода. В моей игре можно вводить имена при создании персонажей, а Steam требует, чтобы сразу после переключения фокуса на поле ввода текста (например, перемещением курсора на него и нажатием кнопки A) автоматически появлялась внутриигровая программная клавиатура для ввода. Но всё не так просто. Также нужно отслеживать событие отправки пользователем введённого текста, перехватывать текст, а затем помещать его в поле ввода, чтобы игрок знал, что его ввод зарегистрирован.
Наконец, Steam очень дотошен относительно глифов кнопок контроллера. Он не хочет, чтобы игрок запутался, так что нужно добавить в игру кучу глифов, чтобы показать игроку, какая кнопка что делает. **Также он не хочет видеть в игре жаргон управления клавиатурой/мышью, например, слово «щелчок» (click).**
Что касается процесса одобрения, то Steam очень терпелив. При каждой отправке запроса на тестирование проверка занимает какое-то время, но проверяющие многократно тестируют игру, пока она не будет одобрена (или пока вы не откажетесь от этой идеи). Один раунд тестирования обычно занимает у Steam семь рабочих дней. После каждого раунда проверяющие отправляют очень подробный и полезный отзыв о том, что нужно изменить. Могу сказать, что мне очень понравилась в этом поддержка Steam.
Отсутствие у вас Deck не вызовет особых проблем. Можно протестировать большинство функций игры, в том числе и ввод с программной клавиатуры, при помощи функции Big Picture в десктопном приложении Steam. Проверка на реальном Deck понадобилась мне лишь в двух случаях:
Чтобы проверить, распознаёт ли игра устройство правильно.
Проверка работы ввода на Deck.
Удачи!