It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
How do you find out which files need to be written? Do you play the games and look for modifications? Do you look at system calls in the binaries of the games (not impossible, and maybe more reliable)?

May I suggest that you place a link to your website on the first post (or to another, more relevant post on this subject), and write a little bit about why this project exists, what problems does it solve, how it works, how can someone contribute to it, and so on? I think it would help with adoption.
avatar
Gede: How do you find out which files need to be written? Do you play the games and look for modifications? Do you look at system calls in the binaries of the games (not impossible, and maybe more reliable)?
I run the game, play with settings and saved games, then run a custom-made script that looks for newly created and modified files. I don't know how to get this kind of info directly from the binaries, but any help on this would be most welcome ;-)

avatar
Gede: May I suggest that you place a link to your website on the first post (or to another, more relevant post on this subject), and write a little bit about why this project exists, what problems does it solve, how it works, how can someone contribute to it, and so on? I think it would help with adoption.
Yeah, it's been quite a long time since I promised myself I would do something about it, let's hope I'll find some time for this soon…
Post edited September 23, 2016 by vv221
Pinned the first post for better visibility.

@vv221, you should add a link to the original play.it site to the OP if you haven't already :)
avatar
JudasIscariot: Pinned the first post for better visibility.
Big thanks for that Judas, you’re the best!

EDIT: Hmm, this thread doesn’t seem to appear in the stickies list for this forum, did I misunderstood something?

avatar
JudasIscariot: you should add a link to the original play.it site to the OP if you haven't already :)
Yep, I’m planning to rewrite the first post during this week-end.

EDIT: While we’re waiting for the rewrite, a link to the full list of supported games has been added.
Post edited September 23, 2016 by vv221
avatar
JudasIscariot: Pinned the first post for better visibility.
avatar
vv221: Big thanks for that Judas, you’re the best!

EDIT: Hmm, this thread doesn’t seem to appear in the stickies list for this forum, did I misunderstood something?

avatar
JudasIscariot: you should add a link to the original play.it site to the OP if you haven't already :)
avatar
vv221: Yep, I’m planning to rewrite the first post during this week-end.

EDIT: While we’re waiting for the rewrite, a link to the full list of supported games has been added.
I pinned the first post in this thread :) So "to pin a post" means "to make the first post in a thread a sticky within a given thread" :)

You can test it yourself: go to the first page of this thread, see your OP, go to the last page, see your OP at the top :)
avatar
JudasIscariot: (…)
OK, now I see it, the first page of this thread probably wasn’t the best one to look at to notice it ;-P

And to stay on the first page of this forum, I’ve some other plans… Like publishing more content on ./play.it, more often!
avatar
vv221: I run the game, play with settings and saved games, then run a custom-made script that looks for newly created and modified files. I don't know how to get this kind of info directly from the binaries, but any help on this would be most welcome ;-)
That is a time-consuming process, and it really shows some dedication to your project. The problem is that it is not cover every possible instance. If the game needs to write or even create some file in a rare situation (in the late game, for example) that you did not consider, the game may end up failing (and make some user unhappy).

I'm afraid I do not have a solution for you, but here was my idea: search for system calls being made by the executable. It is possible that helpful tools exist for elf-executables, but for Windows, I don't know.

This is how I would approach this: look at the executables in an hex editor, and search for the names of the files. Try to look at the surrounding context to distinguish strings that refer to an open() system call from other strings that may exist in the files. Then try to see the flags that indicate if it is a read-only operation or a read-write operation. I'm guessing those flags always go into the same registry (darn, I hope this won't need using a deassembler). The same thing may be done for files being created.

Why this may not work:
1. compiler optimization may obscure the relevant pattern;
2. the file names may not be part of the executable, and created through a process or stored in some data file.

So this is no silver bullet. I could help with coverage if it worked.


Another possible approach would be using an overlay filesystem or an union filesystem. Overlayfs seems to be part of the mainline kernel since 3.18, but it requires root privileges. I think a userlevel solution wold be better, like Unionfs for FUSE. Now this could be your silver bullet.

Unionfs on FUSE should not cause much of a slowdown for games, and IMHO, it is well worth the extra dependencies it brings, since play.it will, automatically, support all games on GOG. Actually, this sounds a tad too good to be true (no more per-game scripts, for instance), so I may be overlooking something. I don't know if you looked at this option before going with the symlinks and discarded it, but it would be my first choice.
Post edited September 24, 2016 by Gede
avatar
Gede: Unionfs on FUSE should not cause much of a slowdown for games, and IMHO, it is well worth the extra dependencies it brings, since play.it will, automatically, support all games on GOG. Actually, this sounds a tad too good to be true (no more per-game scripts, for instance), so I may be overlooking something. I don't know if you looked at this option before going with the symlinks and discarded it, but it would be my first choice.
It has been suggested at the beginning of the project, but I discarded it because of the extra layer of complexity. But I'd like to give it a try now, maybe through a fork of the main ./play.it repository.

If it works well, it might be an option for ./play.it 2.0. And if I get good feedback from this, there's no reason not to make it the default method for ./play.it 3.0 ;-)

-----

