Как гласит старинная скандинавская максима, "С соседями своими в мире живи, чтобы не сожгли дома твоего". К сожалению, даже в такой критически важной мелочи, как добрососедское сосуществование с иным софтом, в геймдеве (да и, чего греха таить, в целом по IT) наблюдается хронический непроглядный швах. В лучшем случае из конфликта между двумя программными продуктами получается внеочередной товарищеский матч между техподдержками этих программ, по виду спорта "футбол пользователем".  В худшем - тот софт, который половчее, устраивает показательную децимацию компьютеру пользователя (и, by extent, софту-оппоненту), ибо нефиг скрещивать лучи. Формально, окончательное решение добрососедского вопроса перекладывается... на Минимальные Системные Требования. Потому, что МСТ должно хватать на работу ОС + приложения - и оставаться ещё капельку на всё остальное. Или на инструкции по установке. Поставил наше приложение - удали все чужие.Или на FAQ на сайте игры. Поставил наше приложение, но оно не работает? Удали все чужие. На что угодно, кроме здравого смысла и умеривания своих неадекватных хотелок. Да тьфу, кто вообще этим занимается?! Чего ради, чего для? Каждый раз, когда очередной убелённый сединами самопровозглашённый Поборник Правильного Программирования начинает мне доказывать, что я ничего не понимаю в принципах построения ПО (и UX в частности), - я начинаю нервно хихикать.Нет, правда. Поборники Правильного Программирования тратят своё несомненно бесценное время на то, чтобы ходить среди нас, смертных. Учить нас, как кодить правильно. Припадать устами к избранным стандартам организации разработки при каждом удобном случае. С пеной у рта и иных частей тела отстаивать наиудивительнейшие принципы, подходы и парадигмы, типа "неприменимости законов экономики реального мира к программному продукту", "пользователь должен гнуться под код, а не код под пользователя!", "хороший айтишник обязан быть экспертом по всему сразу! По фуллстэку в каждые руки на каждую позицию!", "только строгая типизация и массовые расстрелы помогут писать качественный код!", "ПМ не человек!", etc, etc, etc...  ...ооооох... К сожалению ли, к счастью ли, в ходе неудержимой борьбы с ветряными мельницами наш стартап "дон Кихот & осёл Пансы" совершенно утрачивает сцепление с реальностью......так рождается программный продукт, который ведёт себя, как совершенно не порядочный сосед. В качестве затравки, я приведу довольно простенький пример. Вам приспичило купить The Sims 4. Ничего криминального... пока что.Вам приспичило купить The Sims 4 в Steam. Уже интересно, но терпимо.Вам приспичило установить The Sims 4, купленный в Steam. И, начинаем парад-алле! На Вашем компьютере уже установлен Steam. Вы пытаетесь установить The Sims 4.Стимовский "установщик" вместе с игрой протаскивает Вам на жёсткий диск установщик Origin.Установщик Origin после первого же запуска вписывается в автозагрузку (вернее, в список автозапускаемых сервисов). И ждёт.А, да, и если Вы поиграли и закрыли и Steam, и "симсов", - типа-сервис Origin останется сидеть в памяти. Вопрос: как домохозяйке, которую угораздило купить симсы в стиме, избавитсья от ориджина в автозагрузке (и в памяти по завершении игры)? Алло, Electronic Arts? На дворе 2022 год, пора бы услышать про синхронизацию списка игр между платформами, если вам так уж хочется, чтобы клиент и вна Origin пришёл!И/или про отдельный исполняемый файл для Steam, если по какой-то причине вам приспичило диверсифицировать доход через кусок пользовательской базы Steam.Или ещё про что-нибудь, что снимет с конечного пользователя бремя по очистке оперативки от мусора, чувствующего себя как дома. Мелочь, скажете вы. Нет. Мне не жалко пары мегабайт оперативки для приложения, которое мне нужно от силы раз в две недели, когда захочется чего-нибудь помодить. Но. Чем дальше в XXI век - тем больше появляется приложений-свиней, решительно не готовых мириться с тем, что пользователю они не нужны 24/7. Вот что творится у меня в штатном списке автозагрузки сейчас: Нет, мне не нужен гайдзинолаунчер круглосуточно, я не настолько люблю Crossout.Нет, мне не нужен... что бы это ни было, я уже успел забыть (и, наверное, удалить) Lantern.Loudplay? Какой Loudplay? Скайп? Нет, спасибо. Раз в два месяца отдать файлы. Чаще не нужно. Телееееега... аналогично. И это после многократного пылесосинга реестра. Я устал пылесосить себе реестр от любителей заложить очередной авторан замедленного действия. В Службы я даже не буду заглядывать, чтобы не портить себе настроение.Потому, что в среднем каждая третья макака рано или поздно решает, что штатный список автозагрузок - это для слабаков. Поэтому сделаем наш автозагрузчик Слуууууужбой!Ну хоть в Планировщик Задач долбиться перестали... вроде бы... и на том спасибо. В зависимости от того, насколько зажрался конкретный разработчик, каждая запись в автозагрузке - это от 10 мегабайт оперативной памяти до 1 гигабайта. Я не шучу про гигабайт. Просочившийся в автозагрузку GOG Galaxy вполне может выжрать порядка гигабайта и застрять, аки Винни-Пух в Кролике. Да что GOG Galaxy!Старожилы, возможно, вспомнят какие-то дистрибутивы игр для WinXP, непонятно зачем устанавливавшие втихую эппловский Bonjour, который в те далёкие времена мог вызвать плоходиагностируемый сбой работы проводного Интернета...Просто подумайте. Игра (!!!) ставит вместе с собой совершенно ненужный фреймворк, который мало того, что память жрёт, так ещё и сбои вызывает.Зачем так делать? Чтобы в случае багов с игрой послать игрока в техподдержку Apple?! Но если бы только это... Вы знаете, я ненавижу Viber.Фичевое наполнение Viber производится людьми, у которых сцепление с реальностью могло бы быть и получше.Если же у них с этим всё ОК - откуда тогда у этого приложения скверная манера регулярно и без спросу открывать какую-то чудь в браузере? "Смотри, мы обновились! Почитай чейнджлоги!""Смотри, новая фича, почитай о ней в нашем блоге!""Смотри, это лысый орёл! Смотри, это совёнок Хути! Смотри, они дерутся!" Кхм... Какой-то опции отключить этот бессмысленный флуд в десктопном приложении, насколько я знаю, всё ещё нет.Только браузерный плагин, блокирующий попытки открыть любую связанную с Viber страницу, спасает от этой кишечной немочи.(или пара записей в hosts, перенаправляющих любые попытки посмотреть вайберовский блог на порнхаб. Дети, так не делайте) Интересной разновидностью этой болячки является открытие страницы с формой-опросником (как правило, не на языке пользователя) по факту удаления программы.Алло! Если я уже удалил вашу программу - я ТОЧНО решил, что пользоваться ей не буду, и не горю желанием делиться с вами причиной!Потому, что если бы я хотел поделиться причиной - я бы написал в техподдержку, например! Может, пора подумать, почему пользователю проще удалить вашу программу, чем написать в вашу техподдержку? Да, про святую уверенность каждого приложения, что ИМЕННО ОНО должно оказаться поверх всех окон, я только пройду вскользь. Я хочу запустить, скажем, Блокнот, лаунчер и копию игры. Бикоз мультитаскинг из мэйнстрим.Пока всё это грузится, я хочу, скажем, бегло полистать вики по игре, чтобы вспомнить, через какое место я хотел что-то замодифицировать в ней.Я начинаю читать вики, нахожу нужную статью.В это время Блокнот "вспоминает", что он наконец загрузился, и всплывает поверх всех окон.Ругаюсь в усы, альт-табаюсь обратно на вики.Два абзаца спустя, лаунчер заканчивает хрустеть хардом и тоже всплывает поверх всех окон.Ругаюсь в усы, альт-табаюсь обратно на вики. Почему-то попадаю на Блокнот. Ещё ругаюсь, ещё альт-табаюсь.К середине статьи - чу! запустилась игра! поверх всех окон!Кыш, итить твою! Альт-таб, альт-таб, альт-таб, да чтоб тебя... Down, boy, dammit!(кто бы мог подумать - адепты Мультитаскинга Неделимого не могут написать софт, который при работе с ним не мешает мультитаскать, даже в таких базовых вещах...) Но могло быть и хуже! Playnite, помнится, грешит тем, что ворует фокус каждый раз, когда требуется действие пользователя.Т. е. я запускаю, скажем, импорт библиотеки в одном окне - и листаю книжку во втором.В среднем, раз в пять минут книжка перестаёт листаться. Потому, что Playnite по какой-то причине не может найти очередную игру. И забирает фокус на себя. Потому, что ИМЁООООРДЖЕНСИ! Я ИГРУ НЕ МОГУ РАСПОЗНАТЬ! ПОМОГИТЕ! ЕГГОГ! ЕГГОГ!Тьфу... стыдоба. Я не хочу даже разбираться, чей это баг - самого Playnite, плагина-интеграции библиотеки или аж самого дотнета.Такого. Быть. Не. Должно. Совсем.Приложение должно знать своё место.И не воровать фокус, если фокус явно не на нём.Но это слишком сложная задача для программирования в XXI веке - не воровать фокус без особо большой нужды.Мы же свиньи.После нас хоть потоп.Все ваши ресурсы принадлежат нашему приложению. Хуже воровства фокуса только незапланированные дети неожиданные оповещения-тосты.По мудрому замечанию держателей сайта grumpy.website , "самое подходящее время для показа оповещений - НИКОГДА".Если приложению СРОЧНО нужна реакция пользователя (например, через пять минут плановая перезагрузка сервера) - старое доброе всплывающее окно поможет гиганту мысли.В абсолютно всех остальных случаях - не лезь в фокус. Не наползай на чужое окно. Ты мешаешь.Что забавно, вроде бы именно для таких гиперактивных приложений в Win10 выделили целый лоток именно для показа оповещений.Но вот же жь подстава - им никто не пользуется почему-то. Кроме самой Windows. И то не всегда.Мо-лод-цы. Помнится, в плане незапланированных оповещений особенно отличился GOG Galaxy (опять...).В котором все оповещения, какие можно, по умолчанию включены.Единого выключателя нет.Извольте корячиться и выключать их поштучно, СЭЭЭЭЭЭЭЭР.Если это пик UX по-польски - то я, пожалуй... хмммммммм... как бы это помягче сказать... воспользуюсь традициями UX другой нации. Впрочем, что выключатели оповещений. Не могу удержаться от некоторого количества оффтопика, связанного с ещё одним удивительным решением CDPR. В свежих обновлениях в GOG Galaxy добавили просто киллер-фичу. Сам Маркетинговый Молох с неё рыдает и умоляет перестать. Как вы догадываетесь, в лаунчере GOG Galaxy есть страницы игр. Не магазинные. Внутрилаунчерные.С кратким описанием, системными требованиями, списком достижений... ну, так, на случай, если пользователь забыл, что за игру он купил. Дело благородное.Так вот, в крайних обновлениях на эти внутрилаунчерные страницы игр добавили рекламу.Которая предлагает вам купить ту игру, страницу которой Вы просматриваете. То есть, эта игра уже у Вас есть, иначе Вы не можете попасть на эту страницу. Но Вы всё равно подумайте, а не купить ли её ещё раз.Понимаете абсурд ситуации? Неудивительно, что спустя два года разработки обычная папка с файлами справляется с организацией библиотеки игр лучше, чем этого лаунчер-многостаночник. Не то чтобы я придирался. Нет.Просто с нынешним трендом навьючивать на каждую игру по два-три лаунчераплюс DRM от третьих лицплюс античитплюс какую-нибудь YOBA-технологию типа переключения типа рендера на ходу (нужную полутора особо целеустремлённым фанатикам - Diablo 2 Refunded и ремастер Asterix & Obelix XXL, я о вас в первую очередь!)плюс оверлеи плюс сохранение последних 30 секунд геймплея по хоткею плюс чатыплюс чёрт знает что ещё... ...алло!Я. Просто. Хочу. Поиграть. В. Игру.Изредка, когда накатывает особо творческое настроение, я хочу запустить вашу игру и что-нибудь ещё.И при этом не лазать лихорадочно по всякого рода инспекторам процессов в поисках именно того шлакоблока, который именно сейчас решил похрустеть моим жёстким диском и запить оперативкой. ХВАТИТ ЖРАТЬ РЕСУРСЫ МОЕГО КОМПА! Мало того, что игры сами по себе выходят крайне неоптимизированными - так ещё и в комплекте с ними идёт какое-то ну настолько бессмысленное барахло, просто "чтобы было"... ...но здравый смысл в геймдеве не ночует.Любое приложение считает, что все ресурсы компьютера принадлежат ему и только ему.Что всё внимание пользователя должно принадлежать ему и только ему... ...у меня иные бывшие были не такие чокнутые, как эти приложения. А чокнутых бывших, поверьте, у меня хватало... Самое смешное, что ввиду убийственной комбинации кризиса производства и... кхм... религиознополитических трений на мировом уровне решать проблему приложений, ведущих себя как кошкодевки, экстенсивно - дозакупкой более мощного железа - уже не выйдет. Разработчик!Подумай прежде, чем внедрять очередного пожирателя ресурсов для 0.001% особо вокальной базы игроков!Остальные 99.999% могут не смочь поиграть в твою игру!И зарефандят.Может быть.Всё-таки... что в 76, что в 77 же кто-то всё ещё играет...Впрочем, отдельным индивидам и Diablo Immoral нравится... но об этом, возможно, мы поговорим в следующий раз. Приятного вам дня.