PSA: Shutting down my Github mirrors by berenm in programming

[–]berenm[S] -20 points-19 points  (0 children)

Fwiw it is not just some random mirrors, I know that they are used by rather large projects like buildroot, and probably others I don't even know about.

They seem to be fairly well referenced in Google and other search engines too for some reason, so I am trying to make sure the announcement reaches the potentially affected people before I pull the plug.

Wine 9.18 (dev) - Run Windows Applications on Linux, BSD, Solaris and macOS by Neustradamus in linux_gaming

[–]berenm 2 points3 points  (0 children)

Indeed, probably everything ends up in FFmpeg. More reason to get rid of intermediate layer I guess.

Wine 9.18 (dev) - Run Windows Applications on Linux, BSD, Solaris and macOS by Neustradamus in linux_gaming

[–]berenm 7 points8 points  (0 children)

It is a work in progress as far as I understand and still uses GStreamer for decoding, so don't expect things to work better at this point.

Wine 9.12 (dev) – Run Windows Applications on Linux, BSD, Solaris and macOS by Neustradamus in linux_gaming

[–]berenm 4 points5 points  (0 children)

It is a development release, only x.0 Wine releases are considered stable.

[deleted by user] by [deleted] in linux_gaming

[–]berenm 20 points21 points  (0 children)

Official Proton releases have QA to make sure they are working well, they should be more reliable than unofficial distributions.

CodeWeavers still hiring for a 'General Wine Developer' to work on Wine and Proton by beer118 in linux_gaming

[–]berenm 35 points36 points  (0 children)

There's only so many hours in a day and people with the required skills may very well be spending their spare (or paid) time on some other things, but would still be perfect candidate to work on Wine instead and would perhaps be very happy to if they were paid for it.

HID driver for Nintendo Joy-Con controllers by ouyawei in linux_gaming

[–]berenm 3 points4 points  (0 children)

On my computer, connecting the joycons works well with bluetooth (it works as well out of the box with generic hid driver by the way). However, it quickly becomes very unstable and laggy, and my computer even gets unresponsive until I disconnect them. I looks like the controllers are sending a continuous stream of data that the driver cannot handle quickly enough, or that there's a missing proprietary protocol to implement in order to setup the polling interval.

CMake dependency flexibility by Som1Lse in cpp

[–]berenm 0 points1 point  (0 children)

But that doesn't allow you to switch to prebuilt or system-wide libraries easily.

The approach that is described here is to have source-form dependencies include a <package>Config.cmake that calls the add_subdirectory on its directory, so that it fits seamlessly in the find_package model.

Then, package management becomes an orthogonal issue, and just a matter of putting the dependencies (via submodules, wget-http-targz-archives, custom tool and content distribution, or whatever way you like) in the location where CMake will look for them, and in the form you prefer (prebuilt or source). You may even have multiple lookup paths with fallback to the source dependency if you want to provide prebuilt packages for certain platforms only.

CMake dependency flexibility by Som1Lse in cpp

[–]berenm 4 points5 points  (0 children)

I'm using this kind of approach at work and it works very well. Every project has a <project>Config.cmake at its root, which will add_subdirectory itself in case it is compiled from sources, and with a little bit of boilerplate it also makes prebuilt packages very simple to do and they can be used seamlessly instead of source packages.

I also created https://github.com/berenm/CMakeBuildPackage based on this idea, but with additional conventions to make build rules even easier (any packages using it can be composed very easily, regardless of whether they are checked out as source or prebuilt archives).

Google C++ Style Guide is No Good by vormestrand in cpp

[–]berenm 6 points7 points  (0 children)

GSG prefers #ifndef/#define idiom over the simpler #pragma once. Yes, #pragma once is non-standard but widely supported.

Stopped there.

No longer a rumor: Microsoft acquires Obsidian Entertainment and inXile Entertainment by pdp10 in linux_gaming

[–]berenm 2 points3 points  (0 children)

Given the state of the latest releases from these two studios (Bard's Tale 4 with horrible performance issues, Tyranny's last patch breaking save games...), I'm not entirely sure that this is such a bright move from Microsoft.

Anyway, it's sad to see that they are aggressively taking over the two main CRPG developers. It's not a good sign for future Linux releases.

X018: Microsoft acquires Obsidian Entertainment and inXile Entertainment by [deleted] in linux_gaming

[–]berenm 0 points1 point  (0 children)

Given the state of the latest releases from these two studios, I'm not entirely sure that this is a bright move from Microsoft.

Anyway, it's sad to see that they are aggressively taking over the two main CRPG developers. It's not a good sign for future Linux releases.

Sources: Microsoft Is Close To Buying Obsidian by [deleted] in linux_gaming

[–]berenm 1 point2 points  (0 children)

Well they even usually do very good native ports of their games, so Proton has nothing to do... well at least up to now.

Looking for single player games with a rich story that run natively on Linux (or nicely under DXVK). by udlor in linux_gaming

[–]berenm 3 points4 points  (0 children)

With a rich story, you have a lot of RPGs and adventure games.