Just to make my version numbering scheme clear:
major version bumps (1.x -> 2.0) are API-breaking changes
minor version bumps (1.14.x -> 1.15) are additions needed by some scripts (they won' work with a lower version) that don't break the API
revision bumps (1.14.2 -> 1.14.3) are for minor changes and bug fixes

Right now we're at version 1.14.2, but 2.0 has been on development for 5 months.
You can find 2.0 development repository there:
https://git.debian-fr.xyz/vv222/play.it/src/2.0
Should you go ahead with a longer introduction to play.it, I hope you will consider giving a side-by-side comparison of native packages and GOG's install scripts, with pros and cons of each (such as "needs root access to install", "needs one copy per user") and other useful information, like "how to uninstall a game" or "how can I contribute with a script for a game you do not cover yet?".

Writing documentation and guides is not much fun, but I think it really helps with project adoption.
avatar
Gede: I hope you will consider giving a side-by-side comparison of native packages and GOG's install scripts
I actually never tried GOG install scripts, I build .deb packages for *all* of my games ;-)

Documentation writing is planned (and actually in progress), but as you said it is a long and tedious process and it still can be a while before a full documentation get published. But I will most probably publish some pieces of doc here and there as I write them.
avatar
vv221: I actually never tried GOG install scripts, I build .deb packages for *all* of my games ;-)

Documentation writing is planned (and actually in progress), but as you said it is a long and tedious process and it still can be a while before a full documentation get published. But I will most probably publish some pieces of doc here and there as I write them.
In case you're interested, I installed some linux games from gog install scripts -namely Defender's Quest, Hacknet, Read Only Memories and Bio Menace, so maybe I could help. I saw installer screens with the template of Mojo installer (that's what it said if I'm not mistaken -I'm not currently on my linux pc, as I have to write a PowerPoint for class, and want to ensure compatibility with the teacher's computer), and the games were installed under home (the structure was home/Treasure/GOG Games or something like that) -the deb conversions you make are installed system wide instead, if I'm not mistaken. The installers also create start menu shortcuts, and for uninstalling one has to go into the directory of the relevant game (e.g. GOG Games/Bio Menace) and run the uninstaller script.
If you want me to run more tests with gog's installers scripts, you can tell me what you'd like to check, and I can fire up my linux pc tomorrow and report back...

addendum -in the case of dosbox games, those come (I think) with their own copy of dosbox in the folder, as windows versions do...
addendum 2- I run Linux Mint 18 Mate, so some things might differ from your average Debian (e.g. Jessie) system...
Post edited September 26, 2016 by Treasure
avatar
Treasure: (…)
Thanks for these infos, it will be quite useful ;-)

If I write a first draft of a side-by-side comparison between GOG MojoSetup installers and ./play.it built .deb packages, would you be OK to proof-read it?
avatar
vv221: Thanks for these infos, it will be quite useful ;-)

If I write a first draft of a side-by-side comparison between GOG MojoSetup installers and ./play.it built .deb packages, would you be OK to proof-read it?
I'd be fine with that, yes. :-) In the meanwhile, I can turn on my linux pc and install another gog game, just to document what I said in screenshots -I'll probably go with Softporn Adventure (again -it was the 1st gog game I included in the linux setup screenshot thread), as it is small enough to be quickly downloaded and is also a dos game.
P.S Another thing I just recalled - the installer of the gog script actually shows the eula in one of the steps -as opposed to the windows installer, where one has to press the specific button in order to see it. It also might help you, if you have knowledge of complex sh files, if you look at gog's sh files from a text editor -you might see something more, that wouldn't be noticeable by the average user...

And here is the gog linux script in pictures:
http://imgur.com/a/n6S5a
Post edited September 27, 2016 by Treasure
Hey, it’s this time again, your not-so-weekly ./play.it update!

Not a lot of new games for this update, but some high-profile ones:
The Elder Scrolls: Arena (GOG)
The Elder Scrolls II: Daggerfall (GOG)

On the other hand quite a lot of them got updates:
Bastion (Humble)
Caesar III (GOG)
Faster Than Light (GOG & Humble)
Heroes of Might and Magic II (GOG)
Heroes of Might and Magic III (GOG)
Little Big Adventure (GOG)
Star Wars Knights of the Old Republic II (GOG)
StarTopia (GOG)
Sunless Sea (Humble)
Transistor (GOG)
Quite a bunch of new games are coming our way this time, and it should keep going:
Akalabeth
Battle Worlds: Kronos
Blocks That Matter
English Country Tune
Gnomoria
Hitman: Codename 47
La•Mulana
Populous: Promised Lands
Populous II
The Dark Eye: Chains of Satinav
The Elder Scrolls III: Morrowind
War§ow

Some other scripts got updates to work with new installers:
Day of the Tentacle Remastered new supported GOG installer: gog_day_of_the_tentacle_remastered_2.1.0.2.sh
Don’t Starve new supported GOG installer: gog_don_t_starve_2.5.0.7.sh
Sunless Sea new supported GOG installer: gog_sunless_sea_2.6.0.9.sh

Let’s game ;-)
Post edited November 01, 2016 by vv221