sharkwouter / minigalaxy

A simple GOG client for Linux
https://sharkwouter.github.io/minigalaxy/
GNU General Public License v3.0
1.1k stars 71 forks source link

"Windows-only" ScummVM/ResidualVM/DOSBox titles #64

Open metafarion opened 4 years ago

metafarion commented 4 years ago

GOG distributes a great many games that run within DOSBox, ScummVM, etc, and although these tools are cross-platform, GOG packages them only for Windows. As such they are not downloadable via Minigalaxy even though they can run on Linux.

I propose a framework to bring these Windows-only packages the last mile; make them available for download in Minigalaxy and then playable through some kind of scripted install using innoextract and the necessary interpreter/emulator. These scripts would likely need to be tuned to each game, so perhaps they could even be user-contributed.

So far I've tested Riven and Starship Titanic (ScummVM), and Myst 3 (ResidualVM), and their GOG-downloaded packages have all required very minimal reconfiguration to work in Linux. I'd be happy to do any legwork that is needed to "port" these processes to Minigalaxy.

metafarion commented 4 years ago

Other possible games with native Linux engines: DOOM(2) via Doomsday Descent(2) via DXX Rebirth Freespace(2) via FSOpen

goodevilgenius commented 4 years ago

This would be great, but are all these sorts of titles packaged the same way?

For example, I manually downloaded the Ultima4 installer, and used wine to install it locally. It includes a windows copy of dosbox with it.

So, I had to cat the Windows shortcut (.lnk) file to figure out exactly how it was calling Dosbox. From there, it was a pretty simple matter to create a .desktop file that used my native Dosbox to do the same thing.

That could be automated for that program, but is every Dosbox game on GOG packaged the same way, and could likewise be automated in the same way?

And I was unable to use innoextract on the installer to get the contents out, I definitely had to use wine to do it.

Maybe there could be some sort of user contributed setup scripts per game.

goodevilgenius commented 4 years ago

And maybe there could be a section that simply allowed users to download the installers for other platforms, so they could figure out what to do with it themselves.

sharkwouter commented 4 years ago

I've tested this today, but dosbox and scummvm games offered for Windows usually won't work in Linux without wine or configuration file changes. This makes this much more complex. The fact that dosbox and scummvm usually work fine in wine doesn't help either.

metafarion commented 4 years ago

We would absolutely have to modify the config files, and likely create a custom install script for each game; I believe this is how programs like Lutris operate. There's no question though that installing using Wine is easier... if it works. I've had mixed experiences with Wine/Proton: They seem to work well if given all the right settings for a particular title, or if Valve has specifically put effort into it, though still with a variety of possible penalties in performance, functionality, visual fidelity, interaction with the window manager, etc. I am completely convinced though, that using a native solution almost always yields a superior user experience. That said, I can see how the Wine approach is much easier to implement, especially this early in Minigalaxy's development.

arrowgent commented 4 years ago

controlling how windows games are installed on linux is outside the scope of the project what you do with the files after owning them is your own business/problem

however, allowing users to download windows versions of games they own is not one reason i do not use this project is because you cannot download "windows" titles that you own

aukondk commented 4 years ago

Boxtron, Roberta and Luxtorpeda do this for Dosbox, ScummVM and native executables respectively on Steam. There's probably a lot of overlap as far as individual configuration is concerned. https://luxtorpeda.gitlab.io/

arrowgent commented 4 years ago

gog specifically installs unique dosbox and scummvm per game each .sh/.exe installer has its own package

if you want you can extract the data and put them all in your own system installed dosbox or scummvm which is what i do. its better to have one scummvm setup for 15 games than 15 different scummvm setups for each game.

boxtron/roberta/luxtorpeda is great on steam but i agree goes outside the scope of this project

one example i can think of that does use a linux version is BladeRunner it uses a .sh installer and installs its own version of scummvm for linux (NOT WINDOWS)

sharkwouter commented 4 years ago

Minigalaxy actually will use your system's Dosbox and Scummvm by default instead of the bundled one. This fixes some issues on distributions which aren't officially supported by GOG. I'm not quite sure if this issue should remain open, because it requires game specific code and a way to extract Windows games. We have neither of those at this point.

metafarion commented 4 years ago

If it's impractical to implement, then forget it. My original suggestion was based on testing a few games that GOG didn't support for Linux even though they used Linux-native engines. Wine is an easy solution, but obviously not my favorite, and I had 100% success rate simply pointing these engines at innoextracted files. I don't know what difficulties other folks have had, but clearly it's not as cut and dried as I thought.

sharkwouter commented 4 years ago

It might be implementable in the future, so I'll keep it open, but right now it looks unlikely indeed.

Summertime commented 3 years ago

Might be worth making a general "external tools/games/etc" engine that would run off of some toml or yaml or json files in a seperate repo (so it can be updated independently / have slightly more relaxed requirements for PRs or whatever / more maintainers)

each external item could either add an extra item(s) to the games list (e.g. for engine replacements like VCMI for HoMM3), or replace item(s) in the games list (e.g. using system scummvm instead of gog's scummvm, and what minimal config tweaks to enable that).

Still not any more feasable than before, but, it seems generalisable to more things than just replacing gog given tools, especially if a database of config edits might be needed

LeXofLeviafan commented 2 years ago

At the very least, supporting custom runner scripts should be allowed… Or rather, documenting the existing decision-making logic (it falls back to start.sh… eventually) and/or changing its priority (based on a per-game setting at the very least), since as of now one would literally have to scour the codebase to find out how to do it or even if it can be done in the first place.

Case in point: I had to do it to find out how to run DOS games in native DOSBox (in part because the one running in Wine didn't receive required CLI arguments)… imagine my surprise upon finding out that it required removing unins000.exe and renaming DOSBOX/ to dosbox/.