Это небольшой рассказ о том, как мы получили заветную плашечку 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, берем в руки геймпад и тестим.
