Why is the cutscene/FMV problem in Linux gaming so difficult to fix?

HoukaiAmplifier99@lemmy.fmhy.ml to Linux Gaming@lemmy.ml – 24 points –

I see it a lot in visual novels, older PC games and PC ports of older non-PC games. It sounds so trivial on paper, like... just play the video? But I know it's not. Why though? Can we ever expect the problem to be fully solved? Right now it kinda seems like an uphill struggle, like by fixing cutscene playback in one game doesn't really seem to automatically fix it for other games, so it's not a situation where a convenient one size fits all solution works.

And I don't really get it, because if it's related to video codecs, there are only so many codecs out there, right? And then you also expect that there's probably just a few popular ones out there that'll be used for 99% of all cases, with a few odd outliers here and there perhaps.

33

In older times when in-game scenes weren't invented yet game studios often played Bink videos.

You need a licence for the codec meaning someone has to pay to play.

Wouldn't that someone be the game company, when they first made the game? I can't imagine games rely on some system library to decode bink, it must be embedded in engine. Besides, pretty sure bink can be played on vlc, so lack of free/open source decoders isn't the issue.

It's not just a FOSS issue; it's a software patent issue.

VLC doesn't attract a huge amount of attention because they don't really make any money and would just get forked if someone did try to destroy them.

However, larger distros with commercial backing (OpenSUSE springs to mind) often won't directly include potentially patent-infringing packages, so you have to get them from a quasi-third-party repo like Packman.

The codec is embedded in the game. You are not allowed to crack a game to make it play a video or reroute it to some other software. That's illegal.

?

Op is saying the cutscenes don't work in-game. Nobody said anything about cracking. And I'm saying if the problem was the lack of a system decoder that could easily be solved since there are free decoders available.

As I wrote the codecs were usually included in the game. No sane developer assumed that they are already installed in the system.

Now how do you get a game to not use the codec it's shipped with? By cracking.

If the codec was included in the game you wouldn't need to pay to use it. It was already paid by the developers.

Edit: not to mention modding games is legal in most cases

Having the runtime of the codec installed in a wine prefix is not the same as having it work. Just like wine has to work on the codec to get the data to it and output back to the game, in a way that the game, the codec and wines d3d implementation can deal with it. This is made mode difficult by some codecs doing output themselves and some handing buffers back to the game for display.

This is hard and gruesome work. With painstaking observing and duplicating behavior, since a lot is not documented and for a clean room implementation the person implementing it can not look at disassembled binaries or (hypothetical) code-leaks.

Now how do you get a game to not use the codec it’s shipped with? By cracking.

That is just wrong. "Cracking" is the circumvention of Copy-Protection. Before Denuvo afaik no Copy-Protection had data-integrty checks, so modification of game Behavior (aka Modding) did not require tampering with the Copy Protection. Best Example SKSE for Skyrim, a tool adding a lot of additional functions to the internal scripting language while still keeping copy protection in tact.

Isn't that more of a legal thing than a technical one?

Yeah. It is. But it's a powerful one. 😬

Kinda weird, typically there's always a... less than legal solution for problems like that, y'know?

If money is involved people will unsheath their knifes.

A lot of games rely on Windows Media Player to play videos. So that needs to be accurately reverse engineered for videos to work properly through Wine and Proton.
Support is slowly improving.

And the Unity game engine supports very few video formats on Linux. So lazy native ports with MP4 videos won't work, they would probably just crash the game. Unity doesn't support MP4 on Linux.

What about the WMP versions in winetricks? Are they incomplete?

No idea, honestly. I'm guessing winetricks downloads the actual WMP, which would explain why it's not included by default. Not sure though

That'd make it even stranger, like wouldn't that reliably always fix the issue, since that's the actual dependency? It looks a bit like it's not entirely completely somehow though.

@HoukaiAmplifier99 I see it rarely nowadays, but yes, proprietary or old/rare codecs are the heart of it.

Most recent example I can think of is the Mega Man ZX games in the Mega Man Zero/ZX Legacy Collection, which are PC ports of old NDS games. The cutscenes just show a white screen. Did manage to fix that thanks to someone's help on reddit (was related to mfplat and another component iirc), but there are also instances where that won't work (I tried to help someone fix a cutscene issue on an obscure visual novel, but I couldn't get that to work if my life depended on it).

Modern games do seem fairly safe though, like you said.

@HoukaiAmplifier99 I might have made this up, but I think I recall reading that Valve routinely licences old and weird codecs so that they can build support in Proton for some of these fringe cases.

The only time I can remember seeing it recently was in an old game off GOG called Conquest: Frontier Wars. Like others, it just showed a coloured pattern, but with that game it couldn't recover from not being able to play and would crash after.

Interesting, I take it you don't remember the source? I might want to look into that.

@HoukaiAmplifier99 I don't remember my source, and I can't find anything searching around. I either made it up or it was an unsubstantiated reddit comment that stuck in my brain :)

For real instances of this problem though, look at Glorious Eggroll if you haven't already. Contains a number of additional video codecs Valve can't yet support directly.

Oh yeah Proton-GE is definitely my go-to usually, has fixed some stuff before, but there are still cases where it doesn't help. Idk what it does under the hood though.

Contains a number of additional video codecs Valve can't yet support directly.

Why would valve need to support the codecs? I don't think Microsoft goes out of its way to support proprietary codecs in windows for a games to be able to decode them. What makes that necessary when running the game in proton?

@Lojcs Microsoft does exactly that. They licence a number of proprietary codecs for inclusion in Windows for the convenience of users.

Running under Wine, some alternative decoders can be used, but many proprietary codecs don't have freely-available decoders available. Under Proton, many free decoders can be used like Wine, but some prohibit commercial use or otherwise can't be implemented in Proton via Valve. GE-Proton manages the best of both worlds.

Considering that windows doesn't even have a free h.265 software decoder to use in its video app, it's hard to believe that it might support codecs obscure enough to not have open source decoders even in GE proton. Thanks for the reply tho

Is there anything VLC can't play ? Why not use the same libraries ? Would it be illegal for Valve to use that?

VideoLAN (organization behind VLC) is in France, which is outside US juridiction. The methods used by VLC are authorized/legal. Software is also not patentable there. That's why it's still up after all these years. You can learn more on their site: https://www.videolan.org/legal.html

Valve, however, must obliged to US juridiction meaning they can't do the same as VLC. Software can also be patented when meeting certain technical requirements.

It seems to struggle with screen recordings made by gnome. Last time I did that it played the video squashed into the left half of the screen