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

..ну и просто для личного удобства.

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

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

Они не появились все разом. Накопились со временем.
Они не появились все разом. Накопились со временем.

Во времена, когда я ещё не был знаком со стимоподобными приложениями, я либо хранил установленные игры на компьютере, либо держал инсталляторы на внешнем жёстком диске. В настоящее время храню на компьютере немало небезразличных мне игр, не смотря на то, что их всегда можно скачать заново. Я не играю постоянно в каждую из них, но мне приятно думать о том, что они всегда рядом и при подходящем настроении смогу их запустить.

Потому список игровых ярлыков всё расширялся и расширялся. Они были моим основным способом запуска игр, поскольку не все из них были получены одним и тем же источником (часть из Steam, часть из других мест), следовательно ни одно приложение не обеспечивало полный список игр. GOG пытался решить эту проблему, притом весьма недурно, но со мной их вариант не прижился. Хотелось чего-то более личного, легковосприимчивого, быстрозапускающегося, компактного, с полным списком игр и, возможно, даже примитивного а ля «выбрал-запустил», без наворотов и мельтешения лишней информации перед глазами.

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

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

Казалось бы, проводник мог решить многие проблемы, но мне это казалось настолько безвкусным, а я настолько любил игры, что решил: «Ну уж нет! Я сделаю так, чтобы на рабочем столе был лишь один ярлык, который развернёт мне весь список в том виде, в котором я пожелаю!».

Это было 6 лет назад.

Стоило ли оно того? Давайте узнаем..

«несколько» * (365 * 6 + 1) * «Ct комфорта» * «Ct душевного равновесия» * «Ct самолюбия» > 60 * 60 * 24 / 3 * 30

Вердикт: Да. Стоило.

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

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

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

Старая версия

Когда я только приступил к созданию приложения, я хотел..

  • Чтобы значки с играми располагались и выглядели так, как я захочу.
  • Объединять несколько игр в один значок
  • Присваивать играм постоянные и переменные параметры, которые можно визуально отобразить
  • Моментально сортировать значки по выбранному параметру
  • Моментально фильтровать по жанрам, разработчику, году выпуска и личным меткам
  • Прозрачный фон

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

Разработка старой версии началась. Прошло 2-3 недели. Разработка закончилась.

Примерно так оно выглядит при запуске.

Соответствует всем вышеупомянутым критериям, кроме прозрачного фона, который имитируется – отправляешь приложению картинку с рабочего стола (либо, любую другую) и он накладывает её на задний план, перекрывая собой файлы и папки, что реально лежат на рабочем столе.

В любом случае я остался доволен. Список содержал в себе все имеющиеся игры, из какого бы источника они ни были получены. Значки группировались, фильтровались, сортировались, преображались, запускались.

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

Глобальный список можно отфильтровать по разным критериям: разработчик, жанр, личные метки и символы, год релиза, кусок названия. А также фильтр можно инвертировать, то есть выдавать «всё, что угодно, но только не...».

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

Зачем-то есть возможность изменить внешний вид окна.

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

Фильтр. Сортировка. Внешний вид. Рейтинг желаемого на скорейший запуск.

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

1-ый клик по значку вызывает сбоку панель с информацией об игре. 2-ой клик по значку запускает её.

Мелочи, но так мне стало комфортнее.

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

КАЖДУЮ игру я отдельно описывал и подбирал изображение. При переносе всех имеющихся игр, это заняло немало времени.

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

Регулировка прозрачности окна была добавлена только ради выпендрёжа.

Новая версия

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

  • Фильтровать установленные игры по конкретной студии или конкретному году, конечно, весело, но данная возможность использовалась скорее для информативности и в очень редких случаях. Вырезано.
  • Сортировка по критерию. Любоваться играми в правильном порядке их выхода от рождества Христова и по сей день стало бессмысленным. Как и всё остальное. Вырезано.
  • Как следствие, значки больше не содержат какую-либо прежнюю информацию об игре, кроме её названия и изображения. Вырезано.
  • Настройка внешнего вида окна и дотошного расположения значков помогает разнообразию в перспективе и первое время я даже этим пользовался. Но потом наскучило. Регулировка высоты окна – единственное, что осталось полезным. Вырезано.
  • Боковые панели с дополнительными менюшками выглядят интересно и доступно, но решил оставить просто сплошное окно со значками, перенеся функционал на горячие клавиши, либо в отдельный файл, где описаны параметры. Вырезано.

Вернее не «вырезано», а «не добавлено». Я поставил курс на ещё большее упрощение визуальной и технической составляющей, дополнив функционал наиболее значимыми опциями.

