LINUX.ORG.RU

Сообщения vbcnthfkmnth123

 

Посоветуйте геймпад.

Настроил Demon Souls для игры в эмуляторе PS3 после скрина в галерее пользователя - Fedora 41 KDE, но с клавиатуры играть неудобно. Посоветуйте пожалуйста проводной геймпад совместимый с линуксом. Использовать буду скорее всего только для этой цели, возможно потыкаю ещё ранние части гарри поттера на ps2,ps1 в эмуляторе .

Резюмирую: посоветуйте проводной геймпад, который совместим с ps1,ps2,ps3 эмуляторами и совместим с линуксом, пожалуйста.

 , ,

vbcnthfkmnth123
()

не собирается swars

Решил найти Syndicate Wars Port и нашел на гитхабе, так как оригинальный сайт умер. Но оно доступно только для 32-битов.

https://github.com/swfans/swars

В инструкции для сборки указано

Now as our host is ready, we can start working on the actual swars sources. Go to that folder, and generate build scripts from templates using autotools:

autoreconf -ivf

Next, proceed with the build steps; we will do that in a separate folder.

mkdir -p release; cd release
PKG_CONFIG_PATH="/usr/lib/i386-linux-gnu/pkgconfig" CFLAGS="-m32" CXXFLAGS="-m32" LDFLAGS="-m32" ../configure
make V=1
Я собираю так
autoreconf -if
        mkdir -p release; cd release
        #ac_cv_prog_PYTHON=python2
        PKG_CONFIG_PATH="/usr/lib/i386-linux-gnu/pkgconfig" CFLAGS="-m32" CXXFLAGS="-m32" LDFLAGS="-m32" ../configure --prefix=/usr
        #--build=i686-pc-linux-gnu --libdir=/usr/lib32
        make V=1

После вот этой строки

g++  -m32  -m32 -o swars swars-bflib_joyst.o swars-bflib_joyst_s.o swars-bflib_render_gpoly.o swars-bflib_render_plin_s.o swars-bflib_render_drspr.o swars-bflib_render_drspr_s.o swars-bflib_snd_mss_s.o swars-bflib_vidraw.o swars-bflib_vidraw_s.o swars-ailssa.o swars-trfringe.o swars-triangls.o swars-tringops.o swars-trpoints.o swars-trfind8.o swars-trstate.o swars-delaunay.o swars-bfsmack.o swars-smack2ail.o swars-bfsmacklib_s.o swars-linksmk.o swars-bmbang.o swars-bat.o swars-bigmap.o swars-building.o swars-campaign.o swars-command.o swars-cybmod.o swars-display.o swars-dos.o swars-drawtext.o swars-enginbckt.o swars-engindrwlstm.o swars-engindrwlstx.o swars-enginfexpl.o swars-enginfloor.o swars-enginlights.o swars-enginpriobjs.o swars-enginpritxtr.o swars-enginshrapn.o swars-enginsngobjs.o swars-enginsngtxtr.o swars-enginshadws.o swars-enginpeff.o swars-engintrns.o swars-enginzoom.o swars-febrief.o swars-fedebrief.o swars-fecntrls.o swars-fecryo.o swars-feequip.o swars-feoptions.o swars-fepanet.o swars-felogin.o swars-femail.o swars-femain.o swars-fenet.o swars-fepause.o swars-feresearch.o swars-festorage.o swars-feworld.o swars-guiboxes.o swars-guigraph.o swars-guitext.o swars-game.o swars-game_data.o swars-game_speed.o swars-game_sprani.o swars-game_sprts.o swars-hud_panel.o swars-hud_target.o swars-joy_modul1.o swars-joy_modul2.o swars-keyboard.o swars-lvdraw3d.o swars-lvobjctv.o swars-lvfiles.o swars-main.o swars-matrix.o swars-misstat.o swars-mouse.o swars-mydraw.o swars-netipx1.o swars-netser1.o swars-network.o swars-pathtrig.o swars-pathtrig_debug.o swars-packet.o swars-people.o swars-pepgroup.o swars-player.o swars-purpldrw.o swars-purpldrwlst.o swars-radica1.o swars-radica2.o swars-radica3.o swars-research.o swars-rules.o swars-scanner.o swars-scandraw.o swars-sound.o swars-specblit.o swars-swars.o swars-thing.o swars-thing_search.o swars-thing_debug.o swars-thing_debug_s.o swars-tngcolisn.o swars-tngobjdrw.o swars-timer.o swars-unix.o swars-util.o swars-vehicle.o swars-vehtraffic.o swars-wadfile.o swars-weapon.o swars-windows.o swars-wrcities.o wrappers_dos.o wrappers_game.o wrappers_libc.o wrappers_util.o  -L"../lib" -lbullfrog -L"../lib" -lbfsound -lSDL2  -lopenal -lvorbisfile  -lpng16
Выводит ошибки.

