# ./play.it role-playing games collection

The codebase is maintained at [https://git.dotslashplay.it/games-rpg/]

Bug reports should be sent to [bugs@dotslashplay.it], and support requests to [requests@dotslashplay.it]

[https://git.dotslashplay.it/games-rpg/]: https://git.dotslashplay.it/games-rpg/
[bugs@dotslashplay.it]: mailto:bugs@dotslashplay.it
[requests@dotslashplay.it]: mailto:requests@dotslashplay.it

## Description

./play.it is a free software building native packages from installers for Windows or Linux, mainly those sold by stores focusing on DRM-free games distribution. The goal is that a game installed via ./play.it is indistinguishable from a game installed via the official repositories of your favourite distribution.

This specific collection includes only role-playing games. These games revolve around character development. Common features include world exploration, tactical or action-based battles, and a deep story. Both turn-based and real-time games are included.

## Installation

### Distributions providing ./play.it

The following distributions provide installation instructions in their official documentation:

- [Debian]
- [Gentoo]
- [Ubuntu] (French article)

[Debian]: https://wiki.debian.org/Games/PlayIt#Installation
[Gentoo]: https://wiki.gentoo.org/wiki/Play.it#Installation
[Ubuntu]: https://doc.ubuntu-fr.org/play.it#installation

In most cases, these instructions should work in the same way for derivatives of these distributions.

### Installation from git

If your distribution does not already have a package for this ./play.it collection, you can install it from this git repository.

```
git clone --branch main --depth 1 https://git.dotslashplay.it/games-rpg play.it-rpg.git
cd play.it-rpg.git
make install
```

## Usage

Usage instructions are provided on the main ./play.it repository: [./play.it: Installer for DRM-free commercial games — Usage]

[./play.it: Installer for DRM-free commercial games — Usage]: https://git.dotslashplay.it/scripts/about/#usage

## Contributing

### First contribution

There is no real rule for your first contribution. You can host your updated code anywhere you like and contact us via any way described in the [Contact information] section below. It is OK to expose your updated code through GitHub or GitLab.com if you have nothing better at hand, but we would be thankful if you would instead use some hosting outside of these big silos.

[Contact information]: #contact-information

We do not enforce any workflow like merge/pull requests or any such thing. We are interested in the result of your work, not in how you got to it. So shatter your shackles, and for once take pleasure in working *however you like*! You are not even required to use git if you do not know or do not like this tool.

Please try to follow these simple guidelines, and your contribution is probably going to be accepted quickly:

- Run `make check` before submitting your code, to ensure you did not break anything by accident;
- Use tabs for indentation. No real developer would ever indent anything with spaces.

### Regular contributions

If you keep contributing on a more regular basis (sending 3 patches in the same year would already make you a regular) we can grant you direct write access to the repositories hosted at git.dotslashplay.it. This is not mandatory, if for some reason you can not or do not want to work with git you can simply keep following the "First contribution" guidelines, and forget about this whole "Regular contributions" section.

To grant you such an access we need nothing but a public SSH key, that you can send us through any way described in the [Contact information] section below.

[Contact information]: #contact-information

Once you have been granted access, you should add the following to your local SSH configuration:

```
Host git.dotslashplay.it
    Port 1962
    User gitolite3
```

You should then update the remote of your local repository, with the following command (assuming a remote named "upstream"):

```
git remote set-url --push upstream ssh://git.dotslashplay.it/games-rpg
```

Since these repositories are worked on by several people, there are a couple extra guidelines that you should follow:

- Your work should always be pushed to a dedicated branch, never on the main branch;
- Game script updates, including bug fixes, should be pushed to branches named with a "update/" prefix;
- Addition of new game scripts should be pushed to branches named with a "new/" prefix;
- You are allowed to push code to branches opened by other contributors, but please communicate with them if you plan to do so;
- Force push and branches deletion are not allowed, if you want a branch to be deleted please ask us to do it for you.

### Collection maintenance

If you really like this collection, you might wish to start co-maintaining it. That kind of help would be most welcome!

This implies more trust than a contributor access, but there are safeguards in place so there is no risk for you to break anything in a way impossible to revert. So you do not need to be some kind of "git guru" to be granted access, the only skill really required is some real interest for the games supported in this collection.

The main difference with a contributor access is that you are no longer limited to the `update/*` and `new/*` branches, you can update the `main` branch too, the one that is installed by ./play.it users and that is used to build packages for Linux distributions including ./play.it in their repositories.

To reduce risks of breakages, please always run the full collection of tests prior to sending an update to the main branch:

```
make check
```

A good way to never forget about it is to set a git hook, an executable .git/hooks/pre-push file with the following content:

```
#!/bin/sh
set -o errexit

# Check the syntax of all game scripts, using ShellCheck.
make --jobs=$(nproc) check

exit 0
```

## Supported games

- A House of Many Doors
- Akalabeth: World of Doom
- Anima: Gate of Memories
- Arcanum: Of Steamworks and Magick Obscura
- Asura
- Baldur's Gate series:
    - Baldur's Gate, supported in another collection: [https://git.vv221.fr/play.it/games-vv221/about/]
    - Baldur's Gate 2, supported in another collection: [https://git.vv221.fr/play.it/games-vv221/about/]
    - Baldur's Gate 3
- Book of Demons
- Cat Quest series:
    - Cat Quest
    - Cat Quest 2
- Chained Echoes
- Children of Morta
- Citizen Sleeper
- Convoy
- Cornerstone: The Song of Tyrim
- Costume Quest
- CrossCode
- Darksiders 2
- Deep Sky Derelicts
- Deltarune
- Dex
- Dicey Dungeons
- Din's Curse
- Divinity series:
    - Divine Divinity
    - Divinity: Original Sin
    - Divinity: Original Sin 2
- Dragon Age: Origins
- Dust: An Elysian Tail
- Earthlock
- Eschalon: Book 1
- Everspace
- Evoland series:
    - Evoland
    - Evoland 2
- Fallen London setting:
    - Sunless Sea, supported in another collection: [https://git.vv221.fr/play.it/games-vv221/about/]
    - Sunless Skies
- Fallout series:
    - Fallout
    - Fallout 2
    - Fallout: New Vegas
- Forced
- Gamedec
- Ghost of a Tale
- Hand of Fate
- Haven
- Heroine's Quest: The Herald of Ragnarok
- Horizon Zero Dawn
- Ikenfell
- Jade Empire
- Kingdom Come: Deliverance
- Kingsway
- Knights of Pen and Paper
- Kyn
- Legend of Grimrock
- Lenna's Inception
- Lords of Xulima
- Minit
- Monster Sanctuary
- Moon Hunters
- My Time at Portia
- Neurodeck: Psychological Deckbuilder
- Neverwinter Nights
- Ocean's Heart
- Paper Sorcerer
- Pathfinder: Kingmaker
- Pier Solar and the Great Architects
- Pillars of Eternity series:
    - Pillars of Eternity, supported in another collection: [https://git.vv221.fr/play.it/games-vv221/about/]
    - Pillars of Eternity 2
- Pokemon Insurgence
- Rebel Galaxy
- Slay the Spire
- Sovereign Syndicate
- Starship Traveller
- SteamWorld Quest
- Stories: The Path of Destinies
- System Shock 2
- Tangledeep
- The Bard's Tale 4
- The Count Lucanor
- The Elder Scrolls series:
    - The Elder Scrolls: Arena
    - The Elder Scrolls 2: Daggerfall
    - The Elder Scrolls 3: Morrowind, supported in another collection: [https://git.vv221.fr/play.it/games-vv221/about/]
    - The Elder Scrolls 5: Skyrim
- The Incredible Adventures of Van Helsing
- The Lamplighters League
- The Swords of Ditto
- The Temple of Elemental Evil
- The Warlock of Firetop Mountain
- The Witcher series:
    - The Witcher, supported in another collection: [https://git.vv221.fr/play.it/games-vv221/about/]
    - The Witcher 2
    - The Witcher 3
- Ultima 4
- Undertale
- unEpic
- Urtuk: The Desolation
- Vagrus: The Riven Realms
- Vambrace: Cold Soul
- Vampire: The Masquerade - Redemption
- Vaporum
- Victor Vran
- Warhammer 40k: Rogue Trader
- Ys Chronicles: Ancient Ys Vanished: Omen

[https://git.vv221.fr/play.it/games-vv221/about/]: https://git.vv221.fr/play.it/games-vv221/about/

## Contact information

### IRC channel

Some ./play.it developers and users can be reached on IRC, channel is `#play.it` on network `irc.oftc.net`. The main language on this IRC channel is English, but most of us can speak French too.

### E-mail

A contact e-mail for feedback can usually be found in each ./play.it game script, as well as in the library. Open one of these files with any text editor to see the contact e-mail.

## blackhole.vv222.fr

Instead of getting access to this git repository, or any other ./play.it-related Web stuff, you might get redirected to blackhole.vv222.fr
where you get a slow trickle of nonsensical French text with a couple hyperlinks. This is a trap for generative AI scraping bots
that have been attacking ./play.it server relentlessly for a long time.

If you get hit by this forced redirection this means you are trying to reach a Web page from an IP provided by a known bad ISP,
one who already took part in mass attacks against our server. Then the most effective way to avoid the redirection is to use another ISP,
one that is not providing resources to DDoS attacks in favour of generative AI companies.

If you can not access Internet using another ISP then please get in touch through one of the contact methods listed above,
and we can unblock either your IP or your whole ISP.