Для начала разделил все значки на списки. Список списков редактируем, как и его содержание. Они являются смесью описания жанров и личных меток, а также отображаются не в «информации об игре», а вместе со значками.

Примерно так это выглядит.

Также я добавил всем играм параметр, показывающий к какому магазину привязана игра. Есть варианты: «без привязки», Steam, EGS, GOG. Некоторые другие варианты магазинов не стал добавлять потому что ..не захотел. А если игру я не привязываю ни к какому магазину – значит она ни к какому и не относится.

Значки, состоящие из нескольких игр, никуда не делись, но меня раздражало, что в разные моменты времени на них красовалось разное изображение, из-за чего они терялись. Поэтому теперь «серия игр» имеет своё название и изображение.

Также порой я группировал не только игры одной серии, а просто объединённые неким фундаментальным качеством. Например, игры некоторого автора или эмуляторы.

Сортировать список можно, но только в произвольном порядке, без критериев. А большая часть функционала выполняется горячими клавишами: показать значки магазинов, показать рейтинг, отключить прозрачный фон, «развернуть» содержимое всех серий в общий список игр или убрать разделители и пр. (если забуду список горячих клавиш, всегда есть F1 – единственная кнопка, про которую не стоит забывать)

Жаль, что сразу не назначил почти весь функционал на горячие клавиши. И реализовать проще, и пользоваться удобнее.

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

Более того, читает ярлык и находит в нём информацию о магазине (создаваемые магазинами ярлыки ссылаются не на файл на компьютере, а на сам магазин с конкретной командой), сразу привязывая к нему. А также находит ссылку, где расположен .ico-файл с изображением игры и конвертирует .ico в .png, чтобы использовать.

Алгоритм конвертации я полностью написал вручную. Так как многие .ico хранят в себе ряд изображений, я сначала ищу внутри файла самое крупное и «достаю» его. Но поскольку не все форматы хранения изображений в .ico я предусмотрел, не со всеми это работает. Но с большинством!

Созданный значок сразу получается целостным.

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

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

Также, например, EGS хранит изображения игр не в .ico, а в самом .exe. Я не умею программно-алгоритмическим образом доставать оттуда изображения, потому приложение просто копирует сам .exe на рабочий стол, чтобы я вручную сделал это.

Но даже если что-то пойдёт не так – всегда можно заменить изображение любым, что лежит на рабочем столе.

С каждой новой игрой создаётся текстовый файл с описанием. Туда, при желании, можно вписать всё, что угодно, в т.ч. то, что было раньше: год, разработчик, личный рейтинг. Но приложением эта информация никак не используется. Да и я её ничем не заполняю. Файлы просто лежат пустыми.

Так как теперь у игр нет подробной информации, отпала и необходимость в 2 кликах для запуска. Теперь игра запускается по одному клику (спустя пару ошибок пришлось делать защиту от мискликов). Это может показаться странным, но так процесс запуска начинает ощущаться более лёгким для восприятия.

При удалении игр из списка, ярлык из каталога возвращается на рабочий стол. Просто на всякий случай.

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

Если старая версия склонялась больше в сторону энциклопедийности с описаниями, сортировками, настройками и прочими штуками, то новая стала буквально простым «запускальщиком» – открыл, выбрал, запустил; открыл, выбрал, запустил. И ничего глазу не мешает.

Итог

Эта затея никогда не отобьёт затраты по времени. Тем не менее, уже много лет я храню и запускаю игры таким способом, и чувствую себя комфортно. Тем более, если все мои текущие игры выложить ярлыками на рабочий стол, – не уверен, что его хватит. И по сей день добавляю в него новые игры, которые меня зацепили. Например, одними из последних были Rogue Legacy 2 и Stray.

Изначально я думал выложить приложение в публичный доступ для исследователей всякой ерунды, но для этого надо инструкцию по эксплуатации писать и надеяться, что пользователи случайно не поудаляют, что не надо. Потому решил ограничиться только статьёй. В конце концов это тот случай, когда что-то сделано непосредственно для себя.

Напоследок скажу..

..хочу себе много памяти на компьютере. Чтобы можно было хранить как можно больше любимых игр.

*надпись для превью, чтобы манипулировать порядком блоков

Это было 6 лет назад. Стоило ли оно того? Давайте узнаем..

752752
189 комментариев

Автор, извини 🙃

319

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

109

Комментарий недоступен

53

В стиме можно интегрировать любые ярлыки, от чего даже в папку заходить не надо и создавать её. У меня вот овервотч 2 в баттлнете отсутствует и нельзя установить из-за их борьбы, но можно скачать её и запускать из ярлыка самой игры без лаунчера, я этот ярлык в стим добавил, теперь овервотч работает в стиме, но не в батлнете. Прям как дестени 2.

35