/usr/bin/ld: wrappers_libc.o: in function `ac_gets':
(.text+0x15c): warning: the `gets' function is dangerous and should not be used.
/usr/bin/ld: swars-bflib_joyst_s.o: warning: relocation in read-only section `.rodata'
/usr/bin/ld: ../lib/libbullfrog.a(libbullfrog_a-skeybd.o): in function `LbIKeyboardOpen':
skeybd.cpp:(.text+0x2429): undefined reference to `SDL_EnableKeyRepeat'
/usr/bin/ld: ../lib/libbullfrog.a(libbullfrog_a-smouse.o): in function `MouseToScreen':
smouse.cpp:(.text+0x783): undefined reference to `SDL_WarpMouse'
/usr/bin/ld: ../lib/libbullfrog.a(libbullfrog_a-spalette.o): in function `LbPaletteSet':
spalette.c:(.text+0x1ca): undefined reference to `SDL_SetColors'
/usr/bin/ld: spalette.c:(.text+0x23f): undefined reference to `SDL_SetColors'
/usr/bin/ld: ../lib/libbullfrog.a(libbullfrog_a-spalette.o): in function `LbIPaletteRestoreLost':
spalette.c:(.text+0x2d3): undefined reference to `SDL_SetColors'
/usr/bin/ld: ../lib/libbullfrog.a(libbullfrog_a-sscreen.o): in function `LbScreenUpdateIcon':
sscreen.c:(.text+0x1fc): undefined reference to `SDL_WM_SetIcon'
/usr/bin/ld: ../lib/libbullfrog.a(libbullfrog_a-sscreen.o): in function `LbIScreenDrawSurfaceCreate':
sscreen.c:(.text+0x730): undefined reference to `SDL_SetColors'
/usr/bin/ld: ../lib/libbullfrog.a(libbullfrog_a-sscreen.o): in function `LbScreenSetupAnyMode':
sscreen.c:(.text+0xa1e): undefined reference to `SDL_SetVideoMode'
/usr/bin/ld: sscreen.c:(.text+0xa85): undefined reference to `SDL_WM_SetCaption'
/usr/bin/ld: ../lib/libbullfrog.a(libbullfrog_a-sscreen.o): in function `LbHwCheckIsModeAvailable':
sscreen.c:(.text+0x11a1): undefined reference to `SDL_VideoModeOK'
/usr/bin/ld: ../lib/libbullfrog.a(libbullfrog_a-sscreen.o): in function `LbScreenSwap':
sscreen.c:(.text+0x1903): undefined reference to `SDL_Flip'
/usr/bin/ld: ../lib/libbullfrog.a(libbullfrog_a-sscreen.o): in function `LbScreenSwapClear':
sscreen.c:(.text+0x1a07): undefined reference to `SDL_Flip'
/usr/bin/ld: ../lib/libbullfrog.a(libbullfrog_a-sscreen.o): in function `LbScreenSwapBox':
sscreen.c:(.text+0x1c06): undefined reference to `SDL_Flip'
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:804: swars] Error 1
make[2]: Leaving directory '/usr/ports/aur/swars/work/src/swars-0.3.8.2795/src'
make[1]: *** [Makefile:711: all] Error 2
make[1]: Leaving directory '/usr/ports/aur/swars/work/src/swars-0.3.8.2795/src'
make: *** [Makefile:502: all-recursive] Error 1

Версия gcc 12.2. Версия ядра 6.1.114. Как собрать? Как тут исправить эту ошибку и в чем именно она заключается, подскажите пожалуйста?

 ,

vbcnthfkmnth123
()

Не собирается lxb

Решил найти IDE для motif и нашел lxb. LXB An X/Motif interactive graphical user interface builder

https://ftp2.nluug.nl/ibiblio/X11/devel/builders/

В инструкции для сборки указано

To build:

1) If you have made any changes in the tool directory,
rebuild it first. If you have not, you do not need
to do anything there.

2) If you are on a Linux system, try a make with the
existing Makefile. It works for me.

Otherwise your next best thing is to hack the Makefile.

Or, you can try Imake by entering "xmkmf". But it's been
awhile since I checked out the Imakefile.

The provided Makefiles :

        Makefile.solaris:               Sun Solaris 2.4+
        Makefile.linux:                 Linux
        Makefile.ref:                           Generic (actually Linux...)

3) Then you can:

        1)      make clean
        2)      make depend
        3)      make
make clean и make depend проходят без ошибок. Только предупреждения
make depend
makedepend -I../include   *.c
makedepend: warning:  CallbackEd.c (reading /usr/include/stdio.h, line 33): cannot find include file "stddef.h"
        not in ../include/stddef.h
        not in /usr/include/stddef.h
makedepend: warning:  CallbackEd.c (reading /usr/include/stdio.h, line 36): cannot find include file "stdarg.h"
        not in ../include/stdarg.h
        not in /usr/include/stdarg.h
makedepend: warning:  CallbackEd.c (reading /usr/include/sys/types.h, line 144): cannot find include file "stddef.h"
        not in ../include/stddef.h
        not in /usr/include/stddef.h
makedepend: warning:  CallbackEd.c (reading /usr/include/X11/Xlib.h, line 51): cannot find include file "stddef.h"
        not in ../include/stddef.h
        not in /usr/include/stddef.h
makedepend: warning:  CallbackEd.c (reading /usr/include/string.h, line 33): cannot find include file "stddef.h"
        not in ../include/stddef.h
        not in /usr/include/stddef.h
makedepend: warning:  CallbackEd.c (reading /usr/include/strings.h, line 23): cannot find include file "stddef.h"
        not in ../include/stddef.h
        not in /usr/include/stddef.h
makedepend: warning:  CallbackEd.c (reading /usr/include/X11/Intrinsic.h, line 99): cannot find include file "stddef.h"
        not in ../include/stddef.h
        not in /usr/include/stddef.h
makedepend: warning:  code.c (reading /usr/include/stdlib.h, line 32): cannot find include file "stddef.h"
        not in ../include/stddef.h
        not in /usr/include/stddef.h
makedepend: warning:  code.c (reading /usr/include/alloca.h, line 24): cannot find include file "stddef.h"
        not in ../include/stddef.h
        not in /usr/include/stddef.h
makedepend: warning:  code.c (reading /usr/include/unistd.h, line 226): cannot find include file "stddef.h"
        not in ../include/stddef.h
        not in /usr/include/stddef.h
makedepend: warning:  lxb.c (reading /usr/include/time.h, line 29): cannot find include file "stddef.h"
        not in ../include/stddef.h
        not in /usr/include/stddef.h
makedepend: warning:  lxb.c (reading /usr/include/dirent.h, line 247): cannot find include file "stddef.h"
        not in ../include/stddef.h
        not in /usr/include/stddef.h
makedepend: warning:  top.c, line 10: cannot find include file "varargs.h"
        not in ../include/varargs.h
        not in /usr/include/varargs.h

Однако при make выводит ошибку

gcc -g -pipe -m486  -I../include     -c -o about.o about.c
gcc: error: unrecognized command-line option '-m486'
make: *** [<builtin>: about.o] Error 1
Версия gcc 12.2. Версия ядра 6.1.114. Как собрать?

 ,

vbcnthfkmnth123
()

МВД РФ столкнулось с невозможностью замены серверов на отечественных процессорах

Министерство внутренних дел России видит проблемы с заменой серверов на базе микропроцессора отечественного производства «Эльбрус» (разработчик – АО «МЦСТ»). Об этом рассказал заместитель начальника департамента информационных технологий, связи и защиты информации МВД Игорь Кашпур на заседании в Совете Федерации.

«Эксплуатация показала невысокую отказоустойчивость серверов на базе процессоров „Эльбрус“. У МВД фактически отсутствует возможность оперативной замены такого серверного оборудования при выходе его из строя вследствие форс‑мажорных обстоятельств — ввиду того, что его поставки осуществляются только в плановом порядке», — отметил Кашпур. Он пояснил, что в МЦСТ на запросы МВД отвечают, что резерв процессоров «Эльбрус» распределён, а новые партии временно не производятся.

По словам Кашпура, с 2020 по 2024 год МВД закупило 709 серверов с «Эльбрусами», из них 32 комплекта — в текущем году. Эти серверы используют для работы сервисов автоматизации деятельности центров автоматизированной фиксации административных правонарушений в области дорожного движения в базе специального ПО «Паутина», а также для единого информационного ресурса регистрационного иммиграционного учёта.

источник - https://www.vedomosti.ru/technology/articles/2024/11/13/1074631-mvd-pozhalova...

 , ,

vbcnthfkmnth123
()

Openmw с поддержкой DOS

Сабж

источник - https://github.com/matrixsmaster/openmw-fork/tree/dos

Можно запустить те же TES 1 Arena и TES 2 Daggerfall внутри самой игры.

Выглядит это примерно вот так - https://www.youtube.com/watch?v=m3_be5weKW8

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

Вот конкретная реализация в виде мода для этого форка - https://www.nexusmods.com/morrowind/mods/47045?tab=description

Для работы использует вот эту библиотеку - https://gitlab.com/sciloaf/doscard

Linux тут притом, что оно работает на данный момент только на линуксе. В новых версиях doscard какая-то несовместимость в оффтопиком.

 

vbcnthfkmnth123
()

Logitech C270 HD не работает микрофон в google chrome

Есть Logitech C270 HD в наличии. Проверил в guvcview и с помощью arecord -d 3 /tmp/mic.wav && aplay /tmp/mic.wav звук с микрофона мебкамеры C270 HD записывается. Но в именно в хроме, версии 130.0.6723.91 микрофон видит, но считает его отключенным. Дал ему даже разрешение на использование микрофона, но он все равно считает, что микрофон выключен. Саму камеру видит, картинка идет, но без звука.

Использую alsa. Пробовал ставить pulsa, там вообще никакие микрофоны не видит в хроме.

Ядро версии 6.1.114, дистрибутив CRUX.

Что я упускаю, подскажите мне пожалуйста? Хочется понять почему именно в хроме-то не работает микрофон.

UPD: Хром при попытке запуска проверки камеры выдает такое.

ALSA lib pcm.c:8650:(snd_pcm_set_params) Channels count (2) not available for CAPTURE: Invalid argument

 , ,

vbcnthfkmnth123
()

Младший админ Linux

Рассчитываю на 40-50к в месяц при 8 рабочих часах в день при графике 5/2 или при 12 часов в день при графике 2/2

Работал год в коллцентре в техподдержке. В основном занимался работой эникея, и удаленной поддержкой пользователей. Было небольшое обслуживание серверов на Ubuntu, CentOS.

До этого работал год в одной небольшой фирме, где занимался поддержкой сайта на системе управления контентом (CMS) Wordpress и работой эникеем.

Вносил изменения в базу данных Системы управления контентом (CMS) Wordpress

Фиксил баги(визуальные, убирал ненужные теги)

Добавлял фичи по пожеланию заказчика(поиск, код гугл Аналитики)

Занимался технической поддержкой пользователей, удаленно по подключению через Anydesk и по телефону.

Занимался технической поддержкой рабочих мест

Занимался установкой, настройкой и обновлением рабочих мест

Вел учет компьютеров и орг техники

Занимался поддержкой сервисов печати

Вел мониторинг и диагностику работы сервисов

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

Переносил систему с одного диска ext4 на другой.

По линуксу там было задачи, вроде отправить в БД(Mysql, бд oracle) запрос и посмотреть результаты.

Или например подключиться по ssh, прописать ключи ssh и ещё правила файрволла отредактировать(iptables)

Опыта мало, но готов учится. Умею использовать гугл.

Что умею:

Работать с системой управления контентом (CMS) Wordpress работу ОС, в том числе на нижнем уровне (MBR/GPT/INIT/LVM/DD); стек TCP/IP;

основные линуксовые команды (из состава CoreUtils; grep;)

systemd'шные, символьные и жесткие ссылки);

права пользователей/групп (chmod/chown);

если какому-то софту не хватает зависимостей, то могу c LD_LIBRARY_PATH прописать ему зависимости, чтобы он работал.

 

vbcnthfkmnth123
()

Обучение, повышение квалификации.

Хотелось бы развиться. Например до линуксоадмина или девопса. Пока что работал год в техподдержке колл-центра и до этого год на одну фирму эникеем. Мне тут подсказали курсы от яндекса, но стоимость у них немаленькая. Можете подсказать пожалуйста стоит ли оно того или лучше поискать что-то другое, если я хочу повышения квалификации?

 

vbcnthfkmnth123
()

Разработчика процессоров «Эльбрус» передали под внешнее управление

Сначала МЦСТ собиралась переносить свои производственные мощности на завод «Микрон», но не получилось.

Введение внешнего управления на МЦСТ было вызвано провалом гособоронзаказа (ГОЗ). Было ли это связано со срывом сроков поставок или же с невыполнением опытно-конструкторских работ, неизвестно.

источник - https://www.vedomosti.ru/technology/articles/2024/09/30/1065304-razrabotchika...

 ,

vbcnthfkmnth123
()

Видеокарты с поддержкой nouveau

Захотелось пощупать nouveau, прям чтобы вообще без блобов. Судя по официальному сайту есть хорошая поддержка nouveau у видеокарт серии 710 и 730, которые укладываются в мой бюджет. Но гугл говорит, что видеокарты 730 бывают разные и могут быть с такой архитектурой, которая не поддерживается nouveau. У кого-нибудь есть инфа с какими характеристиками видеокарты серии 730 имеют другую архитектуру?

 

vbcnthfkmnth123
()

Какую термопасту мазать на intel gma 950? КПТ-8 норм?

А то купил материнку, хочу попробовать запустить на ней какой-нибудь дистрибутив с полностью свободным софтом, рекомендованный FSF например, а перед этим надо заменить там термопасту на той же видеокарте встроенной.

 

vbcnthfkmnth123
()

Doom(1993) «портировали» на нейросеть

Мы представляем GameNGen , первый игровой движок, полностью работающий на нейронной модели, которая обеспечивает взаимодействие в реальном времени со сложной средой по длинным траекториям с высоким качеством. GameNGen может интерактивно моделировать классическую игру DOOM со скоростью более 20 кадров в секунду на одном TPU. Прогнозирование следующего кадра достигает PSNR 29,4, что сопоставимо со сжатием JPEG с потерями. Оценщики-люди лишь немного лучше случайного различения коротких клипов игры от клипов симуляции. GameNGen обучается в два этапа: (1) RL-агент учится играть в игру, и сеансы обучения записываются, и (2) диффузионная модель обучается для создания следующего кадра, обусловленного последовательностью прошлых кадров и действий. Дополнения к условиям обеспечивают стабильную авторегрессивную генерацию по длинным траекториям.

источник - https://gamengen.github.io/

видео как это выглядит - https://gamengen.github.io/static/videos/e1m1_t.mp4

То есть если кратко, то это генерация игры в Doom в реальном времени с помощью нейросети. Нейросеть анализирует нажатия клавиш пользователя и генерирует игровой процесс.

 ,

vbcnthfkmnth123
()

Баг с турбобустом на ядре 6.1.105

У меня на ядре 6.1.105 в покое бустятся почти все ядра до максимальной частоты. Гипертрейдинг отключен.

Every 2.0s: grep MHz /proc/cpuinfo

cpu MHz         : 3300.000
cpu MHz         : 3300.000
cpu MHz         : 3300.000
cpu MHz         : 3031.087
cpu MHz         : 3300.000
cpu MHz         : 3227.101
cpu MHz         : 3300.000
cpu MHz         : 3300.000
cpu MHz         : 3300.000
cpu MHz         : 3300.000
cpu MHz         : 3300.000
cpu MHz         : 3300.000

Вот конфиг ядра. https://pastebin.com/b4wyZf83

Процессор

dmesg | grep -i Xeon
[    0.654857] smpboot: CPU0: Intel(R) Xeon(R) CPU E5-2678 v3 @ 2.50GHz (family: 0x6, model: 0x3f,
stepping: 0x2)

Просьба проверить воспроизводится ли у кого-то ещё этот баг на процессорах Intel с этой версией ядра.

 ,

vbcnthfkmnth123
()

Не собирает kiwix-desktop 2.3.1[Решено]

Такие ошибки выдает при попытке сборки отсюда - https://github.com/kiwix/kiwix-desktop/archive/refs/tags/2.3.1.tar.gz. Собираю с libkiwix v13.10 Собираю вот так

        export CFLAGS+=" ${CPPFLAGS}"
        export CXXFLAGS+=" ${CPPFLAGS}"
        qmake PREFIX="$PKG/usr" .
        make
        make  install
Ошибки появляются после непосредственно сборки, то есть после make
src/urlschemehandler.cpp:136:34: error: no matching function for call to 'kiwix::SearchRenderer::SearchRenderer(const zim::SearchResultSet, IdNameMapper*, int, int&)'
  136 |                             start);
      |                                  ^
In file included from src/urlschemehandler.cpp:9:
/usr/include/kiwix/search_renderer.h:44:3: note: candidate: 'kiwix::SearchRenderer::SearchRenderer(zim::SearchResultSet, unsigned int, unsigned int)'
   44 |   SearchRenderer(zim::SearchResultSet srs, unsigned int start, unsigned int estimatedResultCount);
      |   ^~~~~~~~~~~~~~
/usr/include/kiwix/search_renderer.h:44:3: note:   candidate expects 3 arguments, 4 provided
/usr/include/kiwix/search_renderer.h:34:7: note: candidate: 'kiwix::SearchRenderer::SearchRenderer(const kiwix::SearchRenderer&)'
   34 | class SearchRenderer
      |       ^~~~~~~~~~~~~~
/usr/include/kiwix/search_renderer.h:34:7: note:   candidate expects 1 argument, 4 provided
src/urlschemehandler.cpp:142:36: error: no matching function for call to 'kiwix::SearchRenderer::getHtml()'
  142 |     auto content = renderer.getHtml();
      |                    ~~~~~~~~~~~~~~~~^~
/usr/include/kiwix/search_renderer.h:90:15: note: candidate: 'std::string kiwix::SearchRenderer::getHtml(const kiwix::NameMapper&, const kiwix::Library*)'
   90 |   std::string getHtml(const NameMapper& mapper, const Library* library);
      |               ^~~~~~~
/usr/include/kiwix/search_renderer.h:90:15: note:   candidate expects 2 arguments, 0 provided
make: *** [Makefile:1587: library.o] Error 1
make: *** Waiting for unfinished jobs....
make: *** [Makefile:1699: urlschemehandler.o] Error 1
make: *** [Makefile:1530: kiwixapp.o] Error 1

Есть идеи как поправить чтобы собиралось?

 

vbcnthfkmnth123
()

После обновления ядра оно паникует что не может найти инит[Решено]

Я так понимаю что в новых версиях другие иниты кроме systemd запрещены? Такое с ядром 6.1.105, однако ядро 6.1.77 с тем же конфигом и инитом грузит нормально.

Crux 3.7

https://i.imgur.com/WyGrBSh.jpeg

 ,

vbcnthfkmnth123
()

Одноплатники с максимальной поддержкой open souce

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

Single-board computers with minor flaws

https://www.fsf.org/resources/hw/single-board-computers

Rockchip devices based on the RK3288

Вбил в гугл, нашел что ASUS Chromebook C201 сделан на этой плате, смотрю в https://libreboot.org/docs/install/c201.html и вижу что там видео не инициализируется с Libreboot, так что делаю вывод что информация тут малость устарела.

 

vbcnthfkmnth123
()

King Under the Mountain (Mountaincore) стал открытым исходным кодом, поскольку разработка игры была прекращена

King Under the Mountain от разработчика Rocket Jump Technology, стратегической игры о строительстве поселений, где основой геймплея является симуляции, которая претерпевала большое обновление и ребрендинг с Mountaincore, в конечном итоге закрылась. Это игра по управлению цепочками поставок городского строительства.

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

Эта игра написана на Java (сейчас версия 17) с использованием LibGDX.

Ссылка на Github с исходным кодом игры

Перемещено hobbit из games

 ,

vbcnthfkmnth123
()

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

Это перевод части поста под авторством 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
()

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

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

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

 ,

vbcnthfkmnth123
()

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

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

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
()

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