Прошу советов и мнений на счет написания программы

Как-то я наткнулся на аналог Steam Deck от китайской компании Aya Neo и подумав, решил купить ее себе. Суть точно такая же — игровое устройство на x86, по умолчанию с виндой, только меньше, немного слабее, и экран получше.

Вот так выглядит белая версия, например.
Вот так выглядит белая версия, например.

Как можно увидеть на фото выше, с ней в придачу идет предустановленный "лаунчер" — программа, которая собирает по сусекам установленные игры и предоставляет настройки устройства — TDP, разрешение экрана, режимы подсветки и вентилятора и т.д.

Поскольку идти эта штука будет ко мне еще долго, а терпением я не наделен, я решил попробовать посмотреть, что там внутри этой софтины и поставить ее на домашний компьютер, который тоже на винде. Однако, нефритовый стержень сильно ударять по спина и программа отказалась запускаться.

"Мы пока не готовы поделиться со всем миром"
"Мы пока не готовы поделиться со всем миром"

Меня немного смутил этот английский, но интерес никуда не делся. В такой ситуации мне не осталось ничего, кроме как расчехлить x64dbg и дебажить экзешник.

Вот это условие, которое я инвертировал - теперь ПО запускается на всем, кроме оригинального железа, лол
Вот это условие, которое я инвертировал - теперь ПО запускается на всем, кроме оригинального железа, лол

За пару вечеров я примерно разобрался, что там происходит и исправил этот ужасный баг. К моему удивлению, программа заработала без каких-либо проблем, о ее проприетарном прошлом напоминают только неработающие настройки и батарея.

Домашний экран - на первый взгляд ничего страшного
Домашний экран - на первый взгляд ничего страшного

Но тут случилось самое страшное — разочарование. Я понял, что эта программа — полный отстой и что пользоваться ей просто невыносимо из-за чудовищного UX и UI.

Никаких анимаций в помине нет, весь интерфейс абсолютно статичный. Мне стало интересно, на чем же оно работает и судя по всему, они используют Chromium Embedded Framework для UI и LUA как скриптовый язык для всяких сервисных функций типа поиска игр на компе.

В общем, все очень плохо, я молчу про вес в 500 мб из-за фоновых картинок в PNG и прочие мелочи, которые замечаешь только когда смотришь вглубь.

Далее, в дискорде этой фирмы я пообщался с чуваком, который помогал на ранних (еще более ранних) этапах с локализацией и тестированием этой шляпы, спросил у него, есть ли вариант предложить им помощь и поправить хотя бы то, что сильно бросается в глаза. Оказалось, что я далеко не первый, кто хочет предложить помощь, но разработчики отказываются от любой помощи извне. Ну и ладно.

Я пошел реддит и рассказал про свою боль (чуть покороче, конечно) в сабреддите о портативных устройствах, но почему-то меня проигнорировали

Прошу советов и мнений на счет написания программы

И теперь к сути. Я подумал, что почему бы не сделать пет-проект в виде лаунчера, пустить его в опен-сорс. Ах да, стоит добавить, что свой «лаунчер» есть только у AyaNeo и владельцы других устройств, в том числе Steam Deck с виндой, очень хотят себе эту шляпу накатить, чтобы было удобнее. В общем, спрос точно есть, штука интересная, я решил попробовать.

Так вот! Что мне нужно от вас. Есть несколько вещей, над которыми я сомневаюсь.

Первое — посоветуйте на чем это лучше писать. Я точно знаю, что я хочу всяких фенси-анимации интерфейса и возможно, 3D. Это должно быть что-то тоже опен-сорсное. Я рассматривал два варианта — Flutter и Godot. На первом, кажется, анимировать будет сложнее, но очень понятный поток данных и архитектура приложения в целом. Godot, напротив, легко позволяет анимировать что угодно и достаточно прост, но он абсолютно ужасен во всем, что касается структуры приложения — там даже DI нет, весь код полагается на Observer, нет композиции компонентов, все только через наследование. Поддержка шарпа просто отвратительная.

Пару вечеров поигрался с анимациями интерфейса в годоте

Если кто-то писал что-то серьезное на готоде, дайте пожалуйста пару советов по структуре приложения, как разделяли логику и т. д. Или что-то другое может посоветуйте, я открыт для вариантов.

Второе — UI. Я вообще немного разбираюсь в том, как должен выглядеть и работать дизайн, но гораздо хуже чем в том, как его реализовать, поэтому буду признателен, если кто-нибудь посоветует какой-нибудь UI kit для фигмы, с которого можно будет собрать интерфейс с темной темой.

Один из референсов, что я нашел для себя, например. 
Один из референсов, что я нашел для себя, например. 

Третье — если вы вдруг являетесь целевой аудиторией или можете себя представить в лице оной, поделитесь, пожалуйста, что бы вы хотели видеть в подобном приложении. У меня есть свое видение, но хотелось бы расширить его и составить план разработки исходя из этого.

Ну и если вы разработчик десктопных приложений, дайте пару наставлений и советов, ибо у меня за плечами только игры, веб да несложные приложения для мобил.

Спасибо.

427427
205 комментариев