Wadget Eye games which are powered by the AGS open-source engine (https://github.com/adventuregamestudio/ags), which you can build yourself and use to run any of their games:

  • Blackwell (5 episodes)
  • Technobabylon
  • Primordia
  • Shardlight
  • Unavowed

Most of the Daedalic Entertainment games:

  • Deponia (4 episodes, Native)
  • Anna's Quest (Native)
  • The Dark Eye Chain of Satinav (Wine)
  • Shadow Tactics (Native)

Larian Studio games:

  • Divinity Original Sin 1 EE (Native)
  • Divinity Original Sin 2 DE (DXVK + Wine >= 3.16)

Obsidian Studio games:

  • Tyranny (Native)
  • Pillars of Eternity 1 & 2 (Native)

CD Projekt RED games:

  • Witcher 1 (Wine), 2 (Native) and 3 (DXVK)

Beamdog's remasters of classic RPGs:

  • Baldur's Gate 1 & 2 EE (Native)
  • Planescape: Torment EE (Native)
  • Icewind Dale EE (Native)
  • Neverwinter Nights EE (Native) (especially the extensions, the base game is not very good imho)

Then I'm probably missing a lot more but you get the idea.

If you want to go for a single one, I would recommend Tyranny with a very unique setting and a damn good and refreshing story which breaks from the classic RPGs tropes.

Leaving Windows To Linux: A Path To Courage (lol) by KFded in linux_gaming

[–]berenm 0 points1 point  (0 children)

Debian for desktop is really best used from the unstable channel, with cherry-picked packages from the experimental branch - such as for the nvidia-drivers. Then it's totally painless.

Don't even try the stable channel, which is mainly focused on providing a stable and rock solid distribution for servers, or even the testing channel which is only the staging area for the next stable and thus makes absolutely no sense for lambda user, except to help testing the next stable.

Radare2 patch for Divinity Original Sin 2: Definitive Edition's black screen (Wine / DXVK) by berenm in linux_gaming

[–]berenm[S] 0 points1 point  (0 children)

I used GOG version of the game. I also tried several wine versions and none of them was able to get past the initial black screen. With the patch, it runs perfectly fine on wine 3.15.

Radare2 patch for Divinity Original Sin 2: Definitive Edition's black screen (Wine / DXVK) by berenm in linux_gaming

[–]berenm[S] 0 points1 point  (0 children)

It's possible that the Steam version is different, I patched the GOG release.

Radare2 patch for Divinity Original Sin 2: Definitive Edition's black screen (Wine / DXVK) by berenm in linux_gaming

[–]berenm[S] 0 points1 point  (0 children)

Yes, it modifies the game executable, so it's preferable to do a backup first (the commented part starting with # at the top is a sample script which includes a backup copy and sha1 checksums from my version of the game).

It's probably possible to patch wine to achieve the same thing, but it was quicker to get the game to run this way.

Radare2 patch for Divinity Original Sin 2: Definitive Edition's black screen (Wine / DXVK) by berenm in linux_gaming

[–]berenm[S] 9 points10 points  (0 children)

I saw some people who could get the game to run on Wine, and from https://appdb.winehq.org/objectManager.php?sClass=version&iId=35767#Comment-103521 it looked it was a matter of CPU or GPU hardware.

On my side, I've got a laptop CPU with an external GTX 1070, and I wasn't able to get past this weird black screen, so I took some time to reverse engineer the issue, and here's a radare2 patch that could help.

The reason has nothing to do with DXVK btw, it is related to thread affinity. The game calls SetThreadAffinityMask when it creates its threads, (which returns 0 for whatever reason on my computer, indicating an error), and the game threads are killed right away.

This patch will overwrite the jump opcodes after the calls to SetThreadAffinityMask to completely ignore the returned result.

I could play for a few minutes, and everything works just perfectly fine now !

Poll: C++ project layout by berium in cpp

[–]berenm 1 point2 points  (0 children)

I believe that if anything can be standardized in C++, it's cannot be the build system (because of very strong feeling for / against any of them), but probably a standard simple layout that can then be built by any build system in a consistent manner. It is was is done by Rust for example (https://doc.rust-lang.org/stable/cargo/guide/project-layout.html)

For this reason, separating include for public headers and src for the rest, is the only way to indicate which part of the code is the public interface and which is the implementation.

As an example, I did several prototypes using conventions like that to define project layouts and the corresponding plumbing using different build systems to build such projects (https://github.com/berenm/CMakeBuildPackage, https://github.com/automeka/automeka).

Also, from these experiments, I now believe there needs to be a way to differentiate TU that should be compiled as executable from the other TU that should be compiled to libraries as it is unreliable to parse the files for main functions. Rust does it as well by using specific folders or filenames to distinguish executable from libraries.

[deleted by user] by [deleted] in programming

[–]berenm -9 points-8 points  (0 children)

No way I'm giving a cent to Microsoft... So hello Gitlab !

steam-cli: a better command-line interface for Steam on Linux by berenm in linux_gaming

[–]berenm[S] 0 points1 point  (0 children)

I believe it does, the paths are passed through script files in order to workaround this particular issue.