Обновление игр цикла "Трикси и алмазы", версия 1.1 (исходники, уровни, дистрибутив Linux, перевод)

+97
NTFSв блоге Gamedev is Friendship!5 июля 2023, 13:40
 

Решил всё же привести в порядок эти две аркады, а то вроде и разработал, но до логичного конца не довел.
А это нехорошо.

Сохранены и улучшены обе версии (для 16-битных систем и для современных операционок)

Что добавлено:
  • Новые уровни для расширенной версии игры (было 5, стало 10)
  • Перевод на английский язык
  • Дистрибутивы с установщиками для Windows
  • Запускаемые файлы формата AppImage для 64-битных Linux.
  • Отключение звука (без регулировки громкости)
  • Исходники выгружены на github
  • Конечно, многочисленные исправления багов вроде хождения сквозь стены и невозможности запуска более одного шара огня.

Под катом ссылки на загрузки:

Английские версии размещены на itch.io (рекомендую качать отсюда, английская и русская версия отличаются только языком по умолчанию, его можно переключить в меню)

tav-developer.itch.io/trixie-and-diamonds-16-bit
tav-developer.itch.io/trixie-and-diamonds

Версии с русским по умолчанию можно взять на github в разделах релизов

github.com/tereshenkovav/Trixie16bit/releases
github.com/tereshenkovav/TrixieDiamonds32/releases

Ссылки на сами репозитории

github.com/tereshenkovav/Trixie16bit
github.com/tereshenkovav/TrixieDiamonds32

16-битная версия разработана на QuickBasic 4.5 и NASM для DOS.
32-битная — на основе моего собственного движка GameStudyJS, использующего SFML и QtScript [ github.com/tereshenkovav/GameStudyJS ]

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

PS: В расширенной версии для Windows есть обидный, редко появляющийся баг. Раз на 30-40 запусков игра падает. Молча падает, без ответа и привета. Если кто поймает такое событие — прошу написать в комментариях или личку.

306 комментариев

В девелоперскую ленту.
NTFS
+3
Спасибо. ))
LunReaper
0
Еще, кто-то в прошлый раз ссылку на игру оставлял на реддите — я не возражаю против публикации и про этот проект :-)
NTFS
+1
AppImage для 64-битных Linux

М-м-м, ляпота… Никаких помойко-снапов.
ПроблемыLinux: Devuan Chimaera, KDE Plasma 4:5.20.5-4
1) При разворачивании на весь экран теряются пропорции, картинка растягивается.
2) При телепортации враг может появиться прямо в месте назначения.
3) Управление отзывчивое, но процесс тратит ~45% ЦП.
MTH_Root
0
Никаких помойко-снапов.

Дистрибьюция под Linux всё ещё является болью. Да, AppImage наиболее близок к божественной концепции Windows «включаем все dll в установщик» — но беда в том, что libc и libstdc++ включать таким образом нельзя — и вот уже при попытке обеспечить запуск на Ubuntu 14 и Ubuntu 22 одновременно наш круп в огне.
Я изучаю, как эту проблему решает GOG, у них очень грамотный подход, но и там делаю раздельные дистрибутивы для разных версий Ubuntu, что говорит нам о фундаментальных проблемах.
К слову, поддержку AppImage в Ubuntu 22 поломали.
1) При разворачивании на весь экран теряются пропорции, картинка растягивается.

Это у меня стоит в доработказ движка, сейчас растягивание идет без учета пропорций, средства самого SFML. По уму, опция
«полный экран» должна быть в движке.
При телепортации враг может появиться прямо в месте назначения.

Поскольку прыжок выполняется не мнгновенно, возможна ситуация, когда команда уже запущена, Трикси еще не прыгнула, а монстр в точке назначения уже заспавнен. Это можно исключить проверкой «не спавнить там, где точка назначения прыжка, если прыжок запущен», и наверно, так и сделаю.
3) Управление отзывчивое, но процесс тратит ~45% ЦП.

Хе, QtCore+QtScript+дорогие операции с текстурами дают действительно сильную нагрузку. На чистом С++ или ObjectPascal было бы быстрее, конечно, но я хотел попробовать такую связку. В целом, хорошо, кроме загрузки процессора и редких (очень редких) падений без ясных причин.
NetCore таки выглядит надежней для кроссплатформенных игр.

Спасибо за подробный отчет.
NTFS (ред.)
0
Дистрибьюция под Linux всё ещё является болью.

Я давно считаю, что делать надо так: Пилим версию программы на доработанном Appimage (кэш, конфиги, все сохраняется в нем), потом по возможности пакуем программу в deb, rpm, etc. Если возможности нет, всегда поможет сообщество.
Допустим, я готов перелопачивать действительно нужную мне программу в родной формат пакетов дистрибутива. Но что бы осознать что программа того стоит, я должен иметь возможность попробовать ее не возясь с недостающими или неподходящими по версиям пакетами, не перепиливая пол системы. Для меня вопрос свежих версий либ и софта стоит особенно остро.
MTH_Root
0
кэш, конфиги, все сохраняется в нем

Не думаю, что это возможно — AppImage создаёт read-only систему, логи и настройки пользователя всё еще нужно направлять в /home или /tmp

потом по возможности пакуем программу в deb, rpm

Даже Slackware между 14 и 15 версиями уже несовместим. Это нужен десяток deb, десяток rpm, три-четыре tgz и это только для главных дистрибутивов.
Ни один разработчик этим заниматься не будет — он пишет софт, а не отслеживает, какой номер субверсии libxxxxx заменен в очередной сборке Ubuntu.
NTFS
0
Не думаю, что это возможно — AppImage создаёт read-only систему

Поэтому и пишу, что надо доработать формат Appimage. Можно пойти еще дальше, пусть там хранятся две фс, одна для файлов программы (read-only), вторая для всех файлов созданных программой или отредактированных пользователем, кэш, конфиги, свои патчи, дополнения и т.п. (rw). И сделать так, дабы всегда можно было передать Appimage аргумент для сброса всех файлов в rw-фс, возвращая оригинальные из read-only.
Это нужен десяток deb, десяток rpm, три-четыре tgz и это только для главных дистрибутивов.
Ни один разработчик этим заниматься не будет

Разработчик не будет, будет сообщество которое оценит программу. А вероятность этого повышается, если сначала сообществу будет выкачен автономный Appimage без зависимостей.
MTH_Root
0
Поэтому и пишу, что надо доработать формат Appimage

Как это возможно? По сути, он просто архив, распаковываемый в /tmp или /ram.
Записывать изменения обратно в файл — это огромная дыра в скорости и безопасности.
Собственно, даже Windows уже пришла к концепции неизменяемых файлов в Program Files и пользовательских в Users/AppData.

Записывать пользовательские данные обратно в архив AppImage — это возврат к Windows 98, но без всех плюшек Windows 98.

сообщество

Сообщество за 40 лет не сделало даже нормальный файловый менеджер для Linux, не говорю об уровне FAR Manager — но хотя бы до TotalCommander или Norton 4.
NTFS (ред.)
0
Как это возможно? По сути, он просто архив, распаковываемый в /tmp или /ram.

Перво-наперво это исполняемый файл, который сам распаковывает программу куда ему надо. Значит технически есть возможность сначала распаковать программу из read-only fs, потом распаковать с заменой файлы из rw fs.
Если программа или пользователь во время работы поменяла какие то файлы, то после завершения работы программы идет запись всех измененных файлов в rw fs и упаковка rw fs обратно в Appimage.
Несущественно увеличивается время запуска и завершения Appimage, но сама программа в производительности не теряет.
Записывать изменения обратно в файл — это огромная дыра в скорости и безопасности.

Почему? Относительно скорости я уже высказался, относительно безопасности вот: Если пользователь сам заменит бинарник приложения на вирус, то ССЗБ, тут ничто не поможет. Да и безопасность — проблема пользователя, я считаю. Незачем ради нее удобные фичи кастрировать.
Сообщество за 40 лет не сделало даже нормальный файловый менеджер для Linux

Создать удобный файловый менеджер который устроит всех и упаковать программу в deb — разные по уровню вещи. Группа автолюбителей навряд ли разработает и соберет свой автомобиль, но вот колесо поменять способна.
MTH_Root
0
Если программа или пользователь во время работы поменяла какие то файлы, то после завершения работы программы идет запись всех измененных файлов в rw fs и упаковка rw fs обратно в Appimage.

Я не вижу применения этой технологии, везде идет разделение на ro файлы программ и rw файлы пользователя.
Некоторые игры могут содержать данные пользователя больше размером, чем сама игра — представь, как мучительно будет ворочаться гигабайтный файл, пытаясь в себя впихнуть еще гигабайт данных.
В том же MacOS программы распространяются по похожей методике (образы dmg), но в них ничего не пишут, все данные уходят в /home
NTFS
0
Сообщество за 40 лет не сделало даже нормальный файловый менеджер для Linux, не говорю об уровне FAR Manager — но хотя бы до TotalCommander или Norton 4.
Мне что-то после mc наоборот, дико неудобен нортон О.о
makise_homura
0
Хе, QtCore+QtScript+дорогие операции с текстурами дают действительно сильную нагрузку.

Вот поэтому, юзайте, дети, чистый C! Или хотя бы Lua.
Mainframe (ред.)
+1
Чистый С — это страдание при попытке сделать хоть какую-то архитектуру программы.
Даже великие игры прошлого типа WarCraft и Doom были написаны на С++ с ассемблерными вставками.
NTFS
+2
Я пишу движок на чистом C, пока что всё норм)
Mainframe
+2
и Doom
DOOM (то, что сейчас называется движком id Tech 1) был написан на С, никакого С++ в нём не использовалось, если что). Это GZDoom и прочие порты используют С++ сейчас, а оригинальный движок — это чистый С. Более того, емнип, все кваки вплоть до третьей тоже юзали движок на С, а не на С++.
И в чём проблема в построении архитектуры в программе на С?
makise_homura
0
был написан на С, никакого С++ в нём не использовалось, если что)

Проверю. Почему-то в памяти с древних временем отпечаталось, что Doom 2 и WarCraft 2 на Watcom C++

И в чём проблема в построении архитектуры в программе на С?

С++ лучше, чем С
Чем лучше?
Чем С
(переделка бородатого национального анекдота)

Одна из первых задач, которая возникает при построении игры чуть сложнее одноэкранника с тремя героями — это возведение моста между логикой и спрайтами, чтобы независимо обновлять графику и поведение объектов. Удачи сделать это без VMT, обобщенных коллекций и в идеале, сборщика мусора.
Можно, можно. Но сначала придется самому разработать всё перечисленное, а потом делать непосредственно игру. Это как попытки написать игру без графической библиотеки — вместо вызова загрузки и вывода спрайта, сначала бьемся с матрицей OpenGL.
NTFS
0
Удачи сделать это без VMT, обобщенных коллекций и в идеале, сборщика мусора.
Я, как сишный программист, не вижу в этом ничего сложного (и в теории это можно реализовать даже без fork-ов и IPC, в одном потоке, как в DOS). Понятное дело, что с инструментарием удобнее (например, не заботиться об областях видимости и отдавать нештатку на откуп исключениям приятнее), но и без них норм)
makise_homura
0
Я, как сишный программист, не вижу в этом ничего сложного

Мне остаётся только прибегнуть к формуле «PvP или в кусты?»
Выберем тему для игры, обозначим примерную механику (без тонких деталей реализации, ес-но) — ты реализуешь на С, я на ObjectPascal или C#. Без дополнительных фреймворков, только средства языка и его стандартной библиотеки.
Потом выгрузим в свои гитхабы + Табун, и публика, которая сечет в программировании (тут таких полно) — посмотрят и код, и игры, а там скажут победила дружба и магия кто ближе был.
NTFS
+1
Лол, дуэль игроделов? =) Интересная идея)
Вообще, если у меня было бы время, то можно было бы запилить, кстати.
Тут ещё проблема в том, что нужны спрайты, уровни, звук, музыка, сюжет — что достаточно сложно по сравнению с написанием кода (и именно на этом загибается 50% проектов, если не больше). Но с другой стороны, если это всё будет, и нужно будет только написать движок со сложностью 1-2 человеко-дня — то почему бы и нет.
P.S. «Без фреймворков» кажется лишним ограничением: в конце концов мы говорим про языки, а не про стандартные библиотеки разных языков. Ну, то есть, к примеру, я даже на C не буду пытаться писать что-то такое без SDL2 и/или libGL, потому что с чего бы не юзать то, что уже существует и помогает в разработке?
makise_homura
0
Ну, то есть, к примеру, я даже на C не буду пытаться писать что-то такое без SDL2 и/или libGL, потому что с чего бы не юзать то, что уже существует и помогает в разработке?

Вот так мы и пришли к C# с его делегатами и лямбдами. Никто не будет разрабатывать VMT на С.

нужны спрайты, уровни, звук, музыка, сюжет

Да не особо, можно и на простых спрайтах. Игра уровня такого же типа, как в этом посте, но минималочка.
NTFS
0
Вот так мы и пришли к C# с его делегатами и лямбдами.
Не понимаю, как юзание библиотек меняет язык.
Игра уровня такого же типа, как в этом посте, но минималочка.
Ну, такую в теории можно попробовать забацать. Она, правда, будет не то, чтобы красивая и играбельная — на это надо всё же побольше дня-двух потратить.
makise_homura
0
Не понимаю, как юзание библиотек меняет язык.

std::vector(int) против int *, вообще никакой разницы, когда по ходу игры нужно в одном цикле обойти, добавить, потом еще раз обойти и удалить некоторые элементы.
NTFS (ред.)
0
Ну, сейчас ты как раз про отличия самих языков. А я говорю про случай, когда вместо пары сотен системных вызовов можно просто заюзать условный drawRect().
makise_homura
0
3) Управление отзывчивое, но процесс тратит ~45% ЦП.
Просто vsync выключен наверно, у меня включен и игра тратит всего 3% ЦП
andreymal
0
Просто vsync выключен наверно, у меня включен и игра тратит всего 3% ЦП

Многие встроенные видеокарты не поддерживают vsync, наверно, добавлю в игру ограничение FPS принудительное. Забыл сразу установить.
NTFS
0
Прошу переименовать игру из «Трикси и алмазы» в «великая и могучая Трикси и алмазы».
Jigglipuff
+3
С великой и могучей уже есть некоторые разночтения.
Спойлер
NTFS
+2
Пусть сражаются за звание!
partizan150
+1
О-о, тут драка великих и могущественных кобыл? Где билеты приобрести?)
makise_homura
0
david_eliade
+2
И всё же, где у нас наибольшее гнездо англоязычных понилюбов?
reddit/mlp?
Equestria daily?
NTFS
+1
реддит ангажированная государственная помойка, скорее всего там
pavel_karasal
0
Пробежал игрушку за полчаса, благодарю за уникальный игровой экспириенс)

А из предложений могу сказать, что можно было бы сюжетную линию, что пишется в меню «Справка» (Про Старлайт и Вечнодикий лес) перевести в начало игры, когда жмёшь «Аркада», ну и какую-нибудь концовочку сделать после прохождения всех уровней, аля у трикси теперь много алмазов и она счастлива =)
Efferus (ред.)
+2
Тоже вариант, спасибо, подумаю над этим.
В некоторых аркадах сцены действительно встроены в игру, а не идут отдельно справкой.
NTFS (ред.)
+2
И на эти алмазы она с маниакальной улыбкой до ушей покупает Амулет Аликорна… )))
LunReaper
+3
И после этого появляется надпись «Продолжение следует» :D Неплохой такой клиффхэнгер на следующую часть получается)
Efferus (ред.)
+1
Типа того.
LunReaper
+1
Да, встроены, и после первых пары-тройки прохождений уже только раздражают, как правило, я бы сказал, ибо трата времени — их не всегда есть возможность просто прощёлкнуть. Лютое ИМХО, конечно, но мне нравится так, как оно сейчас есть. Классная игра без лишних заморочек. ))
LunReaper (ред.)
+1
Ну её можно сделать или единоразовой или с возможностью скипнуть, и не будет раздражать)
Efferus (ред.)
0
Ото-то и оно, что так бывает не всегда. ))
LunReaper
+1
Поиграл в DOSBox, под Linux не пробовал. Очень мило! Офигенные звуки и общая атмосфера. Хотя я пока не привык к скорости телепорта и тому, что Трикси немного медленнее врагов и не может просто убежать, если уже получила урон.

Кстати, есть книга «Трикси и Волшебное копытце», где она благодаря Рарити научилась сама кастовать алмазы. И в итоге в Вечнодикий лес стеклось много алмазоискателей, которые спорили между собой за «точки»)) ну это так, оффтоп.
david_eliade
+2
Трикси немного медленнее врагов и не может просто убежать, если уже получила урон.

Точнее, некоторые враги быстрее Трикси. Про урон, в 32-битной версии я это исправил, там телепорт работает после контакта с монстром, а в 16-битной забыл, надо доделать.
NTFS
+4
О, сишка и qt, отлично! Надо будет попробовать, как вернусь в августе, собрать и запустить на эльбрусе, будет интересно)
makise_homura
0
Скрипт сборки для Linux находится в build, генерируется файл в bin, оттуда можно и запускать.
AppImage ты скорее всего сделать не сможешь, а пакет должен получиться, зависимости можешь посмотреть в setup/linux/build64.sh
NTFS
+1
Да, я уже успел разобраться, теперь осталось дождаться, когда у меня будет физический доступ к машине (гамать через x11vnc неудобно).
AppImage ты скорее всего сделать не сможешь
Да, у нас тупо нет тулзов, которые делают AppImage под нашу операционку =/
makise_homura
0
Да и игр тоже не так много. А зачем нужна ОС без игр?
NTFS
0
Для работы?
oxide
0
Ну поработал, а дальше что?
NTFS
0
Выключил комп и ушёл домой? А там уже игры\развлечения\музыка и прочее.
Эльбрусы как были так и остались чисто рабочими лошадками, и дома ни у кого не живут (кроме разработчиков, но и у тех явно не основная машина).
oxide (ред.)
0
Выключил комп и ушёл домой? А там уже игры\развлечения\музыка и прочее

Тогда проще не включать комп и не уходить из дома.
NTFS
0
Не все работодатели согласны на фуллтайм удаленку.
oxide
0
Тогда пусть обеспечат возможность запуска на рабочем месте всего, что нужно, включая игры.
Может, у меня продуктивность не стартует, пока десяток импов не выбью двухстволкой с утра, как быть тогда?
NTFS
0
Если ты в одного приносишь компании миллионы — разрешат всё, что угодно (хотя в таком случае целесообразней основать свою). В противном случае думаю и так понятно.
oxide
0
Тогда пусть идут лесом, не для них этот разработчик разрабатывал и розы цвели.

Я не слишком серьезен, если что, но игры таки важная часть для ПК, даже рабочего.
NTFS
0
но игры таки важная часть для ПК, даже рабочего.

С какого то времени напрочь разучился играть на ПК (руки сами тянутся за геймпадом — с клавиатуры уже дискомфортно, хотя в нулевых и начале десятых много играл именно на компе, потом как то незаметно мигрировал на консоли да и привык иметь отдельные специализированные железки для разных задач) — для меня он был есть и останется прежде всего инструментом.
oxide
0
Тогда пусть обеспечат возможность запуска на рабочем месте всего, что нужно, включая игры.
Так никто и не запрещает: скомпилишь — запускай.
Вон Taisei Project я так портировал (а следом — GZDoom, DOSBox-X, X Neko Project, ScummVM и т.п.)
makise_homura
0
Ну, в каком-нибудь Calculate Linux тоже нет игр, емнип)
Хотя, конечно, она не позиционируется как референсная general purpose операционка, это да.
makise_homura
0
Пока не забыл
О, сишка и qt, отлично!

Еще SFML. Для Windows уже включено в репу, для остальных должно быть в системе.
NTFS (ред.)
0
Хм, а вот с SFML могут быть проблемы… Надо будет чекнуть, по идее.
makise_homura
0
SFML собирается через CMake, должно выйти.
NTFS
+1
Это если там нет кучи зависимостей и/или аппаратно-зависимых кусков…
makise_homura
0
В идеале, он обращается только к OpenGL — я собирал его на системе, где не было ничего, кроме базовых компонент.

За вычетом libc и libstdc++, вот что ему нужно
/usr/lib64/libicui18n.so
/usr/lib64/libicuuc.so
/usr/lib64/libicudata.so
/usr/lib64/libvorbis
/usr/lib64/libopenal.so
/usr/lib64/libatomic.so
/usr/lib64/libGLU.so
/usr/lib64/libogg.so
/usr/lib64/libFLAC.so
NTFS
+1
Да, кстати, у меня всё удачно собралось (c SFML_USE_SYSTEM_DEPS=ON), так что сейчас чекну насчёт самой игрухи)
makise_homura
0
Да, давай, если скрипт сборки будет чем-то отличаться, можешь отправить мне его через пул реквест, я включу в репу. Windows/MacOS/Linux это хорошо, но и другие системы тоже стоит учитывать.
NTFS
+1
GameStudyJS

Это типа «Игровой движок „Учи JS“»?) Или «Игровой движок „Я учил JS, пока его писал“»?))))
Да знаю я, что там C++ и Qt, но надо ж было подколоть)
Mainframe (ред.)
+1
«Игровой движок „Учи JS“»?

Да, примерно так, игра написана целиком на JavaScript, кроме модуля карты.
Для этого данный движок и предназначен — он позволяет человеку с минимальным знанием JS сделать простую игру, без копаний в OpenGL и оконных функциях.
NTFS
+1
Я тоже своё пишу, только на Raylib. Такая библиотека универсальная, типа SDL.
Mainframe
+1
Достаточно низкоуровневая, судя по всему. Много кода нужно сделать для вывода чего-либо.
NTFS
+1
Ну, в том-то и прикол: это не движок, а библиотека. Всё, что она делает, это предоставляет набор функций, которые пользователь может использовать по своему усмотрению. На ней вообще необязательно писать именно игры. Кроме игр можно написать игровой движок, можно редактор карт, можно рисовалку, текстовый редактор, любое стороннее ПО! Особенность в том и есть, что писать приходится больше, но зато ты получаешь то, что нужно.

И да, под эту библиотеку куча биндингов, проще сказать, под что их нет. В том числе и под JS есть, да.
Mainframe
+1
SFML тоже библиотека, но там код намного проще в использовании. Хотя тут же еще трехмерные объекты, в этом наверно сложность.
NTFS
+1
Нет, дело, скорее всего, в архитектуре. У Raylib она изначально Сишная, а у SFML, насколько я помню, она ООПшная.
Mainframe
0
Кстати, парочка замечаний по make_linux.sh:
1) стоило бы туда добавить `git submodule update --init` на всякий случай (я вечно забываю тащить репу с субмодулями =)
2) `make` я б заменил на `make $@` (чтобы можно было вызывать скрипт с параметрами типа -jN и -k)

Ещё там есть немного минорных ворнингов:
lcc: "../TrixieDiamonds/extproc.cpp", строка 12: предупреждение #826: параметр
          "name" не был использован [-Wunused-parameter]
  void ExtProc::getPair(QString name,QVariant value) {
                                ^

lcc: "../TrixieDiamonds/extproc.cpp", строка 12: предупреждение #826: параметр
          "value" не был использован [-Wunused-parameter]
  void ExtProc::getPair(QString name,QVariant value) {
                                              ^

lcc: "../GameStudyJS-core/sprite.cpp", строка 262: предупреждение #1873:
          сравнение знакового и беззнакового операндов [-Wsign-compare]
      for (int i=0; i<img.getSize().x; i++)
                     ^

lcc: "../GameStudyJS-core/sprite.cpp", строка 263: предупреждение #1873:
          сравнение знакового и беззнакового операндов [-Wsign-compare]
          for (int j=0; j<img.getSize().y; j++) {
                         ^

Но как я понимаю, это не страшно.

Ну и поскольку у нас зачем-то дефолтно выбран четвёртый Qt, мне пришлось заменять вызов `qmake ../TrixieDiamonds/` на `qtchooser -qt=5 -run-tool=qmake ../TrixieDiamonds/`. Думаю, вместо sh-файла удобнее было бы переделать сборку на CMake — там эта проблема не возникает (да и это унифицировало бы сборку с виндой — тем более, что SFML всё равно нужно собирать с CMake, так что даже на винде она нужна).

В общем, всё собралось, думаю, в понедельник проверю, как выйду на работу.

P.S. Как же на табуне не хватает однострочного форматирования кода…
makise_homura (ред.)
+1
тем более, что SFML всё равно нужно собирать с CMake, так что даже на винде она нужна

Не, не нужна, добрый разработчик уже положил в репу каталог SFML-2.5.1-mingw как раз для того, чтобы под Windows сборка выполнялась без лишних хлопот. И нужные dll в каталог bin, чтобы и запускалось одним кликом.
На Linux и Mac, конечно, такой трюк не выйдет.

Ну и поскольку у нас зачем-то дефолтно выбран четвёртый Qt

Наркоманы некроманты что ли. Уже и Qt5 считается устаревшим, всё чаще просят сорцы под шестерку.

переделать сборку на CMake

Я скорее всего буду выбирать между стульями Delphi и C#, на С++ уже новый проект делать не начну, только доведу до обновления движок игровой, а так нет.
NTFS
0
уже положил в репу каталог SFML-2.5.1-mingw
Ох лол.
Вот как после таких костылей считать винду удобной системой?..
некроманты что ли
Принцип КБЧНВ же. «А вдруг у пользователей есть старое ПО, которому нужен четвёртый Qt...» (при этом вопрос «а вдруг у пользователей есть новое ПО, которому нужен шестой Qt», и соответственно, вопрос портирования Qt6, почему-то не рассматриваются, ага).
Я так-то даже удивлён, что народ согласился Qt3 выпилить на момент смены мажорной ветки релиза ОС с 6 на 7.
makise_homura
0
Вот как после таких костылей считать винду удобной системой?..

Ну а что неудобного в возможности положить в проект сразу все библиотеки, а не заставлять пользователя страдать, гадая, будет ли на его системе нужна версия в пакетах, или не будет?
NTFS
0
Того, что во-первых — это куча (часто повторяющегося) хлама, который каждая программа тащит вместе с собой (чем тогда это отличается от статической сборки?), в то время как в нормальной операционке всё нормально версионировано и лежит в нужном месте, и все программы этим пользуются. А во-вторых — если бы в винде сразу был нормальный менеджер пакетов (доставляющий всё нужное автоматически при установке нужной проги), а не приходилось бы по файлопомойкам лазить в поисках нужных DLL-ек, то и соблазна «положить все библиотеки вместе с бинарником» бы у авторов ПО не возникало бы.
Вообще, если так подумать, то LD_LIBRARY_PATH=., как принято в винде, выглядит крайне неудобным решением, не позволяющим, например, положить бинарник туда, куда тебе удобно, а не в дебри %PROGRAMFILESDIR% или куда ещё, где лежит это «всё нужное».
Вот чем больше я юзаю линукс, тем мне идея «все бинарники в одном легконаходимом месте, все либы — в другом, все доки — в третьем» кажется намного лучше виндового подхода. Вот почему на винде я не могу сделать <Win+R> photoshop <enter> и запустить условный фотошоп (он мне скажет, что файл не найден, и правильно сделает — с чего бы ему знать, где лежит photoshop.exe, если он не в /usr/bin?), а вынужден возить мышкой внутри пуска? Непрактично же.
makise_homura (ред.)
0
всё нормально версионировано и лежит в нужном месте, и все программы этим пользуются.

До тех пор, пока какой-то программе не потребуется другая версия библиотеки с её зависимостями.
Да, можно руками доустанавливать, но типовой пользователь этого делать НЕ БУДЕТ.

(доставляющий всё нужное автоматически при установке нужной проги)

В Windows всё нужное для установки проги уже включено в прогу, потому и не нужны такие извращения. И тест делается легко — держишь одну-единственную машину с чистой ОС для проверки. Не нашло dll, включил её в дистрибутив. Всё.
NTFS
0
До тех пор, пока какой-то программе не потребуется другая версия библиотеки с её зависимостями.
Так тогда и линкуйся не с libsomelib.so, а с libsomelib.so.1.2 или с libsomelib.so.1.2.3.
Да, можно руками доустанавливать, но типовой пользователь этого делать НЕ БУДЕТ.
Вот именно поэтому под линуксом примерно всё собирается/ставится однострочником, а под виндой приходится либо класть все либы в бандл, либо разыскивать всякие dll-ки по файлопомойкам.
В Windows всё нужное для установки проги уже включено в прогу
Ты путаешь причину со следствием. Это «всё нужное для установки проги уже включено в прогу» не потому, что это лучше, а потому, что иначе пользователю не обойтись простым git submodule update --init (или apt/yum, если речь про бинарные пактеы), как под линуксом, и придётся лазить полчаса по всяким сорсфоржам.
Не нашло dll, включил её в дистрибутив. Всё.
Ещё раз вопрос: почему бы тогда всё статически не собирать?
makise_homura (ред.)
0
Так тогда и линкуйся не с libsomelib.so, а с libsomelib.so.1.2 или с libsomelib.so.1.2.3.

А если используемый мною софт или либа уже слинкованы с libsomelib.so, ожидая там версию 1.4?
Не говоря уже о том, что для системных библиотек типа libc это в принципе не выйдет — как ни крутись возле шеста, а с определенной версией разница становится неподдерживаемой.

apt/yum, если речь про бинарные пактеы

Только до тех пор, пока этот бинарный пакет есть в репах конкретного линукса. Дальше возвращаемся к
разыскивать всякие dll-ки по файлопомойкам.

только уже без возможности просто скопировать в каталог.

Ещё раз вопрос: почему бы тогда всё статически не собирать?

Я например, не могу по лицензии собирать статически — тот же мой проект про Трикси и её сбор алмазов сейчас является лицензионно чистым потому, что я линкую Qt динамически и предоставляю исходники. Без этого Qt Group порвет мою задницу на британский флаг. Ну или выложить 4000 зеленых за лицензию, чего мне хотелось бы избежать.
NTFS
0
А если используемый мною софт или либа уже слинкованы с libsomelib.so, ожидая там версию 1.4?
Значит, ты был неправ, если при линковке заявлял «мне нужна любая версия libsomelib», хотя на деле имел в виду «мне нужна libsomelib версии 1.4».
Только до тех пор, пока этот бинарный пакет есть в репах конкретного линукса. Дальше
используем apt add-repository (вернее, уже не используем, потому что мы это сделали перед тем, как делали apt install пакета с игрой).
только уже без возможности просто скопировать в каталог.
Не понял, про какой ты случай.
тот же мой проект про Трикси и её сбор алмазов сейчас является лицензионно чистым потому, что я линкую Qt динамически
Ну так линкуй Qt динамически, а всё остальное — статически. Ты ж, очевидно, Qt-шные dll-ки не поставляешь в комплекте, так зачем тогда линковать динамически то, что ты поставляешь?
makise_homura
0
Я уже потерял нить, так что ладно, в любом случае я нашел рецепт, как победить наркоманскую дистрибуцию под Linux — AppImage с указанием проверенных дистрибутивов. Забавно, что идея тоже пришла из Windows с её портативными приложениями, но как и почти всё в Linux — реализовано через страдание.
NTFS
0
но как и почти всё в Linux — реализовано через страдание.
Занятно, что оно «реализовано через страдание» именно потому, что использует принцип, противоположный линуксовому и куда больше похожий на виндовый — запихать всё-все-всё в один гигантский пак, так, чтобы игруха на 100 кБ тащила с собой ещё 200 МБ библиотек.
makise_homura
0
запихать всё-все-всё в один гигантский пак

Иронично, что именно это сейчас по факту единственный способ дистрибуции под Linux — начиная от кустарного AppImage до официального snap.

Я не вижу других способов, как мне заставить мою программу запускаться хотя бы на основной десятке дистрибутивов.
NTFS
0
Почему же другие прекрасно запускаются на этой десятке дистрибутивов, будучи упакованными в deb/rpm, а твоя — нет?
makise_homura
0
Как мне запустить deb/rpm на арче без пердолинга с ручной распаковкой?)
andreymal
0
Но арчеводы и гентушники же любят всё собирать из исходников)))
То есть там вообще по факту нужен не deb/rpm, а PKGBUILD. А раз уж он есть, то можно и в AUR его засубмиттить.
makise_homura
0
Кстати держи лол из AUR
andreymal
+1
>гораздо удобнее, чем компилить
Ну всё, арч тоже умер, походу)
makise_homura
0
гораздо удобнее, чем компилить

Но ведь действительно удобней. Компилить нужно, если хочешь получить самую свежую сборку (это нужно либо для репозитория, либо для указания ключей сборки — убрать WebGL из Qt к примеру).
Оба варианта далеки от массового пользователя.
NTFS
0
Так арчеводы тем и славились, что любили при сборке всё по-максимуму тонко настраивать (условно говоря, для некоторых из них сама сборка была творческим челленджем).
Уж что-что, а арч сам по себе далёк от массового пользователя, и ему норм.
makise_homura
0
Как мне заставить МОЮ программу запускаться? Которая не упакована в deb/rpm и не находится в репозитории конкретного дистрибутива?
NTFS
0
А почему она не упакована в deb/rpm, начнём с этого?
Многие релизы многих прог распространяются (на том же гитхабе) в виде deb/rpm под популярные версии операционок.
makise_homura
0
А почему она не упакована в deb/rpm, начнём с этого?

Делать deb/rpm под каждую версию каждого дистрибутива? Ну нафиг такое счастье, у меня нет столько времени. Мне нужно писать софт, а не изучать совместимости десятков библиотек и десятков дистрибутивов.
NTFS
0
Вообще-то это должно делаться автоматически (один раз настраиваешь CI и получаешь билды под все настроенные образы). Заодно можешь тесты прогнать сразу на всех этих операционках (мне ли говорить о важности тестирования).
Ну и это всё-таки какое-никакое уважение к пользователю — не кидать ему стопицотмегабайтный архив (из которого, например, сохранёнки, няз, так просто не перенести на другой комп), а давать то, что нужно и то, что нормальным образом интегрируется с системой.
makise_homura
0
один раз настраиваешь CI и получаешь билды под все настроенные образы

И при выходе очередной XYZBuntu версии 12.345 добавлять новый билд? Нафиг такое счастье, у меня программы, собранные для Windows 98, с некоторыми оговорками запускаются и работают на Windows 10 (причем половину этих оговорок решила сама Microsoft, сделав виртуальный RW-FS в Program Files, из уважения к своим пользователям).

Пока разработчики Linux не поймут, что ОС — это просто кнопка для запуска пользовательских приложений (желательно, с циклом поддержки в 10, иногда 20 лет) — так и будут делать новые бессмысленные версии, на каждом шаге ломая запуск предыдущих программ. Серьезно, в Ubuntu 22 поломали запуск AppImage, без установки fuse2 не пойдет. Сколько пользователей вобъет в консоли sudo apt-get install libfuse2? Подсказка: 0.
NTFS (ред.)
0
Разработчики Android поняли (го срач «андроид не линукс»)
andreymal
0
Ты не задумывался, почему на линуксе проблемы с этим у одного тебя?
И при выходе очередной XYZBuntu версии 12.345 добавлять новый билд?
Нет, конечно. Просто не требовать какую-то уникальную версию библиотеки (как часто поступают виндовые программы, из-за чего, если «заботливый» разраб не положил полгигабайта нужных библиотек к стокилобайтному экзешнику, разыскивать нужную либу нужной версии приходится очень долго по всему инету), а использовать нормально документированное API, которое, как правило, в важных библиотеках меняют без обратной совместимости крайне редко, и поэтому в большинстве дистрибов всегда есть к чему подлинковаться, если прога не дестяилетней давности.
у меня программы, собранные для Windows 98, с некоторыми оговорками запускаются и работают на Windows 10
Во-первых, без библиотек у тебя вообще ничего не запустится на винде, а на линуксе — скорее всего запустится (а если и нет, apt/yum всегда придут на помощь). А во-вторых, в этих оговорках и проблема. Если такая оговорка вылезла и сломала что-то, на винде ты не сделаешь ничего. А на линуксе — если из коробки не работает, пересобрал тремя командами под свой дистрибутив — и в 99% случаев всё заработало.
сделав виртуальный RW-FS в Program Files, из уважения к своим пользователям
Лучше бы она не делала. Я из-за этого пару дней в своё время разбирался, почему у меня под семёркой не работает Cool Edit Pro, причём никаких логов, ничего — а оказывается, он писал временный файл в свой рабочий каталог, а потом его пытался читать, и вот запись проходила, вроде бы, нормально, а потом при поытке чтения файла прога не видела его и крашилась. Вот если б винда сразу спросила «тут прога хочет что-то записать, разрешить?» или хотя бы выдала ошибку «permission denied when writing...» — то я бы хотя бы сразу понял в чём дело. А без этого пришлось ковырять это монитором сисколлов.
с циклом поддержки в 10, иногда 20 лет
Можно не надо, а? Ещё скажи, что в современных операционках нужно держать qt3 и библиотеки из KDE 3? Нет, спасибо, мусор иногда бывает нужно выбрасывать. А для ретрокомпьютинга есть образы chroot.
Собственно, в том числе из-за попытки (часто неудачной) в обратную совместимость винда и представляет архитектурно такого кадавра, как сейчас.
поломали запуск AppImage, без установки fuse2 не пойдет
Если пользователь настолько туп, что не может вбить команду, которую притом ему чуть ли не прямо в консоль сказали — то и правда, линукс не для него. Пусть сидит на своей винде и не требует превратить линукс в операционку для домохозяек (на которой, к примеру, собрать рандомный проект с нуля, особенно с qt и прочими подобными вещами — мучение на полдня, в отличие от однострочника на баше в линуксе).
makise_homura (ред.)
0
Ты не задумывался, почему на линуксе проблемы с этим у одного тебя?
Проблемы-то у всех, просто одни ноют не так громко и пытаются превозмогать как могут, а другие кладут болт и говорят «вот вам исходники, собирайте сами» (но это не всегда заметно, потому что популярный софт собирают мейнтейнеры дистрибутивов)
мусор иногда бывает нужно выбрасывать
Поэтому доля линуксов на десктопе и болтается на уровне пары процентов)
andreymal
0
Проблемы-то у всех
Как минимум у меня проблем с этим нет. У многих адекватных (читай набравшихся хотя бы начального опыта работы) линуксоводов — тоже.
Да, GNU/Linux — не такая ось, на которой можно удобно сидеть, будучи дебилом (на винде можно), но в последнее время мне кажется, что это и хорошо — по крайней мере очень многие вещи в ней сделаны логично, а не так, как будет удобнее умственно отсталым (зато при этом оно будет приносить кучу проблем павер-юзерам).
Поэтому доля линуксов на десктопе и болтается на уровне пары процентов)
Как что-то плохое) У линукса нет цели собрать максимальную долю рынка же.
makise_homura (ред.)
0
Как минимум у меня проблем с этим нет.
Ты просто отказываешься их признавать)
нормально документированное API, которое, как правило, в важных библиотеках меняют без обратной совместимости крайне редко
Вот это откровенно ложное утверждение, например. Про libFLAC в соседнем посте я уже упоминал, про Qt3 упоминал уже ты, а ещё к примеру какой-нибудь Python в каждой новой минорной версии выпиливает какой-нибудь старый API, из-за чего завести старые Python-программы в новых линуксах как минимум нетривиально
andreymal (ред.)
0
Ты просто отказываешься их признавать)
Терминальный аргумент защщитан)
Вот это откровенно ложное утверждение, например.
Ну, я ж не сказал «всегда», а сказал «как правило».
Про libFLAC в соседнем посте я уже упоминал
А что там с ним? Я, вероятно, не дочитал пока дотуда.
про Qt3 упоминал уже ты
Что именно я упоминал? Что его наконец-то выпилили из OSL? Так давно пора было, Qt4 стоило бы если не сейчас, то в скором времени в ту же топку, на самом деле. В 2023 юзать что-то на Qt3, если это не abandonware, для которого скорее всего нужна ещё тонна старья и проще обойтись докером — уже даже не смешно.
какой-нибудь Python в каждой новой минорной версии выпиливает какой-нибудь старый API
Это не те API, которые до выпила по несколько лет висят в статусе deprecated, но всякие ССЗБ всё равно их используют по принципу «ну и что, что deprecated, у меня работает, значит буду юзать»?
завести старые Python-программы в новых линуксах как минимум нетривиально
Ну у меня что-то, что не совсем прям старьё, работало обычно вполне нормально, то есть я не помню того, что бы пришлось прям переделывать из-за того, что у меня, допустим, питон не 3.7, а 3.10.
Ну а для ретрокомпьютинга, повторюсь, есть чруты, докер-образы, да хоть виртуалки в конце концов (у винды есть только последнее, к слову).
makise_homura
0
А что там с ним?
libFLAC.so.8 → libFLAC.so.12, хрен знает почему, но этого достаточно, чтобы зависящие от него программы перестали запускаться
В 2023 юзать что-то на Qt3, если это не abandonware, для которого скорее всего нужна ещё тонна старья и проще обойтись докером — уже даже не смешно.
Совместимость со старым софтом сломана? Сломана. Ну вот и всё, проблема объективно есть, а остальной твой флуд про «abandonware» и «даже не смешно» не имеет никакого значения
проще обойтись докером
То есть заставлять пользователя перодлиться как минимум чтобы установить этот самый докер
Это не те API, которые до выпила по несколько лет висят в статусе deprecated, но всякие ССЗБ всё равно их используют по принципу «ну и что, что deprecated, у меня работает, значит буду юзать»?
Повторяю ещё раз: совместимость со старым софтом сломана? Сломана. Ну вот и всё, проблема объективно есть, а остальной твой флуд про «ну и что» не имеет никакого значения. Может, автор вообще давно умер и программа больше никогда не получит обновлений, например? А, ну да, нужно же обязательно с докером попердолиться
Ну а для ретрокомпьютинга, повторюсь, есть чруты
Пердолинг
докер-образы
Пердолинг
да хоть виртуалки в конце концов
Пердолинг
(у винды есть только последнее, к слову)
Программа, написанная под Windows 95, с 99% вероятностью заработает в Windows 11 без всяких чрутов, докеров, виртуалок и прочего пердолинга
andreymal
0
libFLAC.so.8 → libFLAC.so.12, хрен знает почему
Хм, не значит ли это, что это как раз момент замены libflac8 на libflac12 (а значит, libflac8, если в нём напрямую не прописан conflicts/replaces с libflac12 (что обычно является плохим тоном), вполне можно оставить)?
Совместимость со старым софтом сломана? Сломана.
Ну вот в том-то и суть, что не надо тащить динозавров из прошлого ради примерно 0 софтин, которые могут из тех времён потребоваться пользователю. Винда вот тащит, отсюда все её сопустствующие болезни (и то в итоге не то, чтобы совместимость идеально сохраняется). Дропать обратную совместимость, когда это разумно — как ни странно, разумно.
Может, автор вообще давно умер и программа больше никогда не получит обновлений, например?
Если эта программа нужна более чем 3,5 анонимусам и более новых альтернатив нет — то как правило, её уже кто-то запускал, а значит, упаковал в тот же самый AppImage или докер.
А, ну да, нужно же обязательно с докером попердолиться
Ну да, домохозяйкам это будет сложно, тут не поспоришь. Хорошо, что GNU/Linux себя так не позиционирует.
Программа, написанная под Windows 95, с 99% вероятностью заработает в Windows 11 без всяких чрутов, докеров, виртуалок и прочего пердолинга
Ага, ага. Удачи запустить хотя бы в семёрке Cool Edit Pro. Не, я запустил, но пришлось посидеть половить сисколлы, чтобы понять, из-за чего он на XP-шке работал чудесно, а на семёрке тихо крашился (а ещё на винде нет логов и strace из коробки). Нет, понятно, что это тот самый 1% (хотя по моим ощущениям это не 1%, а где-то 5% минимум), но всё же, когда под линуксом есть универсальное решение, которое будет работать всегда (если оно работало в конкретном дистрибе и не делало никакой дичи уровня ходить напрямую в ядро по номерам сисколлов, то будет работать и в его чруте/докере), а под виндой каждый такой случай надо тыкать палочкой с невоспроизводимым результатом — это ну такое себе.

P.S. Я не говорю, что винда мастдай и всё такое (да блин, я сейчас вот этот вот коммент как раз пишу с винды, лол). Просто после того, как я нормально пощупал GNU/Linux, я начал понимать, что некоторые вещи в нём сделаны на порядок удобнее (и чисто по ощущениям — в среднем удобных вещей по сравнению с виндой в нём больше, чем удобных вещей в винде по сравнению с линуксами), а многие проблемы решать куда проще и надёжнее (а некоторые другие проблемы не возникают вообще). Да, он требует не быть домохозяйкой и уметь учиться, но лол, когда ты нормальный паверюзер, этот аргумент не является препятствием. И попытки превратить по каким-то параметрам линукс в винду (а-ля «я не хочу паковать полмегабайтный deb для популярных версий ОС, я лучше сделаю 500-мегабайтный AppImage и мне плевать, что пользователь потом хрен найдёт сохранёнки, доки и всё остальное») — редко являются чем-то объективно хорошим.
makise_homura
0
libflac8 [...] вполне можно оставить
Но среднестатистические Linux-дистрибутивы не оставляют, и программа перестаёт запускаться. Если бы реально оставляли — возможно, проблем было бы сильно меньше (и Qt3 тоже можно было бы оставить тогда уж), а сейчас получается, что сделать 500-мегабайтный AppImage со всеми нужными libflac8 внутри это единственное рабочее решение (ну или заставлять домохозяек пердолиться с докером)
andreymal
0
это единственное рабочее решение

Еще есть snap, но он требует установленных служб. AppImage работает сам по себе, нужно только обеспечить достаточно места в ОЗУ и установить права на запуск файла.
NTFS
0
Емнип, если ты делаешь upgrade, а не dist-upgrade (а это логично делать, если у тебя там есть какие-то пакеты, зависящие от старых версий других пакетов), то у тебя всё, что нужно, останется.
сделать 500-мегабайтный AppImage со всеми нужными libflac8 внутри это единственное рабочее решение
Как бы есть решение куда проще — слинковать две версии для libflac8 и libflac12 и ставить нужную версию в нужную операционку. Ну как делают же билды под XP и семёрку, или под семёрку и десятку.
makise_homura
0
Проблема не в upgrade или dist-upgrade, а в том, что в убунте 22.04 находится libFLAC.so.8, а в 23.04 уже libFLAC.so.12 — и сделать deb-пакет под одновременно обе убунты уже не получится

слинковать две версии
Ну то есть опять пердолинг) Это явно не проще чем упаковать AppImage с одним конкретным известным и протестированным libFLAC
andreymal
0
deb-пакет под одновременно обе убунты
А зачем?
Почему два билда под XP и семёрку — норм, а два билда под убунты 18-22 и под 23+ — нет?
не проще чем упаковать AppImage с одним конкретным известным и протестированным libFLAC
Если уж так делать, почему бы libFLAC не подлинковать статически? Бинарник явно получится меньше, чем AppImage. А то блин все девелоперы делают, как им проще, не пытаясь даже подумать о сборке в статике, а потом мы имеем гитарные тюнеры по 500 МБ, калькуляторы по 200 МБ и нотепады по 300 МБ. В которых, к слову, внутри вставлены одни и те же библиотеки.
makise_homura (ред.)
0
два билда под XP и семёрку — норм
Это где такое? Все программы, которые я использую, предоставляют ровно один установщик, работающий на всём от примерно XP до примерно 11 (впрочем, сколько билдов лежит внутри этих установщиков, я не считал)
два билда под убунты 18-22 и под 23+ — нет
Потому что один билд AppImage проще чем стопицот билдов под все актуальные убунты и прочие дебианы)
почему бы libFLAC не подлинковать статически?
1) Кажется, в SFML тупо нет такой опции (или я плохо смотрел)
2) Это не всегда технически возможно
3) Динамическая линковка теоретически позволяет юзеру (который не домохозяйка, но всё-таки) подменить библиотеку на более новую/пропатченную с исправленными багами/уязвимостями, ради чего, например, разработчики SDL городят какие-то странные костыли
andreymal
0
Кажется, в SFML тупо нет такой опции

Увы, нет. Саму libsfml* еще можно, зависимости уже нет. И опять же это не спасает от не той версии libstdc++, потому что она нужна не только программе, но и системе.
NTFS
0
зависимости уже нет
Какие именно?
не той версии libstdc++
Емнип, она вполне нормально версионирована и подцепить «не ту версию» нереально.
makise_homura
0
Какие именно?

Те же libFLAC, libpng, libGLU, freetype и десяток прочих. Их приходится тащить с собой в сборку.
Емнип, она вполне нормально версионирована и подцепить «не ту версию» нереально.

Там проблема в том, что если я линкую со слишком новой версией, то не будет запускаться на старых ОС, а если со слишком старой, то на новой не заведется работа с видеодрайвером.
Золотая середина мною найдена экспериментально, но всё еще не идеал.
NTFS
0
Хм, а при чём тут видеодрайвер вообще, можно поподробнее?
andreymal
0
Программа при старте брала старую версию libstdc++, а она нужна не только для SFML, но и для общения с системой. И выкидывало меня с сообщением «видеодрайвер не смог, дайте ему правильную либу».
Потом я уже почитал доки, и понял, что включать libc и libstdc+ в AppImage — крайне не рекомендуется. Официальная практика — собирать AppImage на как можно более старой версии ОС с как можно более старыми libc и libstdc++
NTFS (ред.)
0
включать libc и libstdc+ в AppImage
Блин, если тебе нужно вот прям такой изврат, то может, проще вообще докер?
makise_homura
0
libpng точно умеет линковаться статически. Про другие не пробовал, но подозреваю, что во многих случаях их не так много несовместимых версий, особенно в современных дистрах.
если я линкую со слишком новой версией, то не будет запускаться на старых ОС
Так значит и наяиг такие старые ОС. Пусть пользователь сам собирает, если ему уж так нравится старина (напомню, под линуксом регулярные обновления дистриба — совсем не такая проблема, как на винде).
makise_homura
0
Это где такое?
Ну сейчас уже такое сложно встретить — XP давно померла, но лет пять назад такое было и у Firefox, и у Python (а сейчас у Python такое под семёрку и десятку), и у Sony Vegas.
Потому что один билд AppImage проще чем стопицот билдов под все актуальные убунты и прочие дебианы)
Ага, проще для разработчика. Зато у пользователя потом начинается карусель, ага.
Кажется, в SFML тупо нет такой опции (или я плохо смотрел)
Погоди, ты линкуешь libFLAC со своей прогой, а не с SFML.
Это не всегда технически возможно
Ну, с rust-ом вечно какие-то проблемы (и не только с линковкой), тут вполне ожидаемо. Подозреваю, что с AppImage там проблем будет не меньше.
Динамическая линковка теоретически позволяет юзеру (который не домохозяйка, но всё-таки) подменить библиотеку на более новую/пропатченную с исправленными багами/уязвимостями
Мы же как раз решали только что противоположную задачу — чтобы пользователю, наоборот, ничего не приходилось ставить?
В AppImage он тоже полезет, чтобы библиотеку подменять?

Короче, я вижу, мы тут топчемся на одном месте и фактически просто перебрасываемся минусами обоих подходов. На всякий случай, я хочу пояснить: я не говорю, что AppImage — это зло, которое надо выпилить и больше не вспоминать. Я хочу сказать то, что это инструмент, который полезен в строго ограниченном количестве случаев (проприетарка, abandonware, штуки, не допускающие статическую линковку, багованные проги, не умеющие в версионирование и т.п.); это хорошая крестовая отвёртка, но это не значит, что этой отвёрткой стоит завинчивать шлицевые саморезы, и уж тем более ей не стоит забивать гвозди. Использовать AppImage без нужного повода — это сводить преимущества GNU/Linux перед виндой в удобном версионировании, системе пакетов, удобной раскладке бинарников и либ к нулю и зря тратить ресурсы пользователя.
makise_homura
0
Использовать AppImage без нужного повода — это сводить преимущества GNU/Linux перед виндой в удобном версионировании, системе пакетов, удобной раскладке бинарников и либ к нулю и зря тратить ресурсы пользователя.

Второй раз приглашаю тебя показать мастер-класс.
Исходники игры у тебя перед глазами на гитхабе.
Сделай мне хорошо, чтобы я мог отдать один файл игрокам, и он установился/запустился хотя бы на моих двадцати тестовых дистрибутивах и версиях оных.
Но так, чтобы к этому файлу не прилагалась инструкция с кучей слов типа apt-get и yum update, а как в Винде — скачал, запустил, играешь. Доступно для простого понилюба-игрока, которых я понемногу пытаюсь привлечь к моим работам.

Ты придешь либо к AppImage/snap, либо к инсталлятору от GOG.
NTFS (ред.)
0
чтобы я мог отдать один файл игрокам
Ты можешь отдать им, для примера, исходники и дать запустить однострочник, который его скомпилит и установит. А для популярных дистрибов (пара последних версий убунты/дебиана — больше не нужно, потому что, как правило, обновление дистриба на новую версию — это одна команда, а не пара дней жёсткого непотребства с компом, как при переустановке винды на новую версию) можно сразу класть готовые дебки. Нет никакой необходимости иметь ограничение в один файл.
на моих двадцати тестовых дистрибутивах
Сколько из них имеют юзерскую базу хотя бы в десяток тысяч пользователей?
чтобы к этому файлу не прилагалась инструкция с кучей слов типа apt-get и yum update, а как в Винде — скачал, запустил, играешь
Для такого некоторые софтины распространяются в .sh-файлах (впрочем, это тоже часто криво — если операционка чем-то отличается, они могут поломать что-то). Но удобнее просто линковать статически всё, что можно, а что нельзя — то, как правило, на системе уже есть.
makise_homura
0
Ты можешь отдать им, для примера, исходники и дать запустить однострочник, который его скомпилит и установит.

Всё ясно, вопросов больше не имею. Я ясно написал
Доступно для простого понилюба-игрока
NTFS (ред.)
0
Сколько из них имеют юзерскую базу хотя бы в десяток тысяч пользователей?

Вот мой чек-лист. Всё вполне мейнстримно, кроме разве что Slax.

Список дистров
NTFS
0
Ubuntu<20? Debian<10? Серьёзно?
Ты где такие древности откапываешь? Кто-то реально сейчас на этом еще сидит и надеется, что для него лично кто-то что-то будет собирать в 2023? О.о
Про минт и федору не знаю, но думаю, что там такая же ситуация.
Касательно дебиана и убунты, кмк, достаточно ориентироваться на 20/22 и 10/11 соответственно. Остальное — уже древности. Если кто-то в течение пары лет не может сделать apt dist-upgrade — ССЗБ.
makise_homura
0
Остальное — уже древности

Пять лет — это не древность, это вполне себе рабочая система, которую человек настроил и работает с ней. Каждый год менять дистрибутив — не все желают.
NTFS
0
Каждый год менять дистрибутив — не все желают.
И зря. Потому что под линуксом это куда более лёгкая и неразрушающия операция, чем, например, обновление винды. У меня вот на одной машине убунта с 16 до 22 постепенно апгрейдилась я даже сам не особо замечал как — ну просто раз в полгода как было полчасика лишних, я пускал apt dist-upgrade или do-release-upgrade, пока занимался своими делами. Сложности (в плане того, что надо было ребутаться, например) были только один раз при перелезании с 20 на 22, вроде — и это когда, к примеру, минорный апгрейд всего лишь ядра перезагрузки (пусть и можно через kexec) требует в любом случае (а если у тебя ещё и модули под dkms, то их тоже надо пересобирать под новое ядро, ага).

А теперь я вспоминаю, что такое переустановка винды — когда тебе нужно КАЖДУЮ из полусотни установленных программ переставлять и конфигурировать по-новой, и это эпопея, затягивающаяся на несколько дней. Так что винду менять можно и раз в пять лет (а то и больше). А вот ту же убунту новую натягивать проблем по сравнению с виндой вообще ноль.
makise_homura
0
ОС — это кнопки для запуска программ, если она работает и программы работают, зачем её обновлять? Нет, тестирование на всех версиях — это важно, но для этого виртуалки и отдельные ПК, если нужно железо.
NTFS
0
если она работает и программы работают, зачем её обновлять?
Вот именно за этим и обновлять, потому что не все новые программы работают, а некоторые, которые работают, работают неправильно и могут иметь уязвимости.
makise_homura
0
не все новые программы работают
Это проблема не пользователя и не ОС, а программиста, который не осилил упаковать свою программу в AppImage )))
andreymal
0
По такой логике надо всё паковать в AppImage, но можно не надо? Кажется, держать систему более-менее обновлённой ничем не хуже засорять её гигантскими сборками из мусора и дублирующихся в каждом паке библиотек…
makise_homura
0
По такой логике надо всё паковать в AppImage

До тех пор, пока разработчики дистрибутива не включили твой проект в репозиторий — да, надо.
NTFS
0
Только ради того, чтобы никогда не делать apt upgrade?
makise_homura
0
Так-то upgrade чего-либо без конкретной цели тоже не полезен. Работает — не трогай.
NTFS
0
Если бы мы во всём придерживались логики «работает — не трогай», мы бы до сих пор бегали в шкурах с каменными топорами.
makise_homura
0
Как что-то плохое. По крайней мере, не было проблем со сборкой софта под Linux.
NTFS
0
Ты сам эти проблемы выше по треду озвучивал, когда ты забиваешь на прописывание в CMakeLists требуемой тебе версии.
makise_homura
0
Я всё равно считаю, что перекладывать сборку программ на пользователя — противоестественно.
NTFS
0
А я считаю, что противоестественно считать пользователя дебилом.
Особенно пользователя линукса, в котором многие программы ставятся именно с помощью сборки (многие из проектов на гитхабе не имеют даже бинарных релизов).
makise_homura
0
в котором многие программы ставятся именно с помощью сборки

Многие — это сколько? И сколько из них носит именно прикладной характер для массового пользователя?
За последние пять лет я ставил под Linux всего две программы из исходников — компилятор для PDP-11 и эмулятор БК-0010. Уровень потребности в них — примерно сотня человек на всю страну :-)
NTFS
0
Многие — это сколько?
Почти все, которых нет в дистрибутиве.
И сколько из них носит именно прикладной характер для массового пользователя?
Для массового пользователя линукса — достаточно много (разные тулзы, новые версии систем сборки, бенчмарки всякие, эмуляторы, следилки за системой и т.п.)
За последние пять лет я ставил под Linux всего две программы из исходников — компилятор для PDP-11 и эмулятор БК-0010.
И сколько ещё прог ты ставил не из репы дистрибутива?
makise_homura
0
И сколько ещё прог ты ставил не из репы дистрибутива?

Много (с полсотни), но всё они были в том или ином бинарном виде.

разные тулзы, новые версии систем сборки, бенчмарки всякие, эмуляторы, следилки за системой

То есть, инструменты для профессионалов. Не игры.
NTFS (ред.)
0
Много (с полсотни), но всё они были в том или ином бинарном виде.
Ну, могу тебе только посочувствовать. Теперь понятно, откуда у тебя все эти проблемы с библиотеками, rpath и всё такое.
Не игры.
Taisei Project, GZDoom и да, TrixieDiamonds32 — игры; xnp2, ScummVM, Wine, DOSBox, DOSBox-X — тулзы, которые помогают запускать игры. Их я тоже собирал и никаких проблем с ними не испытал (ну вернее, на эльбрусе — испытал, но там скорее вопрос компилятора, и соответствующие правки, чтобы это собиралось и там из коробки — в апстриме).
makise_homura
0
Taisei Project, GZDoom и да, TrixieDiamonds32 — игры; xnp2, ScummVM, Wine, DOSBox, DOSBox-X

В этом списке, могу предположить, только Taisei Project было необходимо собирать, остальное уже есть в бинарном виде.

То есть ты мог собрать, но по собственному желанию. Что возвращает нас к моему тезису — игры уже распространяются в бинарном виде, чтобы игроку было проще и не нужно было разбираться с CMake.

UPD: Только что глянул Taisei Project — есть сборки во многих репах, есть статичный билд для двух версий libc, есть flatpak. Это больше, чем у меня.

Аргумент не засчитан, давай другие игры.
NTFS (ред.)
0
Нет, xnp2 и ScummVM точно надо было собирать, у них в репах нет бинарей. Про остальное не помню, но вроде как DOSBox-X тоже.
makise_homura
0
ScummVM

www.scummvm.org/downloads/

Десятки версий для Linux + универсальные flatpak и snap.

Я понимаю, что тебе нравится собирать софт самому и не осуждаю, но…
NTFS (ред.)
0
Вот ещё я буду ходить по всяким сайтам искать бинари. Если там всё есть, почему их нет на гитхабе?
makise_homura
0
по всяким сайтам

Вообще, это официальный сайт движка, указанный в Википедии.
А по гитхабу, есть разные подходы — я для себя решил, что релизы держу там же, но многие считают, что это место только для исходников, а релизы постить нужно на сайте проекта.
NTFS
0
Вообще, это официальный сайт движка, указанный в Википедии.
И зачем мне лезть в википедию, а потом на какой-то сайт оттуда, если я знаю, что всегда могу зайти на гитхаб?
makise_homura
0
на какой-то сайт оттуда

Да почему на какой-то? На официальный сайт проекта. Я же не на какую файлопомойку отправляю.
Получение программ с сайта проекта — нормальный, штатный способ установки.
NTFS
0
Получение программ с сайта проекта — нормальный, штатный способ установки.
Почему?
Почему официальный гитхаб хуже, чем официальный сайт? Тем более этот сайт ещё надо искать.
Ставить с сайта — это как раз виндовый подход, когда каждую прогу надо ручками искать в инете, ага.
makise_homura
0
Почему официальный гитхаб хуже, чем официальный сайт? Тем более этот сайт ещё надо искать.

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

когда каждую прогу надо ручками искать в инете, ага.

Офигенно тяжкий поиск, ага. Первая же ссылка + проверить по wiki для 100% гарантии.
NTFS
+1
сайт — это представительство?
Кто такое сказал?
К слову, у многих проектов-то и сайта нет (в основном библиотеки всякие и тулзы). Мне обязательно надо надеяться, что у всего есть сайт, или проще сразу на гитхаб?
Первая же ссылка + проверить по wiki для 100% гарантии.
На один переход больше, чем сразу на гитхабе. К тому же, даже если я найду сайт, где гарантия, что там будет нужная мне сборка и она не будет бомбить с не тех версий библиотек?
makise_homura
0
в основном библиотеки всякие и тулзы

Опять инструменты для профессионалов.

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

Какие только причины не придумаешь, чтобы не соглашаться с тезисом «для пользовательских прикладных приложений или игр бинарная сборка — естественный формат распространения».
NTFS
0
Опять инструменты для профессионалов.
То есть фактически ты подтверждаешь, что сайт особо не нужен, особенно если это «инструменты для профессионалов».
«для пользовательских прикладных приложений или игр бинарная сборка — естественный формат распространения».
Да потому что это не так. Под виндой или в репах это так, но под линуксом никаких проблем нет собирать многие вещи из исходников.
makise_homura
0
Да потому что это не так

Приведи мне хотя бы три прикладные приложения уровня игр или какого текстового/звукового редактора (да хотя бы калькулятора), которые отвечали бы двум условиям:
1) Не предоставляли бинарные дистрибутивы для Linux ни в каком виде
2) Предоставляли сорцы и инструкцию по сборке со словами «так вы получите нашу программу под Linux, потом что»

никаких проблем нет собирать многие вещи из исходников.

Я уверен, что ничего такого не найдется. Потому что разработчики (даже любители) не идиоты, и прекрасно понимают, что если пользователю придется делать что-то сложнее скачивания и запуска с установкой 755 — он просто не станет использовать программу, потому что аналогов у каждого софта — тысячи.
NTFS (ред.)
0
которые отвечали бы двум условиям
У тебя слишком жёсткие критерии. Если у некоторых штук и есть бинари, то это не значит, что это их «естественный» формат распространения. А так вот тот же xnp2, например — инструкция по сборке есть, бинарей я нигде не нашёл.
да хотя бы калькулятора
Тот же GNU bc — он распространяется в исходниках, другое дело, что он обычно в большинстве дистров уже есть в репах.
если пользователю придется делать что-то сложнее скачивания и запуска с установкой 755 — он просто не станет использовать программу
Да перестань ты уже считать пользователей линукса такими дебилами. Если для винды это может быть в среднем и так, то для линукса — нет. Почему для тебя сделать wget + sudo cp + sudo chmod столь принципиально проще, чем git clone + cmake + make + sudo make install?
И да, wget + sudo cp + sudo chmod тебе не положит куда нужно, допустим, те же маны.
потому что аналогов у каждого софта — тысячи.
Категорически и очевидно неверное утверждение. Даже столь часто юзаемой штуки, как браузер, найдётся от силы 3-4 адекватных аналога (при этом каждый со своими «хитростями»), а уж если мы про что-то менее популярное — то там, как правило, альтернатив часто нет вообще. Или ты знаешь адекватные альтернативы ffmpeg, yt-dlp (нет, youtube-dl уже сдох), python, gparted и т.п.?
makise_homura
0
xnp2


Если это
Xnp2 is a port for UNIX with X11 of «Neko Project II» PC-9801 emulator.

то он занимает несколько пограничное положение между миром пользовательского софта и профессионального — всякие эмуляторы обычно используют люди, знающие, что к чему.
Для обычных же игроков хорошей практикой является зашивать эмулятор в дистрибутив, что я сделал, например, с 16-битной версией игры — для пользователя запуск DOSBox проходит прозрачно через ярлык и ему не нужно долбаться с mount/cyrkey/uniscr.

Почему для тебя сделать wget + sudo cp + sudo chmod столь принципиально проще, чем git clone + cmake + make + sudo make install?

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

браузер

Уже давно не софт, это операционная система в операционной системе, и мы говорим «браузер», подразумеваем «Chrome» для пользователей и IE/Edge для корпоративного пользователя.

ffmpeg, yt-dlp (нет, youtube-dl уже сдох), python, gparted и т.п.?

Зачем ты мне опять суешь софт для профессионалов? Но примечательно, что всё перечисленное распространяется в бинарниках, а для последнего аж сделали целый livecd.
NTFS (ред.)
0
всякие эмуляторы обычно используют люди, знающие, что к чему.
Как и GNU/Linux в целом.
хорошей практикой является зашивать эмулятор в дистрибутив
Мне что, к каждой hdi-шке с первой по пятой тохи тащить с собой ещё целый xnp2/anex98/dosbox-x, да ещё и для каждой игрухи его настраивать по-новой? Почему ты отказываешь мне в праве просто иметь эмулятор в системе, настроенный так, как мне нужно и запускать через него всё, что мне хочется?
Ты ещё скажи, что к каждому распространяемому PWAD для дума надо целиком этот дум класть. Ага, к PWAD в 100 килобайт ещё 20 мегабайт самого дума, а ещё потом придётся этот мусор вычищать, если ты хочешь запустить его не через тормозной досбокс, а через, например, GZDoom или что-то подобное.
Игра должна запускаться прямо из каталога загрузки
Скажи это 99% игр, которые даже на винде требуют установки.
подразумеваем «Chrome» для пользователей и IE/Edge для корпоративного пользователя.
И опять мимо. Во многих дистрибутивах Linux основной браузер — это Firefox, и если ты считаешь, что браузер — это Chrome/Edge (кстати, а с чего это ты забыл Safari?), то зачем же ты делаешь вообще билды под линукс — ведь по такой логике в мире только одна операционка, и это винда?
Кроме того, во многих (хоть и не во всех) подсчётах (например) Firefox вполне себе обгоняет Edge (хоть и идёт с ним ровненько).
Зачем ты мне опять суешь софт для профессионалов?
Случшай, если ты считаешь ffmpeg, yt-dlp и python софтом для профессионалов, то давай просто условимся, что на линуксе все пользователи — профессионалы.
(Забавно, кстати, что без этих трёх софтин даже на винде жить тяжело: задачи типа «скачать видос с ютубчика и пожать его так, чтобы он влез в ограничение дискорда» без yt-dlp и ffmpeg удобно не выполнить).
Но примечательно, что всё перечисленное распространяется в бинарниках
Во-первых нет по очевидным причинам — yt-dlp питоновская софтина и по определению не может иметь бинарника; во-вторых мы не про распространение в бинарниках, а про наличие у этого софта аналогов, так что не переводи тему.
makise_homura
0
Скажи это 99% игр, которые даже на винде требуют установки.

Я имею в виду установку игры, когда нужно просто нажать «Согласен» и «Да».

Во многих дистрибутивах Linux основной браузер — это Firefox

Линукс на десктопе это 2%, следовательно, можно выкидывать его из построения.

то зачем же ты делаешь вообще билды под линукс

Забавы ради. Я понимаю, что число игроков под Linux пропорционально меньше, чем под Windows. Куда полезней будет под Mac сделать, это вторая десктопная ОС.

Но и там я не буду заставлять людей лезть в консоль.

Почему ты отказываешь мне в праве

Святая Селестия, ты можешь делать что угодно, я буду делать что угодно. Моя задача — чтобы те 2% игроков, которые захотят позабавиться с игрой на Линуксе, сделали это без слез, боли и запросов в Яндекс «как найти lixxxx.x.x»?

Предмет дискуссии в том, является ли мой путь более правильным, чем дать пользователю исходник и заставить его становиться девопсом самому себе.
NTFS (ред.)
0
Я имею в виду установку игры, когда нужно просто нажать «Согласен» и «Да».
А потом разбираться, например, в чём проблема, потому что ты скачал не дистрибутив (он вообще без хаков не скачивается), а загрузчик, а загрузчик, к примеру, не умеет работать через прокси, даже если у тебя переменная https_proxy установлена. И прочие подобные косяки, которые хрен знает, как решать.
Совсем не каждая установка «одной кнопочкой» успешна.
Так что даже если считать, что «установщик должен запускаться из каталога загрузки и в итоге ты должен получать готовую к запуску игру», это тоже не всегда выполняется.
Линукс на десктопе это 2%, следовательно, можно выкидывать его из построения.
Так ты-то не выкидываешь. Ну и как бы 2% — это тоже немало, если что.
Забавы ради.
А, не, если твоя основная цель — научиться собирать AppImage, тогда ничего против не имею. Но тогда к чему была вся эта философия «Unix-way не нужен, под линуксом всё должно быть как на винде и пользователи тоже должны быть дебилами»?
заставлять людей лезть в консоль.
Напомню, что через консоль даже в винде некоторые вещи сделать намного проще, чем из GUI. Тот же yt-dlp, к примеру. Так что консоль — это полезный инструмент, и если домохозяйке под виндой не уметь в ней работать простительно, потому что она просто смирится с невозможностью что-то сделать, когда возможность есть, просто надо почитать, как (да, такие люди, к примеру, свято уверены, что фотки с телефона только на нём и могут храниться и такие «у меня сломался экран на телефоне, всё, все фотки погибли», ты такой цепляешь кабель, сливаешь все по MTP и они с глазами курглее чем луна в полнолуние такие «как ты это сделал, ты чё волшебник???7?7семь»), то пользователь линукса уже обязан это уметь. Иначе пусть не мучает себя и других и идёт обратно на винду.
makise_homura
0
то пользователь линукса уже обязан это уметь

Мне кажется, проблема дискуссии в том, что мы по-разному понимаем слова «пользователь» и «Линукс». В твоём понимании Линукс — это такой продвинутый профессиональный инструмент, а «пользователь» — это очень опытный эникейщик, который может и диск разметить, и пакеты доставить и даже простую программку на баше сделать.

В моём понимании «Линукс» — это операционная система, нужная пользователю только для запуска программ, а сам «пользователь» — это человек, который запускает программы и делает в них свою основную работу — например, набирает письма «Дорогая Принцесса Селестия» или пишет посты на Табуне.

Так?

Твой пользователь с телефоном, кстати, ничего ужасного не делал — в отличии от Линукс и Windows, на телефоне понятие «файловой системы» неочевидно, и действительно, пользователю не нужно. Работа с ФС телефона — это уже уровень мастера по ремонту.
NTFS
0
В твоём понимании Линукс — это такой продвинутый профессиональный инструмент, а «пользователь» — это очень опытный эникейщик, который может и диск разметить, и пакеты доставить и даже простую программку на баше сделать.

В моём понимании «Линукс» — это операционная система, нужная пользователю только для запуска программ, а сам «пользователь» — это человек, который запускает программы и делает в них свою основную работу — например, набирает письма «Дорогая Принцесса Селестия» или пишет посты на Табуне.
А по факту реальность (как минимум статистика тех пользователей линукса, с которыми я контактировал) посередине. В целом да, пользователь линукса — это человек, который запускает программы и делает в них свою основную работу — например, набирает письма «Дорогая Принцесса Селестия» или пишет посты на Табуне, но при этом либо может и диск разметить, и пакеты доставить и даже простую программку на баше сделать, либо хотя бы знает, что это возможно и может нагуглить или спросить знакомого, как (именно способность учиться отличает пользователей линукса от пользователей винды, и это крайне заметно, когда ты, например, собеседуешь студентов на работу и по тому, как они дальше работают).
Если сидеть под линуксом с уровнем среднего пользователя винды — это и самому не использовать 90% возможностей операционки (т.е. считать невозможным то, что вполне можно было бы сделать), и мучиться при этом с непривычной архитектурой системы.
Работа с ФС телефона — это уже уровень мастера по ремонту.
Вот только давай опять не надо. Как по мне, это одна из основных вещей, которые должен делать телефон, на уровне «открыть браузер» или «считать QR-код», и все должны это уметь. Ну камон, не уметь скинуть фотки с телефона на комп, ну дикость же! И что, получается, то, что я каждый день-два скидываю себе на телефон fb2-шки с понификшена и фикбука, чтобы почитать их по пути на работу — это я его ремонтирую что ли?
makise_homura
0
это я его ремонтирую что ли?

Как минимум, показываешь навык высокого владения телефоном, потому что обычный пользователь не факт, что сможет это сделать. Иногда даже недостаточно подключить USB-кабель, еще нужны дрова на устройство. Самсунг, например, более или менее унифицирован, по крайней мере, Win 10 даёт сразу файловую систему. А вот какой Xiaomi не всегда.

Не говоря уже о том, что ты знаешь, где эти фоточки будут (что-то типа /emulated/0/sd/DCIM). Пользователь этого не знает, для него фоточки — это Галерея или ГуглФото.

Говорю же, в телефоне файловая система скрыта от пользователя, и с ней работают либо мастера, либо профи.
NTFS
0
еще нужны дрова на устройство
Я в последние лет, пожалуй, пять точно не видел ни одного девайса на андроиде, которому нужны драйвера.
Пользователь этого не знает
Как правило, когда ты втыкаешь телефон, там не так много каталогов, чтобы среди них не найти тот, в котором фоточки (он, кстати, на всех трёх моих девайсах и называется Photos, а внутри него уже DCIM (у меня почему-то стабильно пустой) и Camera (куда снятые фотки и складываются)).
файловая система скрыта от пользователя, и с ней работают либо мастера, либо профи.
Грустно, когда того, кого раньше называли пользователем, теперь называют профи, а кого раньше называли ламером — теперь называют пользователем.
Всё-таки, ну блин, становиться профи оттого, что, к примеру, просто прочитал инструкцию (не dev manual, а именно пользовательскую) к своему девайсу — это звучит как нонсенс.
makise_homura
0
там не так много каталогов

Нужно догадываться о существовании самого понятия «каталог».

Шутку про «справа диск С, слева диск С, зачем мне два диска С» ты конечно, знаешь.

Потребность в пользователях ПК возросла, планка снизилась. Это норма.
NTFS
0
Нужно догадываться о существовании самого понятия «каталог».
А давай мы не будем поощрять вопиющий ламеризм. Эдак что, через лет десять появятся люди, которые не будут знать, зачем на клавиатуре shift и enter, и это будет ок?
Я вот осознал и ужаснулся, куда катится мир, когда на этой смене в ЛМШ увидел, что есть дети, для которых простейшая задача «набрать номер мамы на кнопочном телефоне и позвонить ей» — невыполнима. И это при том, что кнопочные телефоны ещё не стали совсем уж архаизмом, в конце концов, мы же не о дисковых наземных, а просто о дешёвых мобильниках.
Шутку про «справа диск С, слева диск С, зачем мне два диска С» ты конечно, знаешь.
Проблема в том, что раньше это действительно было шуткой, а сейчас, я боюсь, станет реальностью скоро — и люди действительно, случайно открыв в эксплорере два раза свой диск С:, с одного из них решат всё удалить.
Потребность в пользователях ПК возросла, планка снизилась. Это норма.
Потребность, например, в кардиохирургах или пилотах самолётов с ростом населения Земли тоже возросла, думаю, но что-то мне не хочется думать, что для них теперь планки тоже снижены — особенно настолько, чтобы не знать элементарных вещей.
makise_homura
0
Потребность, например, в кардиохирургах или пилотах самолётов с ростом населения Земли тоже возросла

Не настолько. В 10 раз, может, в 100.
Пользователями ПК же стали практически любые специалисты в любых областях, кроме совсем уже ручного труда типа «бери больше и кидай дальше», и это мы только про использование на работе говорим, не дома.

Снижение логично от массовости, в поддержке тоже. В 2000-м году на работе я обязан был уметь загрузить Windows NT без системного диска, если он снова улетал куда-то, и желательно, не за час, а побыстрее. Сейчас же если я вижу на ноутбуке радующий глаз Winmngr not found, я просто говорю клиенту «везите в сервис, сношайся всё конём». Мне не заплатят за эту работу даже пару тысяч, и мне оно не надо, и никому не надо — заберут ноутбук, выдадут новый по гарантии. Пусть дистрибьютор разбирается, куда этот Winmngr.exe убежал. Не моя забота.

Хотя я всё еще умею, но теперь это просто не требуется.
NTFS (ред.)
0
Пользователями ПК же стали практически любые специалисты в любых областях
Я не считаю пользователем ПК, например, кассира «Пятёрочки», бухгалтера-1С-ника, пользователя банкомата или вендинговой машины, оператора станка с ЧПУ, оператора машины нанесения дорожной разметки, оператора установки магнитно-резонансной томографии, члена обслуживающей команды радиотелескопа, командира расчёта РЛС, пилота SpaceX Dragon — потому что во-первых, то, с чем они взаимодействуют, компьютер не персональный, а во-вторых, поскольку сам этот компьютер, его периферия и программа, которая запущена на нём — это неразделимый программно-аппаратный комплекс, без которого целиком ни один его компонент не имеет смысла. Да, DOOM можно запустить что на компе из асфальтоукладчика, что на терминале пилота Dragon, но они для этого не предназначены, и их штатная задача — исполнять одну специализированную программу.
Пользователь ПК — это пользователь именно персонального компьютера, на котором он сам занимается выбором ОС, программ, в которых он будет работать, и задач, которые он с помощью своего ПК будет решать. И потребность в таких пользователях не сказать, что возросла кардинально.
Снижение логично от массовости, в поддержке тоже.
Знаешь, даже сейчас человек в саппорте, который не сможет банально переставить винду лично для меня будет смотреться дико.
Да, сейчас никто уже не будет лазать с Victoria по HDD в надежде пометить бэд сектора (если такое начинается, дешевле HDD поменять нет, я сейчас именно что не про восстановление данных — там цены на порядки выше), или никто не будет перепаивать проц начального уровня на мамке от ноута, потому что оснастка для этого и новый проц будет стоить дороже нового ноута; но блин, выкидывать ноут из-за полетевшего загрузчика винды? Серьёзно?
makise_homura
0
выкидывать ноут из-за полетевшего загрузчика винды?

Не выкидывать, а отвезти продавцу или изготовителю. Пока ноутбук на гарантии — это его проблемы, а не мастера. Особенно с учетом того, что как устроено железо и разбивка диска конкретного ноутбука — знает только производитель.
NTFS
0
Ты же понимаешь, что сервис производителя для того и предназначен, чтобы решать такие проблемы на месте?
А производитель ничего не знает, производитель — это отдельная R&D контора и отдельные заводы, и ни там ни там твой ноутбук нафиг не нужен. Если он неремонтопригоден, то сервису его проще утилизировать, чем отправлять производителю, который с ним ничего лучше сделать не сможет.
makise_homura
0
Ты же понимаешь, что сервис производителя для того и предназначен, чтобы решать такие проблемы на месте?

Я про сервис производителя и говорю.
Исходно шла речь о мастере на месте — сотрудника компании, купивший ноутбук, или частного мастера по ремонту, если заказчик физлицо.
NTFS
0
сотрудника компании, купивший ноутбук
Ну, смотря что за компания. Если пять человек а-ля директор, главбух и три разраба — то действительно проще в сервис производителя. Если же там сотня+ человек и есть IT-отдел, например, занимающийся переустановкой осей на обычных компах — то они, по идее, могли бы переставить и на ноуте.
или частного мастера по ремонту
Опять же, вопрос цены и квалификации.
makise_homura
0
«скачать видос с ютубчика и пожать его так, чтобы он влез в ограничение дискорда» без yt-dlp и ffmpeg удобно не выполнить).

Консоль давно пала, центурион.
Миллион сайтов «загрузить видео с ютуба», плюс тысячи бесплатных видеоредакторов, я лично рекомендую VSDC.
И да, ffmpeg софт для профи, потому что обычный медианный пользователь запустить его с аргументами командной строки не сможет.
NTFS
0
Консоль давно пала, центурион.
Не знаю, как с консолью было в Древнем Риме, но в 2023 она живее всех живых. Я её регулярно использую даже на винде, не говоря о том, что на линуксе я в ней провожу примерно 100% времени (натирать мышкой стол в VNC-сессии кажется менее продуктивно, чем вооружившись верным башем и mc делать все, что нужно по ssh).
Миллион сайтов «загрузить видео с ютуба»
Нахрена мне миллион сайтов, из которых ещё надо найти рабочие (ютуб регулярно ломает свой API плеера, а yt-dlp обновляется куда чаще, чем эти сайты), а потом как-то скачать результат (а ещё когда тебе надо скачать два часа лекции в 4к… представляешь, сколько надо будет ждать на этом сайте? да и где гарантия, что там на сервере не закончится место и он через полчаса не скажет «извини, дружок пирожок, тобой выбрано неправильное занятие»?)
, плюс тысячи бесплатных видеоредакторов, я лично рекомендую VSDC.
Нахрена мне видеоредактор, если я хочу просто-напросто ffmpeg -i pony.mov pony.avi ?
обычный медианный пользователь запустить его с аргументами командной строки не сможет.
Обычный медианный пользователь Linux — сможет.
makise_homura
0
Я её регулярно использую даже на винде

Ты не поверишь — я регулярно использую Visual Studio, Delphi и QtCreator. Но как-то не хочется мне заставлять моих пользователей это использовать.
NTFS
0
не хочется мне заставлять моих пользователей
Ну не хотят — пусть не используют, пусть часами ищут рабочие сайты, как я искал, пока не открыл тогда ещё youtube-dl; пусть ковыряются в редакторах, вместо того, чтобы дать одну команду. Что ж, если у человека консолефобия, придётся ему мучиться.
makise_homura
0
Что ж, если у человека консолефобия, придётся ему мучиться.

С тех пор, как Microsoft придумал оконный интерфейс, больше можно не страдать.
Ты иногда выходи из мира профи и смотри, как обычные пользователи живут. Очень полезно, имхо.
NTFS
0
Microsoft придумал оконный интерфейс
Apple*
Xerox*
andreymal
+1
Я в детстве придумал отличную стратегию, где башни были одновременно рудниками и защитными сооружениями, а солдаты могли группироваться по 4, 9, 25.

Но «Периметр», сцуки, выпустил не я, а КДЛабы.
NTFS
0
А домики там могли набигать?) А то вдруг ты ту легендарщину придумал раньше, чем тот легендарный Кирилл)
makise_homura
0
больше можно не страдать
И почему консолефобы тут дискриминируют всех остальных?..
и смотри, как обычные пользователи живут.
Поскольку контекст был про пользователей Linux, я вполне себе вижу, как они живут, и если они там занимаются, например, написанием музыки или монтажом видео, совсем не значит, что они не могут зайти в консольку и ffmpeg-ом перегнать какой-нибудь ts в более удобоваримый mkv.
makise_homura
0
не могут зайти в консольку

Могут, если захотят. А программа в исходниках заставляет их это делать.
Пользователи очень не любят, когда их к чему-то принуждают, даже если это бесплатный софт.
NTFS
0
А я могу, если захочу, использовать крестовую отвёртку. А вот саморез с крестовой головкой вынуждает меня это делать! Несправедливость! Может, я хочу крестовые саморезы крутить плоской отвёрткой!
Консоль — такой же инструмент, как отвёртка. И им стоит уметь пользоваться, когда это надо, несмотря на то, что забить гвоздь или приклеить обои можно и без отвёртки (более того, отвёртка там будет только мешать).
makise_homura
0
И им стоит уметь пользоваться

Мы просто с разных планет. На моей, если я скажу клиенту «стоит уметь пользоваться установкой NET Core, если фреймворка нету», будет больно. Потому что клиент платит мне за то, чтобы не забивать этим голову, а запустить проект и начать работать с ним.
NTFS
0
Вот именно, дело в том, что ты обычаи и мнение о жителях планеты энтерпрайза переносишь на обычаи и мнение о жителях планеты Linux.
makise_homura
0
Общее у них то, что никому не нравится, когда вместо быстрого запуска базы данных или игры, их заставляют лезть в непривычную область.

Я твою позицию в общем понял, когда сделаешь игру и опубликуешь её — можешь не собирать линуксовый бинарник, разрешаю :-) моё мнение на сей счет иное, пользователь всегда прав.
NTFS
0
никому не нравится, когда вместо быстрого запуска базы данных или игры, их заставляют лезть в непривычную область
Запустить пяток команд в консоли — привычная область для каждого адекватного пользователя линукса, если что.
И что такое «быстрый запуск базы данных»? Конфигурировать кто будет? Пользователей, базы, таблицы создавать? На это всё равно нужно время, и ни один инсталлятор за тебя это не сделает.
makise_homura
0
На это всё равно нужно время, и ни один инсталлятор за тебя это не сделает.

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

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

Еще ты упускаешь, что консоль и вывод консоли — это английский язык. Нет такого закона, чтобы пользователь ПК знал английский язык, и более того скажу, большинство его и не знает.
NTFS
0
Для однопользовательских баз — делает, по крайней мере, у адекватных разработчиков
Для однопользовательских что, базы и таблицы создавать не надо что ли?
и более того скажу, большинство его и не знает.
100% нормальных пользователей линукса его знает, и вообще, кмк, знание английского хотя бы на уровне базовой лексики, чтобы отличать, например, ошибки от сообщений об успешной работе — это обязательное требование к любому пользователю компа, даже винды. Под линуксом это особенно важно, потому что маны за тебя никто не переведёт, а работать под линуксом, не умея возможности читать маны — это всё равно, что сидеть под виндой без мышки.
makise_homura
0
Для однопользовательских что, базы и таблицы создавать не надо что ли?

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

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

Опять же, работа под Линукс, для которой нужны маны — это уровень разработчика или системного администратора. Для пользователя Линукс — это кнопка Мозиллы, кнопка ОпенОффиса и возможно, пара игрушек.
NTFS
0
Пользователю остаётся только ввести свой логин/пароль по умолчанию и начать работать.
И скорее всего сносить всё, что там инсталлятор «по умолчанию» насоздавал и создавать то, что ему на самом деле надо. В любом случае это никакой не «быстрый запуск».
Опять же, работа под Линукс, для которой нужны маны — это уровень разработчика или системного администратора.
Опять же ты несёшь ерунду. Наоборот, пользователь линукса, не умеющий читать маны — это ламер, а не пользователь, причём ламер в самом бесящем смысле слова — который мало того, что ничего не знает, так ещё и гордится этим и задаёт тупейшие вопросы, вместо того, чтобы RTFM.
Для пользователя Линукс — это кнопка Мозиллы, кнопка ОпенОффиса и возможно, пара игрушек.
Нет, ты опять путаешь пользователя линукса с пользователем винды. То, что ты описал — для этого достаточно винды, и если пользователю от операционки больше ничего не надо, он и не будет задумываться над тем, чтобы ставить Linux.
makise_homura
0
Из всего это становится понятно, что «пользователь Linux == компьютерный профессионал», отсюда и вытекает всё остальное.

Видимо, по этой причине Linux на рабочем месте и используют 2% — примерно столько профессионалов среди пользователей.
NTFS
0
Мне-таки кажется, что между «ламер» и «профессионал» есть больше градаций.
А так и хорошо, что 2%, потому что хоть не стараются нормальную логичную ось сломать в угоду ламерам.
makise_homura
0
Помимо компьютерных профессионалов есть еще множество других людей, ради обеспечения нужд которых, в общем-то, компьютерные профессионалы и работают.

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

Но в целом, еще раз — я понял твою мысль, и могу её принять. Подобное видение пользователя возможно, и скорее всего, где-то пересекается с реальность. Есть многое на свете.
NTFS
+1
Для пользователя Линукс — это кнопка Мозиллы, кнопка ОпенОффиса и возможно, пара игрушек.
И rm -rf / чтоб не скучно было.
Dany
0
К слову
git clone + cmake + make + sudo make install?

требуют наличия git и cmake, а если у пользователя нет прав админа, на этом всё и закончится.
Выставить же права на скачанный AppImage в ~/Downloads/ можно и от пользователя.
NTFS
0
Установка 99% игр на винде тоже требует прав админа, если что.
Кроме того, на большинстве машин это всё уже стоит (как и build-essential, включающий компилятор, make и всё прочее), да и при сборке ты вполне можешь указать префикс в своём home-каталоге.
makise_homura
0
Установка 99% игр на винде тоже требует прав админа, если что.

Нет, давно нет. Есть портативные сборки, zip, наконец, установка в домашний AppData.
NTFS
0
Если это мелочь уровня Where's Derpy — то да. А вот какой-нибудь ААА-проект — тот фиг тебе установится куда-то, кроме как туда, куда он сам хочет. Ещё и в систему чего пропишет для защиты от копирования, что потом хрен выпилишь.
makise_homura
0
Ставить с сайта — это
Искать проги определённого типа по тематическим сайтам с такого вида прогами (игры — на сайтах игр или да, разработчиков, если чьё-то конкретное), а не на гитхабе, который вот я воспринимаю как какой-то прогерский междусобойчик (большой, потому что вас много) — логичный ход мышления.
Dany (ред.)
0
Ну. Ты под виндой или под линуксом сидишь?
Я что пытаюсь доказать, что в винде и в линуксе разные подходы, и перетаскивать виндовый в линукс — неправильно.
makise_homura
0
К слову, сама культура дистрибуции у нас находится на уровне крупа, не конкретно, а в целом.
Довольно часто ко мне обращаются с поделками других программистов, которые прислали ексезшник, но не прислали ничего кроме. Или прислали екзешник, требующий UAC. Или rar-архив, который не так-то просто распаковать без доп.софта.

Почему-то корректной дистрибуции уделяется очень мало внимания в культуре разработки. А ведь это один из семи основных пунктов программного продукта, без которого он просто набор бесполезных файлов на компе.
NTFS
0
Зато у пользователя потом начинается карусель, ага.
У пользователя «карусель» ровно одна — поставить libfuse2 (то, что его нет из коробки в убунте, это какое-то недоразумение), а дальше всё просто работает
Погоди, ты линкуешь libFLAC со своей прогой, а не с SFML.
Нам с NTFS на libFLAC вообще пофиг, он просто является обязательной зависимостью SFML, из-за чего приходится с ним возиться
В AppImage он тоже полезет, чтобы библиотеку подменять?
Это конечно тоже пердолинг, но по крайней мере теоретическая возможность распаковать AppImage и подменить остаётся, если линковать динамически
в строго ограниченном количестве случаев (проприетарка, abandonware
Любая программа (особенно игра) через какое-то время становится abandonware, и тогда будет очень грустно — особенно если это проприетарный abandonware
andreymal
0
У пользователя «карусель» ровно одна — поставить libfuse2
А ещё потом разобраться, как каталоги прокидывать и прочие вещи.
И я ещё не говорил про карусель с билдами, например, под ARM, а не x86_64.
он просто является обязательной зависимостью SFML
То есть в репе операционки есть libsfml, который не подходит к libflac из той же репы? Звучит крайне странно.
но по крайней мере теоретическая возможность распаковать AppImage и подменить остаётся, если линковать динамически
Что-то мне подсказывает, что взять исходники и пересобрать для пользователя будет проще.
makise_homura
0
что взять исходники и пересобрать для пользователя

Пользователь НЕ УМЕЕТ ПЕРЕСОБИРАТЬ, БРАТАН, ОН ЗАПУСКАЕТ ЯЩИК С ОГОНЬКАМИ, ЧТОБЫ ПОИГРАТЬ В ИГРЫ.

Порвался, извините :-(
NTFS
0
Пользователь НЕ УМЕЕТ ПЕРЕСОБИРАТЬ
Именно этим и отличается домохозяйка винды и пользователь линукса. Если пользователь настолько тупой, что не может сделать mkdir b && cd b && cmake… && make -j && sudo make install — то линукс не для него.
makise_homura
0
пользователь линукса

Я же говорю — откат на 30 лет, потому что вызов команд сборки — это уровень разработчика. А не пользователя.
NTFS
0
откат на 30 лет, потому что вызов команд сборки — это уровень разработчика. А не пользователя.
Откат на 30 лет — это считать, что вызов команд сборки — это уровень разработчика, а не пользователя.
Да, под виндой, где собрать хоть что-нибудь — лютый челлендж, это так. Но под линуксом сборка порой проще, чем установка пакета, лол (а для некоторых вещей это вообще единственная нормальная опция — например, когда ты пересобираешь модуль под текущее ядро). Вплоть до того, что к примеру, у тех же арчеводов, насколько я знаю, вообще бинарные пакеты не приветствуются, и всё делается через исходники и PKGBUILD.
Пора понять, что под линуксом сборка — это не что-то страшное, а вещь не сложнее твоей пресловутой одной кнопки.
И да, особенно хорошо это видно благодаря тому, что место костылям вроде autotools уступают удобные и вполне юзер-френдли системы сборки типа CMake или meson.
makise_homura (ред.)
0
вызов команд сборки — это уровень разработчика

Ну по определению да. Разработчик занимается сборкой программ, пользователь — их запуском. Всякие софизмы тут не пройдут — если нужно вызывать make, значит, нужен уровень разработчика.
NTFS
0
Разработчик занимается сборкой программ
Нет, разработчик, очевидно, занимается разработкой программ.
Сборкой уже разработанной программы может заниматься и пользователь — и это нормально, аналогично тому, как сборкой икеевских столов тоже занимается пользователь, а не разработчик и даже не производитель. Задача разработчика/производителя — положить в компелкт все нужные винтики и деревяшки, а в случае ПО — обеспечить простую сборку несколькими командами и отдокументировать конфигурационные параметры.
makise_homura
0
Нет, разработчик, очевидно, занимается разработкой программ.

В которую, в том числе, входит и компиляция.

сборкой икеевских столов тоже занимается пользователь

LOL, в случае IKEI как раз получается, что пользователь становится разработчиком мебели, по сути, в его квартире на время сборки возникает последний цех мебельной фабрики. И если разработка будет выполнена криво, и уже после сборки стол развалится, придавив пользователю ногу — это как раз и будет означать, что данный пользователь не смог стать разработчиком мебели, запоров последний этап разработки оной.
NTFS
0
И если уже совсем переходить на формализм, то сборкой может заниматься т.н. «пользователь с компетенциями разработчика». Такие есть, но их очевидно меньшинство, и я например, не могу себе позволить на них полагаться — потому что из тех трех с половиной человек, которые захотели мою игру под Linux, скорее всего, нет ни одного с указанной компетенцией.
Если же говорить уже о коммерческой разработке, то попытка сунуть клиенту/платному игроку исходник и кинуть «читай мануал по make, ламер» вообще приведет меня под обоссаный забор.
NTFS (ред.)
0
попытка сунуть клиенту/платному игроку исходник и кинуть «читай мануал по make, ламер»
Вот в таком случае ещё возможно нужны будут какие-то (не очень большие, конечно) компетенции в сторону разработчика. Но если это «сунуть исходник и сказать „для установки зайдите в каталог с my-super-game-1.0.tar.xz и выполните команду tar xf my-super-game-1.0.tar.xz && cd my-super-game-1.0 && mkdir build && cd build && cmake… && make -j && sudo make install“» — тут никаких таких компетенций не нужно.
makise_homura
0
тут никаких таких компетенций не нужно.

Ты же понимаешь, что пользователь запнется уже на этапе «зайдите в каталог»?
Не говоря уже о вставке команды в консоль, Ctrl+V это некоторые специальные знания.

Но я даже не об этом, а о том, что даже если пользователь продвинутый и смог дойти до запуска от sudo — скажет ему CMake что-нибудь на бусурманском языке и конец истории. Ну то есть я понимаю, что если в строке будет что-то красное насчет libpng, то нужно ставить эту libpng, но если окажется проблема в версии — то и мне придется почесать голову, как же засунуть другую библиотеку, не сломав систему с её ссылками .so -> so.1 -> so.1.2
NTFS
0
Ты же понимаешь, что пользователь запнется уже на этапе «зайдите в каталог»?
Домохозяйка — запнётся. Пользователь GNU/Linux — не запнётся. Потому что пользователь GNU/Linux — не домохозяйка, и пытаться сделать там всё не нормально, а для домохозяек — как по мне неправильный путь.
Линуксовая экосистема тем и хороша, что она, требуя пусть больше, чем минимальных знаний о компе, многие вещи реализует намного правильнее; а двух зайцев убить не получится, потому что часто «правильно» и «для домохозяек» — взаимоисключающие вещи.
Я не говорю о том, что не нужны сборки под винду для тупых; но если такой тупой пользователь поставил себе линукс — то он ССЗБ и пусть учится.
скажет ему CMake что-нибудь на бусурманском языке
Как бы во всём цивилизованном мире понимать английский (хотя бы на уровне понять о чём фраза) — норма для паверюзера.
но если окажется проблема в версии
Блин, камон, pkg-config и find_package(… VERSION) придумали, наверное, не просто так?
Если у тебя в CMakeLists не стоит ограничение версии, а твоя прога почему-то линкуется с особо определённой версией, и валится при make, а не при конфигурации с понятным сообщением типа "-- Searching for SOMELIB — not found (required version 1.2.3, available 0.1.2)" — то это ты виноват, а не пользователь.
то и мне придется почесать голову, как же засунуть другую библиотеку, не сломав систему
Об этом за тебя уже подумали и даже специальный каталог для тебя сделали, /usr/local.
makise_homura
0
pkg-config и find_package(… VERSION)

Это уже очень, очень далеко от пользователя. Как и английский язык.

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

Я уверен, ты очень сильный разработчик и опытный пользователь Linux — но я тоже не вчера за ПК сел, и так получилось, что я и разрабатываю, и распространяю. И прямо с прошлого тысячелетия, когда я скомпилировал программу на Бейсике с опцией BRUN45.EXE (по умолчанию), а клиент не смог её запустить без этого файла, и вместо перекомпиляции с правильной опцией прибежал ко мне домой жаловаться — у меня четкая установка: запуск программы у пользователя это забота не пользователя, а разработчика. Если пользователь не сможет запустить проект, он не будет искать решение, он возьмет другой проект или другого программиста, а я пойду под обоссаный забор.
NTFS (ред.)
0
Это уже очень, очень далеко от пользователя.
Да, эти вещи у себя в скрипте сборки юзает именно разработчик. Главное, что пользователю это сильно облегчает жизнь и почти гарантирует успешную сборку или читабельные сообщения о том, что не так, где угодно.
Не может дистрибутор ПО полагаться на то, что его клиент знает английский язык и команды Linux.
Дистрибьютор ПО под Linux — может и имхо, вполне даже должен. Опять же к вопросу о том, что GNU/Linux — это не ОС для домохозяек.
и вместо перекомпиляции с правильной опцией прибежал ко мне домой жаловаться
У тебя какие-то совершенно феерические клиенты, если честно.
Если пользователь не сможет запустить проект, он не будет искать решение
Этим и отличаются пользователи винды и линукса.
он возьмет другой проект или другого программиста
В 99% случаев (и сабж — как раз пример такого) другого проекта просто нет.
makise_homura
0
У тебя какие-то совершенно феерические клиенты, если честно.

Почему? Вот клиент заплатил за программу, скопировал с дискетки через Нортона на свой комп, запустил с диска С — а она говорит что-то на вражеском языке, да еще и не работает.
Нормально прийти и попросить исправить.

cyrkey/uniscr, кстати, я тоже в программу зашивать стал примерно в то же время — потому что мало того, что их могло не быть на компе клиента, так еще и заставить запустить их ДО запуска программы не всегда возможно — человек забыл, а потом расстроился от каракулей на экране и уже второй заказ делать не хочет.

В 99% случаев (и сабж — как раз пример такого) другого проекта просто нет.

Это не понял. Нет другой игры? В мире под миллион игр в целом и около тысячи поняшных. Не заведется — пойдет искать другую.

Опять же к вопросу о том, что GNU/Linux — это не ОС для домохозяек.

Игрок в компьютерные игры — эта та же домохозяйка. У нас тред про игры.
NTFS
0
Нормально прийти и попросить исправить.
Не знаю, чтобы клиенты приходили ко мне домой и что-то просили — такого никогда не было, да и звучит это как какая-то дичь.
а потом расстроился от каракулей на экране и уже второй заказ делать не хочет.
Ещё раз говорю: мы не учитываем мнение домохозяек. Если человек поставил себе линукс — пусть учится.
Нет другой игры?
Нет другой игры про Трикси и алзмазы.
Знаешь, если я хочу поиграть в DOOM, а он не запускается, я не буду запускать Minecraft, потому что «ну тоже ведь игра», я разберусь, почему у меня DOOM не запускается. Обратное тоже справедливо.
Игрок в компьютерные игры — эта та же домохозяйка.
Это абсолютная чушь. В мире полно людей, которые умеют обращаться с компом и знают принципы работы под линуксом, и при этом вполне играют в игры. Не пойму, откуда взялся этот идиотизм, что «серьёзные люди в игры не играют/поней или аниме не смотрят/музыку не слушают/художку не читают». Глупость же.
Ну а если домохозяйка хочет поиграть в твою игру — так у неё не линукс стоит, а винда.
makise_homura
0
Нет другой игры про Трикси и алзмазы.
Знаешь, если я хочу поиграть в DOOM

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

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

Молодец, а теперь какой это процент от людей, которые играют в игры, но не знают принципов работы Linux? 5,10%
NTFS
0
Ну, когда моя игра будет так же известна, как Doom
Известночть игры и желание в неё играть конкретному человеку никак не связаны.
какой это процент от людей, которые играют в игры, но не знают принципов работы Linux?
Такие люди на линуксе и не сидят.
Напомню, мы говорим про линуксоидов, потому что домохозяйки сидят под виндой, для которой норма — бинарные релизы.
makise_homura
0
Известночть игры и желание в неё играть конкретному человеку никак не связаны.

Я к тому, что пока я работаю на репутацию, а не наоборот. Невозможность запустить игру без бубна => отсутствие игроков.
NTFS (ред.)
0
Под линуксом запустить cmake… && make -j && sudo make install бубном не считается. Особенно если это описано в README.
makise_homura (ред.)
0
У тебя какие-то совершенно феерические клиенты, если честно.
Ты как будто вообще не контактируешь с обычными людьми, некоторые даже нажатие Далее-Далее-Готово в установщике считают сложными навыками программиста)
andreymal
0
Таких людей, у которых бы стоял линукс, я не знаю.
makise_homura
0
В которую, в том числе, входит и компиляция.
Но это не значит, что компиляция — этап исключительно подходящий только разработчику, но не пользователю. Ещё раз посмотри на аналогию со сборкой стола.
что пользователь становится разработчиком мебели, по сути, в его квартире на время сборки возникает последний цех мебельной фабрики
Ты же понимаешь, что такая интерпретация даже звучит бредово?
Блин, разработка — это создание чего-то нового, а не реализация уже существующего из частей. Типа у нас что, любой автомеханик — это разработчик автомобиля, любой слесарь — проектировщик сантехники, любой сварщик — архитектор металлоконструкций, а любая кухарка, разогревающая обед в микроволновке — шеф-повар? Нет же, лол. Как по мне, это настолько очевидная вещь, что я даже затрудняюсь к ней аргументы-то приводить.
И если разработка будет выполнена криво, и уже после сборки стол развалится, придавив пользователю ногу — это как раз и будет означать,
что проблема не в дизайне (которым занимается именно что разработчик), а в тупом пользователе. И ИМЕННО ПОЭТОМУ сборка готового изделия — это НЕ разработка.
С БОЛЬШОЙ натяжкой разработкой можно считать, когда ты берёшь икеевский стол, и вместо того, чтобы следовать инструкции, берёшь дрель, ножовку и чемоданчик с метизами и городишь из него не стол, а, допустим, полку. Но когда ты тупо собираешь по инструкции — тут никакой разработкой не пахнет.
И да, ты ещё не ответил на вопрос, почему если я делаю pip install yt-dlp — я пользователь, а вот если я делаю pip install pytorch — то уже разработчик (ведь pytorch в процессе установки автоматически собирает свои сишные части). Или когда я делаю apt install firefox — то тоже пользователь, а apt install linux-image — разработчик не забываем про автосборку модулей в DKMS в процессе обновления ядра.
Нет, называть разработчиком тех, кто просто условно жмёт кнопку «установить» (и неважно, кнопка эта — это «apt install» или «cmake… && make -j && sudo make install») — это слишком большая честь. Таких «разработчиков» я бы на работу точно не взял бы.
makise_homura
0
Блин, разработка — это создание чего-то нового, а не реализация уже существующего из частей. Типа у нас что, любой автомеханик — это разработчик автомобиля, любой слесарь — проектировщик сантехники, любой сварщик — архитектор металлоконструкций, а любая кухарка, разогревающая обед в микроволновке — шеф-повар?

Еще раз — разработка программного обеспечения включает в себя в том числе компиляцию программного кода в бинарник (нативный или байт-код какой). Исходный код — это еще не программа, это исходный код программы, если мы не говорим о чистых интерпретаторах типа PHP.
И да, разогрев обеда в микроволновке тоже требует компетенций, как минимум — не обжечься, как максимум — не использовать металлическую посуду. Эти компетенции не делают кухарку шеф-поваром, так же, как сборка икеи не делает меня мебельным мастером.

И да, если нужно обед подогреть — то я становлюсь поваром, пусть и самой низовой категории.
NTFS (ред.)
0
разработка программного обеспечения включает в себя в том числе компиляцию программного кода
Но это не значит, что компиляция программного кода включается только в разработка программного обеспечения. Это не инъекция, а сюрьекция.
Эти компетенции не делают кухарку шеф-поваром, так же, как сборка икеи не делает меня мебельным мастером.
И также, как возможность запустить cmake… && make -j && sudo make install не делает пользователя разработчиком.
если нужно обед подогреть — то я становлюсь поваром
Я говорил прежде всего не про повара как исполнителя, а про шеф-повара, как творческую профессию. Ключевое отличие — шеф-повар понимает, что делает, как и разработчик ПО. Пользователь, разогревающий обед в микроволновке или запускающий известную строчку компиляции, понимать это не обязан.
makise_homura
0
звучит бредово?
Потому что фигня ваша аналогия. Ведь в программах пропущенно соответствующее звено — сборщика между разработчиком и пользователем. Вот если бы ты не мог сам и/или профукивал бы гарантию установив программу без помощи лицензированного компьютерного мастера — она была бы верна.
S_Lunaris
0
По факту такая абстракция логична, и как раз по причине отсутствия у нас консенсуса, является ли сборка последним шагом разработки или первым шагом использования, этот тред и возник.
makise_homura
0
А ещё потом разобраться, как каталоги прокидывать и прочие вещи.
Для простого пользования никакие вещи не нужны, всё просто работает
То есть в репе операционки есть libsfml
… который может не подойти к программе, поэтому из репы брать его не получится или опять пердолиться на стопицот разных сборок так же как и с libFLAC. Или может даже подойдёт, но в старых убунтах (и особенно дебианах) старая версия без нужных фич, и поэтому придётся таскать с собой новую версию с нужными фичами (а эта новая версия потребует новые фичи из своих зависимостей, поэтому всякие libFLAC'и и прочие freetyp'ы тоже придётся положить с собой)
Что-то мне подсказывает, что взять исходники и пересобрать для пользователя будет проще.
Если эти исходники вообще есть, что не факт
andreymal
0
Для простого пользования никакие вещи не нужны, всё просто работает
Вот потому это и не вариант для многих «не просто пользователей» (для которых, к примеру, не является открытием, что фоточки с телефона можно на компе сохранить — я реально общался с таким человеком, который думал, что фоточки, которые есть в телефоне, оттуда никак не добыть, честно, я офигел).
который может не подойти к программе
Как бы если ты собираешь билд под конкретную операционку и версию SFML — что мешает прописать зависимости?
Если эти исходники вообще есть, что не факт
Но мы как раз говорим про актуальную софтину, а не про abandonware/проприетарку (с ними да, AppImage/докер/виртуалка).
makise_homura
0
Вот потому это и не вариант для многих «не просто пользователей»
Что-то я не понял сути, ты переживаешь, что пользователь не в курсе про существование ~/.local/share? Ну так AppImage тут вообще ни при чём, с deb/rpm-пакетом пользователь точно так же будет не в курсе
билд под конкретную операционку
У нас как разработчиков задача — уменьшить число сборок, чтобы поменьше пердолиться, поэтому мы ничего под конкретную операционку билдить не хотим, мы хотим сбилдить одну сущность сразу под всё, и сейчас такой сущностью может быть только Appimage (ну или бинарник, в котором статически слинковано вообще всё, но, опять же, это не всегда возможно)
Но мы как раз говорим про актуальную софтину
Ещё раз, любая «актуальная софтина» через время станет abandonware. И спасибо что NTFS исходники выкладывает и мы сможем их пропатчить через -дцать лет, но не все разработчики такие
andreymal
0
ты переживаешь, что пользователь не в курсе про существование ~/.local/share
Емнип, чтобы AppImage клал верхний слой оверлея в ~/.local/share, надо поковыряться, и из коробки вроде не так (хотя на 100% не уверен, просто запомнилось, что какое-то шаманство нужно). То есть задачка типа «взять свои сохранёнки с игрухи на одном компе и скинуть их на другой комп, а потом запустить игруху там и поиграть с ними» не столь тривиальна, как при нормальной установке бинаря в систему.
У нас как разработчиков задача — уменьшить число сборок, чтобы поменьше пердолиться
Ну вот, то есть сейчас налицо тенденция перекладки сложности (не интеллектуальной, а оперативной) с разработчика на пользователя. И эта тенденция мне сильно не нравится — я привык, что под линуксом так раньше не было принято, и вообще это как-то не по unix-way-ному.
любая «актуальная софтина» через время станет abandonware
Не любая: даже если поддержка программы прекращается, то нередко она либо теряет актуальность за исчезновением предмета своей работы (а-ля тулзы для, к примеру, дефрагментации диска в эпоху SSD, или мессенджеры на протоколе OSCAR при наличии XMMP), либо подхватывается другими разрабами, если на неё вообще есть какой-то спрос и при этом нет аналога.
но не все разработчики такие
Опять же, я как раз говорю, что AppImage/докер/виртуалка — как раз нормальный юзкейс для abandonware/проприетарки. Но пока прога открыта и не заброшена — во многих случаях это выглядит как ужасающая избыточность, лишь чтобы разрабу было попроще.
makise_homura
0
Шаманство не нужно, всё работает сразу. Может, путаешь с какими-нибудь снапами-флатпаками (впрочем, тот же флатпак кладёт всё в ~/.var/app — нестандартно, но не так уж далеко)
сейчас налицо тенденция перекладки сложности (не интеллектуальной, а оперативной) с разработчика на пользователя
У пользователя AppImage просто работает, никаких сложностей нет (ну кроме как libfuse2 поставить, но это уже к убунте вопросы)

(здесь должен был быть какой-нибудь пример abandonware-проги, но чёт ничё не вспоминается, лол)
andreymal
0
Шаманство не нужно, всё работает сразу. Может, путаешь с какими-нибудь снапами-флатпаками
Хм, странно, я как раз слышал о проблемах с переносом тех же реплеев в Taisei Project, установленном как образ AppImage (к счастью, Taisei имеется и в исходниках, и с ним таких проблем нет). Хотя и с flatpak слышал про похожие проблемы…
makise_homura
0
Taisei Project

К слову, опробовал. Миленько, хотя даже первого босса пройти не могу, слишком плотный огонь. Но видимо, в том и суть жанра.
NTFS
+1
Ну да, тут надо ориентироваться на игры уровня Touhou Project 9, 10, 14, 16 или подобные (другое дело, что да, сейчас разрабы съездили с ней на Dokomi, и в итоге поняли, что у них игра в среднем действительно сложнее примерно на один уровень, чем каноничные игры, ну, то есть, их Easy — это обычный Normal, а их Hard — это обычный Lunatic).
makise_homura
0
пользователь потом хрен найдёт сохранёнки, доки и всё остальное

AppImage следует пути Windows — каталог программ это RO дерево, каталог пользовательских данных может быть любой, включая домашний пользователя или указанный от настоящего корня (а не виртуального).
Я сохраненки пишу в AppData профиля, который в Linux прекрасно воспринимается как ~/local. Решение работает.
NTFS
0
Программа, написанная под Windows 95, с 99% вероятностью заработает в Windows 11 без всяких чрутов, докеров, виртуалок и прочего пердолинга

Все-таки скорее под Windows 98. Там очень сильно поменяли API и фактически, создали основу, которой потом пользовались еще 15 лет вплоть до появления UWP (который так и не стал особо популярен).
NTFS
0
из-за чего завести старые Python-программы в новых линуксах как минимум нетривиально

Вот это опять же дичь, которая меня бесит — в Windows я могу поставить себе 40 тысяч версий одной и тоже программы, по желанию включив одну в PATH для умолчания, а остальные либо указывая явно пути запуска, либо сделав батник с установкой переменных.
В Linux даже поставить две версии какого-то компилятора (каждый со своими заголовками и либами) — это путь боли и страдания.
NTFS
0
В Linux даже поставить две версии какого-то компилятора (каждый со своими заголовками и либами) — это путь боли и страдания.
Щито.
Почему же у меня на билд-ферме есть штук пять gcc, начиная с 6.3, и llvm+clang 9, 11 и 13 — и когда я их ставил, у меня не было никаких проблем?
А под виндой такое не работает, потому что там совершенно упоротый способ поиска тех же библиотек и надо всё время шаманить с PATH (и ловить тупые ошибки из-за того, что, например, MSYS2 делает это одним способом, mingw32 — другим, а gnuwin32 — третьим, а забандленная с Qt версия mingw32 вообще непонятно как).
Вот уж по поводу чего к линуксам нельзя придраться, так это по адекватному стандарту версионирования библиотек и бинарников (которые ты, к слову, можешь спокойно запускать, не копаясь с PATH и прочими костылями).
makise_homura
0
Во-первых, без библиотек у тебя вообще ничего не запустится на винде, а на линуксе — скорее всего запустится

Это очень сильное утверждение, учитывая то, что Win32 API, который использует 90% софта — часть ОС, а в Linux чтобы запустить какой-нибудь калькулятор, нужно ставить в систему GTK или Qt.

Можно не надо, а? Ещё скажи, что в современных операционках нужно держать qt3 и библиотеки из KDE 3?

Windows поддерживает упомянутый Win32 API с 98-го года (отдельные функции еще раньше). Вроде как проблем нет.
NTFS
0
Win32 API, который использует 90% софта
Это тоже очень сильное утверждение. Всякие рантаймы от MFC до дотнета нынче хочет примерно каждая первая тулза.
чтобы запустить какой-нибудь калькулятор, нужно ставить в систему GTK или Qt.
Если ты запускаешь калькулятор, значит, ты сидишь на системе с десктоп-окружением, а там уже оно есть. А если нет — то apt тебе его подтянет (в отличие от винды), причём один раз, а не по копии для каждой такой проги. Этим, кстати, линукс тоже хорош — если тебе десктоп не нужен, ты можешь просто его не ставить, в отличие от винды (да, попробуй, например, поднять винду на сервере без монитора и без iKVM).
Windows поддерживает упомянутый Win32 API с 98-го года
Как что-то хорошее. Особенно когда тебе надо, например, работать с приложением, которое не умеет в юникод, и у тебя весь интерфейс превращается в знаки вопроса. Или которое дёргает какой-то древний способ общаться с оборудованием, который на 95/98 прокатывал, а на NT (2k и выше — хорошо, если крашит только прогу, а не систему).
makise_homura
0
Всякие рантаймы от MFC до дотнета нынче хочет примерно каждая первая тулза.

В 98-м не было дотнета, а весь рантайм всегда можно было скопировать, за счет того, что в Windows инженерный гений сделал по умолчанию поиск либ в ./ — а в Linux ищет где угодно, но только не в ./
LOL, некоторые либы требовалось ставить в конкретный каталог, например, в /usr/local/lib, а не в /lib64
Любая попытка сделать что-то, не предусмотренное официальным репозиторием — легким движением руки превращало систему в Slackware времен make & make install

А если нет — то apt тебе его подтянет

А если не подтянет? Мне нужен Firebird 2.5 на моём сервере, в репах только 4.0
Установить пакеты-зависимости нельзя, их нет в репах. Приходится брать tarball и вспоминать славные 2000-ые.
NTFS
0
за счет того, что в Windows инженерный гений сделал по умолчанию поиск либ в ./
И зря — например, под линуксом баги с безопасностью чинятся одним apt upgrade, а под виндой приходится чинить ручками для каждой софтины.
а в Linux ищет где угодно, но только не в ./
Не где угодно, а в строго определённом списке (см. также LD_LIBRARY_PATH).
LOL, некоторые либы требовалось ставить в конкретный каталог, например, в /usr/local/lib, а не в /lib64
Это какая-то хтонь и криво прописанные rpath, похоже. Я такого давно не встречал.
Любая попытка сделать что-то, не предусмотренное официальным репозиторием — легким движением руки превращало систему в Slackware времен make & make install
Во первых что плохого в make install, а во-вторых, что значит «превращало систему»?
Мне нужен Firebird 2.5 на моём сервере, в репах только 4.0
Во-первых, зачем, во-вторых, если уж тебе нужен abandonware, так собери сам (на винде такой опции либо нет вообще, либо это на порядок сложнее), ради одного тебя никто не будет тащить древности.
makise_homura
0
так собери сам

Ну вот и вся философия Linux. Не нравится Linux — напиши свой :-)

что плохого в make install

Потому что это откатывает нас на 30 лет назад, когда любой пользователь был программистом.
NTFS
0
Ну вот и вся философия Linux.
Как что-то плохое, лол.
Потому что это откатывает нас на 30 лет назад
Щито. Откатывает как раз невозможность собрать на той же винде, я считаю.
когда любой пользователь был программистом.
Чтобы запустить пару команд в баше, не надо быть программистом. Или, скажешь, pip install тоже требует от тебя быть программистом, когда в процессе установки пакета у тебя собирается какой-нибудь сишный кусок?
makise_homura
0
Кстати немного нытья насчёт пакетов: установка deb/rpm требует рута, а AppImage не требует, некоторые виндовые программы тоже позволяют установить себя в AppData вместо Program Files. Мейнстримные пакетные менеджеры не позволяют установить несколько версий одной программы (впрочем, в винде с этим тоже проблемы), а AppImage юзай какие хочешь сколько хочешь
andreymal
0
установка deb/rpm требует рута, а AppImage не требует, некоторые виндовые программы тоже позволяют установить себя в AppData вместо Program Files
И мне кажется, соотношение тут примерно одинаковое. К слову, в питоновской инфраструктуре этим озаботились, и там большинство прог как раз ставятся от текущего юзера, а не от рута. Кроме того, всегда можно скомпилить почти любой софт с PREFIX=~, а в винде так нельзя. То есть как минимум линукс даёт тебе этот выбор, а винда — нет.
Мейнстримные пакетные менеджеры не позволяют установить несколько версий одной программы
Это часто беда не пакетных менеджеров, а версионирования пакетов — и в последних дебианах и убунтах с этим ситуация сейчас (в отношении прог, для которых действительно часто требуется несколько версий в одной системе — компиляторы, либы, фреймворки) намного лучше, чем лет десять назад.
makise_homura
0
скомпилить почти любой софт
Скомпилить проприетарщину будет проблематично)
в отношении прог, для которых действительно часто требуется несколько версий в одной системе
Но всё ещё не любых прог, что немножко грустно
andreymal
0
Скомпилить проприетарщину будет проблематично)
Ну, в винде тем более, лол.
Но всё ещё не любых прог, что немножко грустно
Да, но надеюсь, ситуация и дальше будет меняться к лучшему.
makise_homura
0
P.S. Как же на табуне не хватает однострочного форматирования кода…
P.P.S. Создал таск.
makise_homura
0
Классная стрелялка-ходилка. Прошел за час, попивая чай.
Прикольный, кстати, мини-фанфик получился)
Noplias (ред.)
+1
Спасибо за отзыв. Скоро будет обновление (новое заклинание — щит, два режима сложности и секретный уровень с секретными монстрами).
NTFS (ред.)
+2
Замечательно. Монстры, надо думать, будут ещё монстрее? ))
LunReaper
+1
Сейчас они отличаются только одним признаком — умением летать и еще немного скоростью.
А текстур пять, что создаёт некоторое однообразие.
Я ввожу два дополнительных свойства (прыжки между уровнями + повышенный HP), что даст разнообразие.
NTFS
+1
Понятно. Кстати, да. У меня на форточке монстры тоже иногда возникают в точке телепорта Трикси, так что спрошу — для винды эта проблема исправится?
LunReaper (ред.)
+1
Если Трикси начала телепортацию, но еще не завершила (находится на одной платформе) — а на платформе назначения уже заспавнился монстр в точке, куда Трикси переместится вот-вот — то эта проблема у меня записана. Учитывать нужно обе точки, текущую и точку назначения. Ну или тормозить спавн, пока идет телепортация, решение заплаткой, но решение.
NTFS (ред.)
+1
Да, именно это. Ясно, спасибо.
LunReaper
+1
Раз на 30-40 запусков игра падает. Молча падает, без ответа и привета. Если кто поймает такое событие — прошу написать
Поймал, пишу. Падает второй раз за пять минут, первый раз из меню, второй раз просто в конце третьего уровня. Версия RU-1.1.0-Win32.exe, windows 8.1.
adeptus_monitus
+1
Я тоже это пытаюсь поймать, но не вижу никакой закономерности. Скорее всего, применяя С++ без должного навыка, я где-то стреляю себе в ногу.
По этой причине, новые игры на этой связке уже не делаю — под следующий проект выношу улучшенный движок на Delphi/FPC и SFML с PascalScript (от разработчиков последнего есть официальное разрешение на использование, так что норм).
NTFS (ред.)
0
Тут прогресс оно сохраняет, так что терпимо, в принципе. Хотя что глюки — должно быть обидно, как автору, мне кажется.
adeptus_monitus
+1
Прогресс да, пишется в домашний каталог, хотя архитектуру надо подправить — прогресс пишет, а настройку звука нет. Глюк где-то глубоко в движке, скорее всего, обращение к удаленному объекту или рассинхронизация потока скрипта и окна.
NTFS
+1
Почти закончил сборку проекта для MacOS, и пока тестирую — в продолжение беседы с makise_homura хочу сказать, что концепция построения приложений для Mac, рекомендованная самими Эпллами (не понями, а компанией), оказалась почти идентична той же AppImage. С той лишь разницей, что под Linux AppImage работает как сторонний скрипт через библиотечную ФС, а в MacOS — в структуре приложения уже заложен каталог, куда нужно положить необходимые фреймворки и распространять всё это счастье через запакованный образ, поддерживаемый системой.
То есть для простых приложений — скачал образ, одним кликом смонтировал, вторым кликом запустил. Не нужно ни захламлять систему сотней версией фреймворков, ни пытаться через игры с LD_LIBRARY подсунуть приложению библиотеки в домашнем каталоге, ни даже беспокоиться о том, подхватит ли прога so-файлы программные или системные.
Один образ, всё включено, минимум зависимостей, кроме конечно, разрядности ОС. Проект запускается от El Capitan до Monterey, а это, для сравнения, 6 лет разницы. Доступа к Ventura и Sonoma сейчас нет (попозже поищу), но думаю, что и там запустится через трансляторы самой MacOS.

Вывод — две самые популярные ОС рекомендуют собирать софт по принципу «всё своё ношу с собой, систему не захламляю».
Конечно, для компиляции софта фреймворки и .so нужны в системе, но мы речь вели о дистрибуции готовых приложений.
NTFS (ред.)
+1
Здравствуйте, скачал игру по ссылке github.com/tereshenkovav/TrixieDiamonds32/releases, скачанный файл проверил ресурсом www.virustotal.com и вот, что получил Почему так?
denev
0
Потому что самодельные неподписанные приложения практически 100% вызывают подозрение у антивирусов, а в силу огромного количества вирусов и немалого — антивирусов, хоть пара совпадений сигнатур, да окажется.
Это на самом деле большая проблема, отчасти решаемая цифровой подписью, которую скорее всего закажу в этом году.
NTFS
+1
а в силу огромного количества вирусов и немалого — антивирусов, хоть пара совпадений сигнатур, да окажется
Звучит очень нереалистично, если мы о совпадении именно сигнатур, а не подозрении по эвристике. В конце концов, сигнатуры на то и сигнатуры, чтобы количество ложноположительных результатов было на практике равно нулю. Тут скорее это именно что подозрение (да, например из-за отсутствующей подписи), тем более что внятной информации, что это за «W32.AlDetectMalware» в инете нет, зато куча сообщений о ложноположительных результатах.
makise_homura
0
а не подозрении по эвристике.

Для конечного пользователя разницы нет, я смеху ради отправлял клиенту скомпилированный пустой проект Delphi и его лицензионный антивирус не пропускал со словами «тут опасно, оно тебя съест».
NTFS
0
Ну вот, то есть это определённо эвристика, а не совпадение сигнатуры.
makise_homura
0
Эвристика уже давно свой смысл потеряла — сейчас единственный способ распространять серьезное приложение это подписать бинарник и отправить в Касперский, чтобы добавили его в белый список.
Ну или писать инструкции для пользователей «мамой клянус, не вирус это, разрешите запустить, позялуйста».
NTFS
0
Во-первых, не потеряла — не все приложения подписываются (я бы даже сказал, что большая часть — нет, хорошо, если у них хотя бы VERSIONINFO есть). Во-вторых — опять же, как видишь, некоторые до сих пор полагаются на её результаты. Ну и в-третьих, «белый список» сам по себе схема малорабочая — из-за возможности его лёгкого абьюза (а если нет — то недопустимых тормозов при добавлении в него). Понятно, что это будет возможно при выпуске реально больших и редко обновляющихся продуктов (если ты это понимаешь под «серьёзным» — то ок), но добавлять в белый список, например, каждый билд сюита, состоящего из десятка экзешников и нужного тысяче, а то и меньше человек во всём мире — ну такое.
makise_homura
0
Альтернатива? Вот я отправляю программу клиенту, антивирус её блокирует. Клиент отказывается платить за «вирусное ПО» (объяснять ему про эвристику бесполезно, он не знает таких слов).
«Ковальски, варианты?»©

Ну то есть вариант есть и это облачные решения, и мир туда шел до последнего года, пока не выяснилось, что владелец облака может отключить его к дискордовой бабушке без объяснения причин и твой бизнес в огне.
NTFS
0
Антивирус обычно не блокирует такую программу. Он просто говорит, что она неподписана или что-то такое — на что клиент обычно выбирает вариант «запустить всё равно» (как, например, на сайтах с протухшими сертификатами). Вот этот Bkav Pro — скорее редкое исключение, чем правило.
makise_homura
0
Антивирус обычно не блокирует такую программу.

Если не повезло, и эвристика показала, что тут злое зло (такое часто случается с дельфийскими приложениями, к слову) — то антивирус как раз блокирует, и пока ты не добавишь исключение в антивирус — запустить не сможешь, он просто будет удалять этот файл в карантин.
А вот не нативные приложения, например, для dotnet или java, почти никогда не попадают под подозрения антивируса. Почему так — хз, но многолетние наблюдения показывают, что чаще всего дельфийские бинарники режут, потом идут C++ для WinAPI, гораздо реже приложения Qt и наконец, почти никогда — приложения на C#, вне зависимости от версии платформы.
NTFS
0
и эвристика показала, что тут злое зло
Как правило, такой вариант можно отследить и у себя (и пересобрать программу так, чтобы эвристика в большинстве адекватных антивирусов перестала давать ложноположительный результат). Но вообще я такого уже давно не видел, не знаю, как у тебя такое получается.
А вот не нативные приложения, например, для dotnet или java, почти никогда не попадают под подозрения антивируса.
Имхо, это потому, что сейчас вирусописатели очень сильно деградировали по сравнению со своими коллегами из 90-х, и эвристики для типов приложений, появившихся не так давно, уже не разрабатывают за ненадобностью — достаточно банального сигнатурного анализа (кто в 2023 будет на полном серьёзе писать полиморфный вирус или делать его с нуля, а не на базе какого-нибудь шаблона?).
makise_homura
0
Но вообще я такого уже давно не видел, не знаю, как у тебя такое получается.

Попробуй разрабатывать десктопные приложения для Windows при включенном антивирусе, поймешь.
(поросячий визг Касперского) Файл Project1.exe заражен и помещен в карантин.
Всё, отключаем антивирус, работаем дальше.
NTFS (ред.)
0
… Видимо я уже давно отвык от десктопного антивируса, ибо в наше время они стали уже скорее нонсенсом (подозрительные файлы всегда можно через тот же вирустотал проверить, а он не то чтобы сильно ругался даже на неподписанные проги, как я помню).
makise_homura
0
Ну это ты можешь через вирустотал проверить, а 95% населения даже не знают о его существовании ¯\_(ツ)_/¯
Для простых смертных лучше уж иметь хоть какой-нибудь десктопный антивирус, наверное
andreymal
0
Ну, простые смертные не то, чтобы разрабатывают десктопные приложения. А автор, по идее, если уж у него такая проблема, может правда вирустоталом проверить, что на его бинарь не агрятся антивирусы.
makise_homura
0
Что с этим делать, вот вопрос. Собрал бинарник, проверил вирустоталом. Пара-тройка срабатываний.
Варианты?
NTFS
0
Если это часто повторяется, то значит, такая проблема не только у тебя, а значит, скорее всего, достаточно легко нагуглить решение, зная, какой антивирь и как именно ругается.
makise_homura
0
Мне иногда кажется, что ты говоришь на синдарине, а я на клингоне.

Вот я сейчас в Delphi 10 (Community, естественно, пиратку с кряками я не использую) скомпилировал пустой проект Project1 с пустой формой TForm1 на библиотеке VCL.
Вот результат сканирования Virustotal. 13 угроз.

Спойлер

Беру свой любой проект, тот же редактор кубов на OpenGL. Уже лучше. Всего 4 срабатывания. Но всё еще отстой.
Беру свой мегапроект игры — и вижу 3 срабатывания. Офигенно как. Сотни скачиваний.

Наконец, последний проект — который двойной, Delphi и FPC (над совместимостью пришлось потрудиться, но оно того стоило). О чудо, FPC-бинарник тоже показывает вирусы, правда, всего 2 срабатывания. В дельфийском варианте одно срабатывание, потому что не используем VCL.

Чего здесь нагуглить и исправить можно? Если антивирусы просто берут и по каким-то фрагментам находят несуществующие угрозы?
Собственный компьютер проверил через KVRT — результат чистый, вирусов у меня нету. Это на тот маловероятный случай, если я действительно заражен и все свежие exe-файлы тоже выпускаю с порчей.
NTFS (ред.)
0
Чего здесь нагуглить и исправить можно?
stackoverflow.com/questions/60340213/what-could-be-causing-virustotal-to-flag-an-empty-program-as-a-trojan :
Modern virus scanners are looking for unusual programs. Most programs do something. Yours doesn't do anything, that makes it unusual. Add some code.
Почему я нагуглил это за пару минут?
P.S. Да, там также говорят про отсутствие подписи и 32-битность как подозрительные факторы.
makise_homura
0
Add some code.

Ну вот я добавил some code во все проекты. Все дельфийские проекты всё еще показывают как вирусы, 2-3 совпадения.
Завтра принципиально выделю немного времени и прогоню все свои разработки на Delphi, которых у меня как единорогов в Кантерлоте — хоть крупом жуй.
Уверен, что 90% из них будет показывать как вирусы.

И да, из той же статьи

The signed version triggerd 2 hits, the unsigned version triggerd 16 hits.


это означает, что антивирусы не работают — потому что код в обоих версиях одинаковый, а получение подписи — вопрос 15 тысяч даже сейчас, это вполне по силу злыдням.
NTFS
0
The signed version triggerd 2 hits, the unsigned version triggerd 16 hits.
И вопрос тут именно в этой разнице. Вангую, что остальные «подозрения» — это и не подозрения именно на вирус вовсе, а что-то типа «странно, что тут используются устаревшие API» и т.п.
а получение подписи — вопрос 15 тысяч даже сейчас, это вполне по силу злыдням.
Вопрос скорее в том, что вирусы, вмешивающиеся в структуру исполняемого файла, ломают оригинальную подпись, а если пытаются потом подписать результат другим ключом, то сертфикат, когда станет известно о том, что с такой подписью распостраняют малварь, тут же отзывают. Без подписи этого фактора же нет.
makise_homura
0
И вопрос тут именно в этой разнице.

Тогда почему virustotal прямо пишет названия вирусов в строках анализа, а не, к примеру, «тут странный бинарник, запускайте осторожно»?

Может быть (надевает шапку фольги), потому, что задача антивирусов — выдавливать приложения из десктопа в облако, где их можно легко отключить за неправильное поведение пользователя?
NTFS
0
Он пишет именно названия вирусов, а не что-то типа строки «W32.Unsigned.Suspicious.Threat», по которой (в идеале, конечно) можно как раз нацти объяснение вида «тут странный бинарник, запускайте осторожно»?
потому, что задача антивирусов — выдавливать приложения из десктопа в облако
Скорее это не задача, а просто следование тенденциям. Вон, сколько сайтов ныне приобрели отвратительный интерфейс с буквами на пол-экрана и мегабайтами картинок и нулём информации — лишь из-за того, что по статистике их чаще смотрят с телефонов, чем с компов?
makise_homura
0
Он пишет именно названия вирусов, а не что-то типа строки «W32.Unsigned.Suspicious.Threat», по которой (в идеале, конечно) можно как раз нацти объяснение вида «тут странный бинарник, запускайте осторожно»?

Выше давал скрин моего вирустотала, там и названия вирусов и стыдливое Detected для Гугла.
NTFS
0
И вот эти все слова (suspicious, confidence 90%, generic, low score, malicious) как раз говорят не о конкретном вирусе, а о эвристике (которая у онлайн антивирусов да, выкручена на максимум, ибо ущерба от ложноотрицательного срабатывания может быть куда больше, чем от ложноположительного).
Да что говорить: я вот ради эксперимента загрузил бинарник firefox, с которого вот прямо сейчас это пишу — он мне там нашёл какой-то Backdoor.Lotok.bsf (что, впрочем, тоже эвристика — как пишет первая же ссылка в гугле, это a heuristic detection designed to generically detect a Trojan Horse).
makise_homura
0
Для пользователя разницы нет — это всё еще крест на установке моей программы.
NTFS
0
Как я уже говорил, совсем не крест, потому что в вирустотал полезут дай Селестия если процентов 10 потенциальных пользователей, причем из этих 10 процентов половина будет нормальными людьми, которые либо тебя спросят, что за дела (что мы, кстати, наблюдаем итт), либо сами покопаются и выяснят, что это лишь ложноположительное срабатывание эвристики.
makise_homura
0
ибо в наше время они стали уже скорее нонсенсом

Компьютер без установленного антивируса не видел уже лет 10, не считая специализированные машины специалистов.
Не говоря уже о встроенном механизме защиты в Windows 10, который ЛЮБОЙ самодельный бинарник без специальной подписи (далеко не за 15К) не позволяет запускать без сообщения «приложение может быть опасно»
NTFS
0
Компьютер без установленного антивируса не видел уже лет 10
Лол, мой комп, например (что дома, что на работе). Ну, обычно именно что специалисты, которые знают, как обращаться с компом, антивирус не ставят в большинстве случаев — и не только на «специализированные машины».
не позволяет запускать без сообщения «приложение может быть опасно»
Один я поголовно вижу, что этот механизм (SmartScreen) все либо игнорируют, либо отключают? Ну, как в семёрке игнорировали сообщения типа «этот файл получен из интернета и может быть опасен»?
makise_homura
0
В домашней среде — да. В корпоративной еще надо убедить администратора, что мою программу можно поставить, и визг антивируса — мощный аргумент против.
NTFS
0
Обычно администратор (если он адекватный) всё-таки читает, о чём там визжит антивирус.
makise_homura
0
В случае, когда речь идет о разработке через личный контакт — да. В случае, когда автор программы неизвестен (а я рано или поздно рассчитываю дойти до этого уровня) — уже не факт. Скачали тут программу, нужную для работы, с сайта разработчика или гитхаба, а на неё антивирус орет. Ну её нафиг, excel fine too.
NTFS (ред.)
0
Скачали тут программу, нужную для работы, с сайта разработчика или гитхаба, а на неё антивирус орет.
Логично, что если антивирь орёт об определённом в бинарнике малваре и о том, что «что-то странное тут, типа старых API или отсутствия подписи» — это крайне разные случаи. Особенно если антивирь так орёт на 90% программ.
makise_homura
0
Логично, что если антивирь орёт об определённом в бинарнике малваре

Выше уже ответил, вирустотал показывает конкретные названия зловредов в моём бинарнике, хотя их там нет.
NTFS
0
В некоторых антивирусных компаниях есть почтовый адрес, на который можно присылать как неизвестные им образцы вирусов так и примеры ложных срабатываний.

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

Правда, было это давно, как сейчас — не знаю.
Qleap
+1
Да, можно с этим повозиться, проблема в том, что на вирустотал 50 антивирусов, и каждому слать письмо после каждого ребилда проекта (я за последние два месяца только игр собрал десяток билдов) — это нужен человек на зарплате.
NTFS
0
Как я уже писал выше, если это что-то а-ля «W32.Unsigned.Suspicious.Threat» — то это не «название зловреда», а лишь строка, по которой обычно можно понять, что именно имеет в виду антивирус.
makise_homura
0
Объяснить бы это еще пользователю… В начале ветки, игрок скачал проект, получил красные строки и дисциплинированно/осознанно пришел в пост к автору, узнать, в чем дело.
90% игроков так не сделают, они удалят и скажут «сыпасибо, антивирус, спас от заразы».
NTFS
0
90% игроков так не сделают
Начнём с того, что 90% игроков просто не будут проверять твой файл вирустоталом.
makise_homura
0
Добавлю также, что по этой причине, я стараюсь выгружать дистрибутивы на проверенные ресурсы типа github и itch. Там работают собственные антивирусные сканеры, которые заведомую гадость (если вдруг теоретически мои бинарники будут заражены) разместить не позволят.
Самохостинг игр в этом плане похуже.
NTFS
+1
Не нужно ни захламлять систему сотней версией фреймворков
Поэтому надо захламить её тысячей копий этих версий — по копии с каждой софтиной.
через игры с LD_LIBRARY подсунуть приложению библиотеки в домашнем каталоге

— Тебе не нужно будет думать над тем, как «подсунуть приложению библиотеки в домашнем каталоге», если все библиотеки будут лежать где надо, а не в домашнем каталоге.
ни даже беспокоиться о том, подхватит ли прога so-файлы программные или системные.
А зачем тебе несколько одинаковых so-файлов в разных местах? Ну и ldconfig зря что ли придумали?
две самые популярные ОС
При этом средний технический уровень пользователя этих двух ОС сильно ниже, чем у пользователей линуксов, и потому ради того, чтобы пользователь мог запустить приложение, не зная, как работает его система, приходится так делать (и, например, из-за этого делать бинарники-монстры по полгигабайта). А линуксоид — более продвинутый пользователь и может себе позволить более адекватную организацию всего того, что нужно софтине.
makise_homura
0
А линуксоид — более продвинутый пользователь

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

Поэтому надо захламить её тысячей копий этих версий — по копии с каждой софтиной.

Когда Linux создавали, размеры жестких дисков измерялись в мегабайтах. Сейчас они измеряются в терабайтах. Не вижу особой проблемы.
NTFS (ред.)
0
уровень как минимум девопса
Чтобы иметь представление о том, где у тебя в системе что лежит и как оно работает, не нужно быть девопсом, достаточно быть обычным паверюзером.
Не можешь понять, чего тебе там программа сказала в консоли на чужом языке
Знание технического английского в пределах понимания вывода программ и чтения манов — обязательное требование для любого нормального пользователя Linux.
Сейчас они измеряются в терабайтах.
Тогда почему ты говоришь про захламление?
И нет, обычно это действительно проблема не полноценных компов, а нетбуков с SSD в 512 гигов, планшетов/смартфонов (блэт, когда приложение МКБ весит 414 мегабайт, МТС-банка — 270, почты — 228, а сбербанка — вообще 600, а у тебя 4 гига внутренней постоянной памяти (а на SD приложения уже давно ставить нельзя, я помню такое только во втором андроиде) — невольно задаёшься вопросом, что в него такое напихали, когда всю его функциональность можно уместить в единичные мегабайты от силы) и всякого эмбеддеда с мелкими eMMC-флешками и nanoSSD.
makise_homura (ред.)
0
Знание технического английского

Ну то есть минус 90% населения страны, понятно.

планшетов/смартфонов

Это вообще отдельная история, там приложения распространяются централизовано и особого выбора у разработчиков нет, как собрать дистрибутив. Но да, сейчас телефон меньше чем на 64 Гб внутренней памяти уже бесполезно рассматривать, а для активных пользователей приходится 128 подбирать.

всякого эмбеддеда с мелкими eMMC-флешками и nanoSSD.

Туда вообще пользовательские приложения не ставят, насколько я понимаю — это тоже совсем другой сектор.
NTFS
0
Ну то есть минус 90% населения страны, понятно.
Да — линукс никогда не стремился стать операционкой для домохозяек.
там приложения распространяются централизовано
Ага, расскажи это китайским/российским «магазинам приложений».
Но да, сейчас телефон меньше чем на 64 Гб внутренней памяти уже бесполезно рассматривать, а для активных пользователей приходится 128 подбирать.
И при этом линукс со всем более-менее необходимым для работы прекрасно умещается даже на DoM В 16 ГБ (разве что если нужна сборочница, чруты и dev-пакеты, тогда имеет смысл иметь ещё SSD-шку на 64 хотя бы). А в BMC у нас вообще на SPI NOR флешке в 64 МБ полноценный линукс крутится, с ldap, samba, web-интерфейсом и даже mc в комплекте.
Туда вообще пользовательские приложения не ставят
Я к тому, что вот тебе результат отсутствия захламления.
makise_homura
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.