Это небольшой рассказ о том, как мы получили заветную плашечку Steam Deck Verified для нашей игры The Unexpected Quest. Причем, никто из нас даже в руках не держал этот ваш Steam Deck.
Первое, что хочу отметить - это все мои личные рассуждения основанные только на моем опыте. И вполне возможно, в вашем случае они могут не прокатить. Так что, эта статья только для общего понимания проблем, а не подробная инструкция к действию.
Valve добавила в свой список Steam Deck Compatibility только одну нашу игру. По-видимому, в него попадают игры, которые добились определенного "веса" в стиме. И скорее всего, это происходит в тот момент, когда вам разрешают сделать значок, карточки и другие продаваемые предметы. После этого, вам будет доступна страничка Steam Deck Compatibility Review, пропустить ее тяжело, так что найдете.
Следует сказать большое спасибо валвам за Proton, это избавляет от огромного количества телодвижений для адаптации игры под их платформу. Запускается практически все, особенно если оно использует стандартные движки, sdk и т.п. Нам пришлось вырезать только небольшой кусочек кода, заточенный под интеграцию обоев в винду. И то, на сколько я понял, он просто не выполнял свои функции, а не крашил игру или делал какие-то другие неприличные вещи.
Сейчас мы работаем над линукс версией игры (тестовая система - Manjaro). И есть надежда, что это позволит полностью избавиться от эмуляции на Steam Deck и перейти на нативную работу.
В самом начале мы получили плашку Playable. Спасибо стоит сказать Unreal Engine. Так как большую часть работы он сделал за нас, если не творишь дичь, то все будет работать. Но игру пришлось доработать.
Первое и самое важное - игра должна работать от геймпада. У нас в силу специфики жанра, это сделать очень сложно - point and click manager. Хорошо, что еще в начале разработки сделали виртуальный курсор и все управление можно пустить через него. Причем, UE позволяет сделать прослойку, эмулирующую мышь для остальной части игры. Один раз написал и забыл. Из "фичей" мы добавили только замедление курсора, при пролетании над активными объектами. Пробовали делать прилипание, но результат выходил не ахти, или руки кривые или одно из двух.
Вторая важная вещь - отсутствие клавиатуры. Если нужно вводить текст, то в Steamworks SDK (начиная с версии 1.52 искать ShowFloatingGamepadTextInput) есть возможность вызвать виртуальную клавиатуру. Как мы тестили это без устройства? Запускаем стим в режиме Big Picture, берем в руки геймпад и тестим. ? Если клавиатура появляется - все хорошо, она будет и на устройстве. В обычном режиме, игра не показывает виртуальную клавиатуру.
Да, и еще один прикол с контроллером. К Steam Deck можно подключить внешний геймпад. А Unreal Engine раздает управление с разных геймпадов разным игрокам. В общем, при подключенном внешнем контроллере, полностью отключалось управление от встроенного. Пришлось немного пошаманить, но об этом я написал в отдельной статье.
Разрешение экрана и частота кадров. Штука важная, но нам повезло. Игра всегда запускается в режиме Borderless Window в нативном разрешении. Сначала был включен VSync, потом перешли на лимит кадров. Вопросов по этому поводу у валва не возникло, немного погрозили и все.
Больше всего работы было со шрифтами и локализацией. Проблема шрифтов - они маленькие! И даже при скейле UI в полтора раза, они были маленькие! Увеличиваешь размер и начинает ехать верстка UI. Если изначально закладывать работу на маленьких экранах в требования к UI, то проблем было бы меньше. Но изначально, мы даже не предполагали, что будут существовать Switch и Steam Deck! А после того, как увеличишь шрифт, он становится БОЛЬШОЙ на десктопе. Грусть... По итогу, больше всего времени было потрачено именно на UI.
С локализацией все оказалось и немного сложнее и немного проще. Сложнее в бумажном плане: пришлось заново подключать локализаторов, заключать договора и т.п. Дело в том, что в текстах не должно быть упоминаний мышки, кликов, клавиатуры и т.п. И мы изначально старались избегать их в наших текстах, так русскую локализацию править почти не пришлось. Но вот добрые английские переводчики, заменили наши нейтральные "нажмите" на "click", а не на "press". Мы это не проверили, и "клики" разлетелись по другим локализациям.
Дополнительно в тексты были вставлены иконки кнопок и стиков от XBox Controller. Хорошо, что валв не требует наличия только иконок от геймпада, поэтому мы сделали универсальные тексты, в которых были и кнопки от клаво-мыши и от геймпада одновременно.
Кстати, поддержка у Valve очень отзывчивая. Т.е. ребятам не плевать на вашу игру. Мы попросили сопровождать ревью скриншотами кривых мест и подробным описанием того, как оно должно выглядеть и работать. Объяснили, что Steam Deck у нас нет и работаем в слепую. В итоге, нас завалили шотами, короткими видео и подробными комментами. Габену за такую организацию работы, отдельное спасибо!
Ну а если у вас есть Steam Deck, то пришлите его мне или можете попробовать нашу игрушку по этой ссылке: