LINUX.ORG.RU

Сообщения vbcnthfkmnth123

 

О поддержке Linux в Factorio

Форум — Games

Это перевод части поста под авторством raiguard

Я уже появлялся в нескольких FFF, но никогда официально не представлялся. Меня зовут raiguard. Я играю в Factorio с июня 2017 года, делаю моды для игры с момента выпуска версии 0.17 в марте 2019 года и, наконец, присоединился к Wube в марте 2023 года. Мои основные обязанности в компании — программирование расширений и поддержка Linux, а также пропаганда. для моддерского сообщества. Я ежедневно использую Linux в течение нескольких лет и все глубже погружаюсь в черную дыру настройки и минимализма.

«Почему большинство игр не поддерживают macOS и Linux?» — это мнение, которое я часто вижу в Интернете. Поддержка новой платформы — это гораздо больше, чем просто изменение некоторых флагов и компиляция. Windows, macOS, Linux и Nintendo Switch используют разные компиляторы, разные реализации стандартной библиотеки C++ и имеют разные особенности реализации, ошибки и функции. Вам необходимо настроить CI для новой платформы, расширить систему сборки для поддержки новых компиляторов и архитектуры, а также иметь в команде хотя бы одного человека, который достаточно заботится о платформе, чтобы активно ее поддерживать. Если вы занимаетесь видеоиграми, вам, вероятно, потребуется добавить поддержку другого графического интерфейса (Vulkan или OpenGL), поскольку DirectX является эксклюзивным для Windows.

Многие разработчики, взглянув на долю рынка Windows , решат, что поддержка других платформ не стоит усилий. Кроме того, с стремительным ростом Steam Deck и Proton разработчикам игр стало проще, чем когда-либо, игнорировать поддержку Linux, потому что Valve прибегает к черной магии, которая все равно позволяет их игре работать.

Factorio так хорошо поддерживает macOS и Linux, потому что в Wube всегда был кто-то, кто активно использует эти платформы и готов взять на себя бремя их поддержки. Наша встроенная поддержка Apple Silicon — отличный тому пример. Сегодня я расскажу вам о некоторых приключениях, которые произошли со мной при поддержке Linux в Factorio.

Вейланд

Моей первой самозваной задачей после присоединения к команде было добавить в игру поддержку Wayland . Wayland — это новый протокол отображения, который разрабатывается для замены устаревшей и небезопасной системы X11 . Современные дистрибутивы Linux начинают переключаться на Wayland по умолчанию, поэтому поддержка его в Factorio имеет первостепенное значение.

Мы используем библиотеку SDL , которая аккуратно обрабатывает большинство низкоуровневых системных взаимодействий и абстрагирует их в общий интерфейс. SDL поддерживает Wayland, поэтому все, что мне теоретически нужно было сделать, — это собрать SDL с включенным Wayland, и он «просто заработал бы». Однако это не совсем просто подключи и работай. Wayland предоставляет «протоколы» в виде XML-файлов, которые вы затем используете в wayland-scannerдвоичном виде для преобразования в программу C и файлы заголовков.

Поскольку в то время я был относительно новичком в C++, мое первоначальное решение было запутанным и включало проверку сгенерированных протоколов Wayland в нашем дереве исходных кодов, чтобы их можно было регенерировать вручную каждый раз, когда мы обновляли SDL. Несколько месяцев назад, вооружившись многолетним опытом, я улучшил этот рабочий процесс, чтобы автоматически генерировать файлы как часть процесса сборки, чтобы они всегда были актуальными в соответствии с XML-файлами протокола, с которыми поставляется SDL.

Factorio поддерживает Wayland с версии 1.1.77, но его необходимо явно включить, настроив SDL_VIDEODRIVER=waylandв вашей среде. Для Factorio 2.0 я добавил раскрывающийся список для выбора ваших предпочтений в графическом интерфейсе.

Оформление окон на стороне клиента

Как только поддержка Wayland была реализована, я получил отчет об ошибке , в котором говорилось, что в окне отсутствовала строка заголовка и кнопки закрытия (так называемые «декорации окна») при работе в GNOME . Большинство сред рабочего стола позволяют окнам предоставлять свои собственные украшения, если они того пожелают, но в качестве альтернативы предоставляют реализацию по умолчанию на стороне сервера. GNOME в своей бесконечной мудрости решили, что все клиенты должны предоставлять свои собственные украшения, а если клиент этого не сделает, они просто пропадут. Я не согласен с этим решением; Factorio не нуждается в оформлении какой-либо другой платформы, более того, в любой другой среде рабочего стола, но GNOME может (ab) использовать свою популярность, чтобы заставить программы соответствовать его особенностям или остаться позади.

Чтобы исправить это, мне пришлось добавить еще одну зависимость — libdecor . Он работает, и SDL даже поддерживает его, но видеоигра вообще не должна обеспечивать оформление окон.

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

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

Динамически подключаемые библиотеки

В программе C++ существует три способа загрузки/подключения библиотеки:

Включив его в исходный двоичный файл (статическое связывание). Загрузка системы при запуске вашей программы (динамическое связывание). Ваша программа загружает его явно после запуска («динамическая загрузка» или то, что я называю «связыванием во время выполнения»). У нас есть много библиотек, таких как SDL, FontStash и Lua, которые скомпонованы статически, но в Factorio 1.1 также есть много динамически линкуемых библиотек:

rai@tantal ~/games/factorio
$ ldd bin/x64/factorio
        linux-vdso.so.1 (0x00007ffc123b1000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fc182f70000)
        librt.so.1 => /lib64/librt.so.1 (0x00007fc182f6b000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fc182f5a000)
        libX11.so.6 => /lib64/libX11.so.6 (0x00007fc182e13000)
        libXext.so.6 => /lib64/libXext.so.6 (0x00007fc182dff000)
        libGL.so.1 => /lib64/libGL.so.1 (0x00007fc182d78000)
        libXinerama.so.1 => /lib64/libXinerama.so.1 (0x00007fc182d71000)
        libXrandr.so.2 => /lib64/libXrandr.so.2 (0x00007fc182d64000)
        libXcursor.so.1 => /lib64/libXcursor.so.1 (0x00007fc182d57000)
        libasound.so.2 => /lib64/libasound.so.2 (0x00007fc182c43000)
        libpulse.so.0 => /lib64/libpulse.so.0 (0x00007fc182bf1000)
        libpulse-simple.so.0 => /lib64/libpulse-simple.so.0 (0x00007fc182bea000)
        libm.so.6 => /lib64/libm.so.6 (0x00007fc182b07000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc182b02000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fc182920000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fc182f91000)
        libxcb.so.1 => /lib64/libxcb.so.1 (0x00007fc1828f5000)
        libGLX.so.0 => /lib64/libGLX.so.0 (0x00007fc1828c2000)
        libGLdispatch.so.0 => /lib64/libGLdispatch.so.0 (0x00007fc18280a000)
        libXrender.so.1 => /lib64/libXrender.so.1 (0x00007fc1827fc000)
        libXfixes.so.3 => /lib64/libXfixes.so.3 (0x00007fc1827f4000)
        libpulsecommon-16.1.so => /usr/lib64/pulseaudio/libpulsecommon-16.1.so (0x00007fc18276f000)
        libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00007fc18271a000)
        libXau.so.6 => /lib64/libXau.so.6 (0x00007fc182714000)
        libsndfile.so.1 => /lib64/libsndfile.so.1 (0x00007fc182694000)
        libsystemd.so.0 => /lib64/libsystemd.so.0 (0x00007fc1825a1000)
        libasyncns.so.0 => /lib64/libasyncns.so.0 (0x00007fc182599000)
        libgsm.so.1 => /lib64/libgsm.so.1 (0x00007fc18258a000)
        libFLAC.so.12 => /lib64/libFLAC.so.12 (0x00007fc182524000)
        libvorbis.so.0 => /lib64/libvorbis.so.0 (0x00007fc1824f5000)
        libvorbisenc.so.2 => /lib64/libvorbisenc.so.2 (0x00007fc182448000)
        libopus.so.0 => /lib64/libopus.so.0 (0x00007fc1823ec000)
        libogg.so.0 => /lib64/libogg.so.0 (0x00007fc1823e2000)
        libmpg123.so.0 => /lib64/libmpg123.so.0 (0x00007fc182385000)
        libmp3lame.so.0 => /lib64/libmp3lame.so.0 (0x00007fc18230d000)
        libcap.so.2 => /lib64/libcap.so.2 (0x00007fc182303000)
        liblz4.so.1 => /lib64/liblz4.so.1 (0x00007fc1822df000)
        liblzma.so.5 => /lib64/liblzma.so.5 (0x00007fc1822ac000)
        libzstd.so.1 => /lib64/libzstd.so.1 (0x00007fc1821f0000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fc1821cc000)

Среди этих библиотек — X11 и PulseAudio, которые устарели в пользу Wayland и PipeWire соответственно. Это вызывает кошмар совместимости, поскольку если какие-либо динамические зависимости отсутствуют, игра не запустится. Это явно не подойдет!

Наличие этих зависимостей меня смутило, поскольку мы используем SDL для большинства низкоуровневых системных вызовов, аудио и видео, а SDL полностью полагается на связывание во время выполнения. Расследование показало, что источником большинства этих зависимостей является Allegro , низкоуровневая библиотека, которую мы использовали на протяжении большей части альфа-фазы Factorio, но с тех пор заменили на SDL. Единственное оставшееся использование Allegro в версии 2.0 было в качестве вторичного аудио-сервера на случай, если у пользователя возникли проблемы с аудио-сервером SDL, но сервер SDL был стабильным в течение очень долгого времени, поэтому настало время для его удаления. Это исключило из игры 123 024 строки кода и резко сократило количество динамических зависимостей:

rai@tantal ~/dev/wube/factorio (master) 
$ ldd bin/FinalReleasex64Clang/factorio 
        linux-vdso.so.1 (0x00007fff96ff2000) 
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fd2df8a9000) 
        libm. so.6 => /lib64/libm.so.6 (0x00007fd2df7c8000) 
        libc.so.6 => /lib64/libc.so.6 (0x00007fd2df5e6000) 
        /lib64/ld-linux-x86-64.so.2 (0x00007fd2df8d6000 )

Проблемы с буфером обмена

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

Я надеялся использовать встроенную в SDL функциональность буфера обмена, но, к сожалению, SDL не поддерживает инкрементную передачу. Это означает, что есть три варианта:

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

2)Выясните, как выполнить связывание во время выполнения, и реализуйте это.

3)Переведите наш код инкрементной передачи в SDL, чтобы мы могли использовать функции буфера обмена SDL, а другие игры на основе SDL могли бы извлечь выгоду из нашей работы.

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

Асинхронное сохранение

Многие из вас, возможно, не знают, что Factorio поддерживает сохранение игры в фоновом режиме без зависания при этом. Эта функция спрятана в скрытых настройках и работает только на macOS и Linux. Это отличный пример использования возможностей платформы для пользы игры, которые были бы нам не доступны, если бы мы просто прошли через Proton.

Асинхронное сохранение работает с использованием системного вызова fork, по существу дублирующего игру. Основной экземпляр, с которым вы взаимодействуете, продолжает играть, но недавно разветвленный дочерний элемент запускает процесс сохранения и завершает работу по завершении. Я использовал его в течение многих лет, и у меня никогда не было проблем, но настройка остается скрытой, поскольку с ней есть несколько нерешенных проблем, и для ее работы требуется значительный объем оперативной памяти.

Я бы хотел продвинуть эту функцию из ее скрытого статуса в версии 2.0. Если вы играете на Linux или macOS, включите асинхронное сохранение (ctrl+alt+нажмите «Настройки» -> «Остальное» -> non-blocking-saving) и сообщайте о любых обнаруженных проблемах. Меня особенно интересует воспроизведение, казалось бы, случайного зависания , которое происходит в конце процесса. Заранее спасибо!

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

источник - https://factorio.com/blog/post/fff-408

 ,

vbcnthfkmnth123
()

SimCity в 2024 году

Галерея — Скриншоты

SimCity — игра в жанре градостроительный симулятор, разработанная Уиллом Райтом и компанией Maxis в 1989 году.

Немного истории. Это та самая игра, для которой было сделано исключение в обработке памяти в винде. Игра больше не работала после того, как была выпущена Windows 95. Microsoft не стали ждать патча от разработчиков, а сделали хак сами. В Microsoft был создан специальный костыль для ОС, который отслеживал запуск SimCity на компьютере. Если это происходило, Windows 95 изменяла работу распределителя памяти таким образом, чтобы симулятор не считывал освобождённую память. (То есть изменяла работу на то как это работало в DOS). Благодаря этому патч от разработчиков для решения данной ошибки, не потребовался.

В дальнейшем исходники игры были открыты и выложены разработчиком под именем Micropolis (поскольку Simcity является торговой маркой, а Micropolis было оригинальным именем данной игры) - Выложен исходный код SimCity для OLPC

Собирал так:

make -j1
То есть строго в 1 поток, иначе не соберется, код достаточно древний.

Список зависимостей такой:

bash-5.1$ ldd /usr/lib/micropolis/sim
        linux-vdso.so.1 (0x00007ffc20bd7000)
        libm.so.6 => /lib/libm.so.6 (0x00007f1fc8e2e000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0x00007f1fc8cea000)
        libXext.so.6 => /usr/lib/libXext.so.6 (0x00007f1fc8cd5000)
        libXpm.so.4 => /usr/lib/libXpm.so.4 (0x00007f1fc8cc2000)
        libSDL-1.2.so.0 => /usr/lib/libSDL-1.2.so.0 (0x00007f1fc8c2a000)
        libSDL_mixer-1.2.so.0 => /usr/lib/libSDL_mixer-1.2.so.0 (0x00007f1fc8bd9000)
        libc.so.6 => /lib/libc.so.6 (0x00007f1fc89f6000)
        /lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f1fc903f000)
        libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007f1fc89cb000)
        libXau.so.6 => /usr/lib/libXau.so.6 (0x00007f1fc89c6000)
        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007f1fc89be000)

Собирал отсюда — git://git.zerfleddert.de/micropolis

Суть в том что если просто взять и запустить после сборки, то игра подменит шрифты на свои. То есть игра использует свой собственный fonts.alias и fonts.dir со своим собственным набором шрифтов. То есть после запуска игры все шрифты поменяются на шрифты игры собственно.

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

>>> Просмотр (1920x1080, 326 Kb)

 , , ,

vbcnthfkmnth123
()

Наконец-то исправили 19-летнюю ошибку в wine

Форум — Talks

С релизом версии 9.8 wine была исправлена ошибка, которая не позволяла установить Office 97 в wine. После нескольких лет работы в Wine 9.8 наконец-то было доработано stdole32.tlb для генерации библиотеки типов в формате SLTG

источник - https://bugs.winehq.org/show_bug.cgi?id=3689

 ,

vbcnthfkmnth123
()

Prey в 2024 году

Галерея — Скриншоты

Prey — научно-фантастическая компьютерная игра в жанре шутера от первого лица, разработанная Human Head Studios и изданная 3D Realms и 2K Games в 2006 году. Venom Games портировали игру на Xbox 360. В России локализована и издана компанией 1С.

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

Cкачал инсталятор для линукса здесь.

Затем сделал его исполняемым и запустил так:

chmod a+rx ./prey-installer-02192009.bin
./prey-installer-02192009.bin

Подложил ему ресурсы. Это можно сделать так:

./prey-installer-02192009.bin --from-install --media '/mnt/ntfsdisk/Program Files/Steam/steamapps/common/prey/base'

Это 32-битная версия, поэтому требует 32-битные библиотеки для запуска. Часть библиотек идет в комплекте с игрой,

ls
base             libstdc++.so.5  preyded      prey.x86
libgcc_s.so.1    openurl.sh      preyded.x86  uninstall-prey.sh
libSDL-1.2.so.0  prey            prey.png     xdg-open
но часть необходимо установить самому
bash-5.1$ ldd prey.x86
        linux-gate.so.1 (0xf7f42000)
        ./libSDL-1.2.so.0 (0xf7e8d000)
        libpthread.so.0 => /lib32/libpthread.so.0 (0xf7e67000)
        libdl.so.2 => /lib32/libdl.so.2 (0xf7e62000)
        libstdc++.so.5 => not found
        libm.so.6 => /lib32/libm.so.6 (0xf7d96000)
        libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf7d71000)
        libc.so.6 => /lib32/libc.so.6 (0xf7b4b000)
        /lib/ld-linux.so.2 (0xf7f44000)

В комплекте идет скрипт prey, который подключает библиотеки, которые идут в комплекте с игрой и запускает игру. Prey на линуксе полностью проходим, никаких тормозов на моей Nvidia 3060 я не заметил. Нативная версия сделана добротно, ну маловероятно что могло быть иначе, ведь это модифицированный движок Doom 3.

>>> Просмотр (1920x1080, 1949 Kb)

 ,

vbcnthfkmnth123
()

EA сделала свой античит для Apex Legends обнаруживающим и блокирующим wine

Форум — Games

Перевод поста с информацией ниже.

EAC определенно намеренно обнаруживает Wine и предоставляет разработчикам, которые их запрашивают, совместимые с Wine двоичные файлы. Когда вы запускаете игру, EAC загружает набор драйверов со своих серверов (download.eac-cdn.com) и загружает их. Они загружаются заново при каждом запуске игры — я лично предполагаю, что это сделано для того, чтобы новые читы можно было обнаружить или устранить без необходимости обновлять всю игру, а только этот загружаемый файл.

EAC предоставляет канал распространения этих драйверов, совместимый с WIne (wine64), который ранее работал в Apex Legends. Однако эти файлы были недавно удалены из канала распространения Apex Legend, поэтому теперь в Linux, когда EAC пытается загрузить эти файлы, он возвращает 404 (не найден), и я предполагаю, что вместо этого загружается набор фиктивных драйверов, которые привести к ошибке игры на целевом экране.

Я воссоздал сервер EAC CDN на своем локальном компьютере с каналом распространения Wine64 (который вместо этого обслуживал драйверы Win64) и отредактировал файл hosts, чтобы вместо этого программа запуска EAC могла их загружать. Это позволяет мне подняться на экран лобби и снова начать поиск игроков в Linux, но попытка присоединиться к игре выгружает меня с ошибкой, связанной с истечением времени ожидания службы EAC. Я понятия не имею, вызвана ли эта ошибка реальной проблемой с загрузкой драйверов Win64 или проблемой, вызванной тем, что я что-то упустил в своей реализации. Хотя это прогресс.

источник - https://answers.ea.com/t5/Technical-Issues/Latest-update-breaks-game-through-...

 , ,

vbcnthfkmnth123
()

Удалось завести наконец-то GOG-версию Undertale

Галерея — Скриншоты

Для нативной версии игры Undertale требуются старые старые версии libcrypto и libssl. Однако эти версии есть в рантайме стима. То есть фактически чтобы заработала игра из гога, ей нужны библиотеки из стима. Мне пришлось копировать эти 32-битные библиотеки из 32-битного рантайма от убунты 12, которые идут со стимом в /lib32, грязный хак, но работает собирать пакет с этими библиотками, чтобы они располагались по системному пути.

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

Пакет для libcrypto:

name=libcrypto32_old
version=0.11.7
release=1
source=()

build() {
	mkdir -p $PKG/lib32
	cp /home/user/.steam/bin32/steam-runtime.old/lib/i386-linux-gnu/libcrypto.so.1.0.0 $PKG/lib32
}
Пакет для libssl
name=libssl32_old
version=0.11.7
release=1
source=()

build() {
	mkdir -p $PKG/lib32
	cp /home/user/.steam/bin32/steam-runtime.old/lib/i386-linux-gnu/libssl.so.1.0.0 $PKG/lib32
}

Вместо user надо подставить имя вашего пользователя.

Список зависимостей:

bash-5.1$ ldd UNDERTALE
        linux-gate.so.1 (0xf7ec8000)
        libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf7c6b000)
        libz.so.1 => /lib32/libz.so.1 (0xf7c52000)
        libXxf86vm.so.1 => /usr/lib32/libXxf86vm.so.1 (0xf7c4a000)
        libGL.so.1 => /usr/lib32/libGL.so.1 (0xf7bd6000)
        libopenal.so.1 => /usr/lib32/libopenal.so.1 (0xf7a64000)
        libm.so.6 => /lib32/libm.so.6 (0xf7998000)
        librt.so.1 => /lib32/librt.so.1 (0xf7993000)
        libpthread.so.0 => /lib32/libpthread.so.0 (0xf798e000)
        libdl.so.2 => /lib32/libdl.so.2 (0xf7989000)
        libcrypto.so.1.0.0 => /lib32/libcrypto.so.1.0.0 (0xf77cc000)
        libXext.so.6 => /usr/lib32/libXext.so.6 (0xf77b6000)
        libX11.so.6 => /usr/lib32/libX11.so.6 (0xf7663000)
        libXrandr.so.2 => /usr/lib32/libXrandr.so.2 (0xf7654000)
        libGLU.so.1 => /usr/lib32/libGLU.so.1 (0xf75d5000)
        libssl.so.1.0.0 => /lib32/libssl.so.1.0.0 (0xf757c000)
        libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf7557000)
        libc.so.6 => /lib32/libc.so.6 (0xf7331000)
        /lib/ld-linux.so.2 (0xf7eca000)
        libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf7302000)
        libXau.so.6 => /usr/lib32/libXau.so.6 (0xf72fd000)
        libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf72f6000)
        libGLX.so.0 => /usr/lib32/libGLX.so.0 (0xf72b8000)
        libGLdispatch.so.0 => /usr/lib32/libGLdispatch.so.0 (0xf723c000)
        libatomic.so.1 => /usr/lib32/libatomic.so.1 (0xf7234000)
        libXrender.so.1 => /usr/lib32/libXrender.so.1 (0xf7226000)

И самое интересное, что на странице гога есть список зависимостей:

Requires libc6:i386 libasound2:i386 libasound2-data:i386 libasound2-plugins:i386 libcurl3:i386 libgtk2.0-0:i386 libopenal1:i386 libglu1:i386 and dependencies this game comes with a 32-bit binary only
Но библиотек libcrypto и libssl в этом списке нет. И заранее, если у тебя нет игры на руках, это не узнать.

>>> Просмотр (1920x1080, 614 Kb)

 , , ,

vbcnthfkmnth123
()

Запуск Windows-игр, созданных в RPG Maker VX Ace под Linux

Статьи — Игры

RPG Maker VX Ace — программа для создания игр в жанре jRPG и ему подобных без навыков программирования.

Например, на этом движке сделаны следующие игры: Monster Girl Quest! Paradox RPG, Black Souls 2, SHRIFT, Corpse Party -Rebuilt (хоррор).

( читать дальше... )

 ,

vbcnthfkmnth123
()

NVIDIA раскрывает новые проблемы безопасности драйверов

Форум — Linux-hardware

CVE-2024-0074 Драйвер дисплея NVIDIA GPU для Linux содержит уязвимость, позволяющую злоумышленнику получить доступ к ячейке памяти после окончания буфера. Успешная эксплуатация этой уязвимости может привести к отказу в обслуживании и фальсификации данных.

https://cwe.mitre.org/data/definitions/788.html

CVE-2024-0078 Драйвер дисплея NVIDIA GPU для Windows и Linux содержит уязвимость на уровне режима ядра, из-за которой пользователь в гостевой системе может вызвать разыменование NULL-указателя на хосте, что может привести к отказу в обслуживании.

CVE-2024-0075 Драйвер дисплея NVIDIA GPU для Windows и Linux содержит уязвимость, из-за которой пользователь может вызвать разыменование NULL-указателя, получив доступ к переданным параметрам, достоверность которых не была проверена. Успешная эксплуатация этой уязвимости может привести к отказу в обслуживании и ограниченному раскрытию информации.

https://cwe.mitre.org/data/definitions/476.html

Драйвер дисплея NVIDIA GPU для Windows и Linux содержит уязвимость в обработчике уровня режима ядра, из-за которой обычный непривилегированный пользователь может вызвать переполнение целых чисел, что может привести к отказу в обслуживании, раскрытию информации и подделке данных.

https://cwe.mitre.org/data/definitions/190.html

Дополнительная информация здесь - https://nvidia.custhelp.com/app/answers/detail/a_id/5520

То есть чтобы получить исправления этих уязвимостей необходимо обновится до 550.54.14 (выпущена 23 февраля), 535.161.07 (выпущена 22 февраля) или 470.239.06

 

vbcnthfkmnth123
()

Не удается установить vaultwarden

Форум — General

Беру официальную документацию отсюда https://github.com/dani-garcia/vaultwarden Там следующая инструкция по установке

docker pull vaultwarden/server:latest
docker run -d --name vaultwarden -v /vw-data/:/data/ --restart unless-stopped -p 80:80 vaultwarden/server:latest

Выполняю эти команды на виртуалке c установленной Ubuntu 22.04.4 LTS. При попытке зайти на веб-интерфейс через браузер google chrome с ip этого web интерфейс не показывается. Но при этом виртуалка пингуется, потому что находится в той же локальной сети, по ssh подключится к ней выходит. Что я делаю из инструкции по установке не так, подскажите пожалуйста.

Однако вижу, что контейнер в docker запущен

docker ps
CONTAINER ID   IMAGE                       COMMAND       CREATED         STATUS                   PORTS                                         NAMES
d26529727e5a   vaultwarden/server:latest   "/start.sh"   6 minutes ago   Up 6 minutes (healthy)   0.0.0.0:80->80/tcp, :::80->80/tcp, 3012/tcp   vaultwarden

 vaultwarden

vbcnthfkmnth123
()

Крупный сбой в работе мессенджеров произошел из-за Роскомнадзора

Форум — Talks

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

<…>

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

<…>

Депутат также фактически признал, что предыдущие крупные сбои в рунете были тоже вызваны действиями Роскомнадзора. «Этот сбой уже не первый, мы и в прошлом году их наблюдали», — отметил он.

источник - https://dumatv.ru/news/deputat-tkachev-obyasnil-massovii-sboi-v-rabote-sotsse...

 , ,

vbcnthfkmnth123
()

Шрифты TrueType для OpenTTD

Форум — Games

Обещают добавить красивые качественные шрифты с поддержкой сглаживания в новой версии OpenTTD

Будет выглядеть примерно так - https://www.openttd.org/static/img/post_2024-02-17-openttd-truetype-fonts/tog...

Обещают поддержку латиницы и кириллицы.

источник - https://www.openttd.org/news/2024/02/17/openttd-truetype-fonts

 

vbcnthfkmnth123
()

Протестировал easy-diffusion

Галерея — Скриншоты

Easy-diffusion — это локальная программа, которая генерирует изображения посредством нейросетей. Для запуска необходимо скачать репозитарий с гитхаба — https://github.com/easydiffusion/easydiffusion — и запустить ./start.sh в директории репозитария. Далее установщик позаботится обо всем остальном и скачает все зависимости. В требованиях для запуска необходима карта Nvidia или AMD. Поддерживаются CUDA и ROCM соотвественно. Также поддерживается рендер изображений и на процессоре.

Для генерации изображения необходимо указать следующие параметры:

  1. промпт — набор слов, указывающий что конкретно необходимо сгенерировать, обязательно;
  2. отрицательный промпт — набор слов, указывающий что *не надо* генерировать; опционально, но с ним получается контролировать более точно;
  3. seed — значение, отвечающее за уникальность изображений; можно ввести вручную или выбрать автоматическую генерацию;
  4. число изображений, по умолчанию 1;
  5. модель, отвечает за стиль изображения: реалистичный. мультяшный и так далее; обязательна; обычно у модели есть одно или несколько ключевых слов для указания в промпте;
  6. лора, содержит в себе набор для генерации одного или нескольких изображений. Необязательна, но с ней можно быстрее получить нужный результат;
  7. Sampler — способ обработки;
  8. Guidance Scale — параметр, который контролирует, насколько процесс генерации изображения следует текстовой подсказке;
  9. количество шагов, собственно, указывает, сколько шагов будет уходить на генерацию изображения; больше число шагов — изображение получается более качественным, меньше — менее качественным;
  10. VAE — в основном, используется для увеличения насыщенности и яркости изображения, но иногда меняет стиль изображения;
  11. размер изображения. Обычно модель заточена под определенный размер и если размер изображения будет слишком сильно отличаться, то то и результат будет отличаться. Если размер изображения будет сильно меньше, то результатом будет нечитабельная мазня. Если не слишком сильно, то может сгенерировать только часть изображения. В случае увеличением размера изображения слишком сильно, могут появиться различные различные артефакты при генерация, например дополнительные руки и ноги. Кроме того, вырастет потребление видеопамяти;
  12. Clip Skip. Не совсем понимаю, что значит этот параметр; обычно в описании лоры указывается, надо его использовать или нет.

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

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

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

У лоры могут быть ключевые слова или слово. Может не быть. Всё зависит от конкретной лоры.

У меня алгоритм для генерации изображения обычно такой:

  1. беру модель;
  2. беру лору;
  3. беру промпт;
  4. беру отрицательный промпт;
  5. беру seed. Обычно из примера лоры, если в примере нет, то беру из какого-то другого рандомного примера;
  6. прогоняю это все для генерации через несколько моделей по одному изображению;
  7. выбираю изображение с той модели, которая мне больше всего понравилась;
  8. генерирую 100 изображений с этой моделью, лорой, промптом, сидом и отрицательным промптом;
  9. из этих 100 изображений выбираю одно подходящее.

Конкретно здесь у меня изображение со следующими настройками:

Seed: 2851093873
Dimensions: 512x768
Sampler: euler_a
Inference Steps: 30
Guidance Scale: 7
Model: bs_1500
Clip Skip: yes
Prompt: sketch, black souls, bs, masterpiece, high quality, blpioneer, 1boy, cowboy shot, covered eyes, shadow on eyes, brown hair, long blue winter coat, white scarf, outdoors, park, evening, walking, winter, hands in pockets, side view,
Lora Model: blpioneer, add_detail
Lora Strength: 0.8,0.5

>>> Просмотр (1920x1080, 841 Kb)

 , ,

vbcnthfkmnth123
()

Просьба вернуть в сайт www.linux.org.ru тему white2

Форум — Linux-org-ru

Эта тема контрастная, очень легко читается. пожалуйста верните её.

maxcom

 ,

vbcnthfkmnth123
()

Ошибки в smart для SSD

Форум — Linux-hardware

Что-то у меня появились ошибки, когда в очередной раз проверял smart SSD. Проверял так

smartctl  -a /dev/nvme1n1
Выдает такое
=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        35 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    0%
Data Units Read:                    610,575 [312 GB]
Data Units Written:                 809,901 [414 GB]
Host Read Commands:                 3,288,924
Host Write Commands:                726,307
Controller Busy Time:               10
Power Cycles:                       65
Power On Hours:                     8
Unsafe Shutdowns:                   1
Media and Data Integrity Errors:    0
Error Information Log Entries:      84
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
Temperature Sensor 1:               35 Celsius
Temperature Sensor 2:               32 Celsius

Error Information (NVMe Log 0x01, 16 of 64 entries)
Num   ErrCount  SQId   CmdId  Status  PELoc          LBA  NSID    VS
  0         84     0  0xd001  0x4004      -            0     0     -


SSD - 1000 ГБ SSD M.2 накопитель Samsung 970 EVO Plus, прошивку не обновлял. Конкретно меня волнует эта часть
Error Information (NVMe Log 0x01, 16 of 64 entries)
Num   ErrCount  SQId   CmdId  Status  PELoc          LBA  NSID    VS
  0         84     0  0xd001  0x4004      -            0     0     -


Ядро 6.1.77, файловая система ext4. Эти ошибки критичны?

 ,

vbcnthfkmnth123
()

Продам оставшееся после апгрейда

Форум — Talks

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

* Intel Xeon E5 2640v2

* 16 Gb DDR3 ECC RAM 1333( 4 плашки Samsung по 4 Gb)

* материнская плата X79G

Территориально - Мытищи, станция Строитель. Могу привезти на станцию метро Комсомольская на кольцевой линии. Скользящий график, поэтому лучше связаться со мной заранее, чтобы выяснить когда буду на месте.

 ,

vbcnthfkmnth123
()

Sudo внутри программы это нормально использовать?

Форум — Development

Это все началось с того что в CDE нет диалога выключения компьютера, выключаю через терминал. Однако я нашел xdmshutdown написанный на motif, который собственно и реализует диалог выключения и переагрузки. Но там внутри дергалось только shutdown и reboot, то есть требовало быть запущенным от root. Я дописал внутри кода sudo и теперь он просто по нажатию кнопки перезагружает и выключает. Вопрос собственно такой, это безопасно так делать или нужно через диалог какой-то дергать(графический в смысле), чтобы программа запрашивала повышение прав?

 ,

vbcnthfkmnth123
()

Open source реализация Unreal Engine 1

Форум — Games

Surreal Engine — это проект по переработке UE1, в настоящее время ориентированный в основном на Unreal Tournament v436 и Unreal Gold v226.

Теперь он может запускать карты UT99 и карты бот-матчей Unreal Gold (тогда как раньше он был ограничен только UT) и загружаться во intro flybe(не совсем понимаю как это перевести) Deus Ex.

Управляемость при столкновении намного лучше (но еще не идеальна).

Можно использовать SDL2 в Linux для оконной работы и встроенной поддержки Wayland (ранее использовался чистый X11, и фактически все еще используется, если у вас не установлен SDL2).

Меню в основном работает.

Начальные работы для ИИ (иногда они будут передвигаться и принимать ответные меры в случае нападения).

Система обнаружения игр, основанная на хешсумме SHA1 исполняемого файла игры. Это позволяет нам обнаруживать многие версии UT и U1/UGold, а также Deus Ex, Klingon Honor Guard, NERF Arena Blast и многое другое!

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

источник - https://github.com/dpjudas/SurrealEngine

 ,

vbcnthfkmnth123
()

ИИ с открытым исходным кодом крайне опасен

Форум — Talks

Сабж. Что думаете об этом?

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

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

источник - https://spectrum.ieee.org/open-source-ai-2666932122

Перемещено Dimez из general

 

vbcnthfkmnth123
()

Dns отваливается / Почему?

Форум — Linux-hardware

У меня в последнее время(несколько месяцев) такая проблема, отваливается DNS на роутере. Решается перезапуском PPPoE подключения. Вопрос такой, где конкретно может быть проблема, на моей стороне или на стороне провайдера? Провайдер Ростелеком, город Мытищи. Вообще я слышал что у Ростелекома много проблем с интернетом, но из проблем наблюдаю только эти проблемы с DNS, которые решаются за обычно секунд за 30 или меньше, пока PPPoE не перезапустится. Причем самое интересно, просто перезагрузка роутера проблема не решает, помогает только рестарт PPPoE подключения через web-интерфейс роутера. Что это вообще хотя бы в теории может быть? Роутер Netgear n600 wndr3800, прошит libreCMC.

 , ,

vbcnthfkmnth123
()

разработчик «Базальт СПО» создал приложение для запуска популярных видеоигр на операционных системах Linux

Форум — Games

`PortProton` приложение-надстройка над `wine` и `proton` подобное `PlayOnlinux`. Позволяет упростить установку и запуск приложений и игр запускаемых через `wine`/`proton`. Это не аналог вайна написанный с нуля, а набор скриптов с графическим интерфейсом базирующийся на множестве сборок вайна и других вещах(dxvk, etc)

«Всё началось около 10 лет назад с небольшого проекта PortWoT для запуска онлайн-игры World of Tanks на Linux, — поделился Михаил Тергоев. — Появились хорошие отзывы, я создал PortLoL для League of Legends и еще множество самораспаковывающихся скриптов с настроенным wine и другими настройками для запуска различных онлайн-игр. Я старался все автоматизировать, чтобы конечному пользователю оставалось сделать минимум действий. В итоге все проекты были объединены в один PortProton, который сейчас и развивается. Могу с уверенностью сказать, что большинство однопользовательских игр будут без проблем работать на ОС «Альт» с приложением PortProton».

источник - https://www.basealt.ru/about/news/archive/view/windows-vne-igry-razrabotchik-...

инструкция для установки - https://linux-gaming.ru/2022/11/24/portproton/

 , ,

vbcnthfkmnth123
()

RSS подписка на новые темы