Inscryption: How to Mod on Linux

How to mod Inscryption on a Debian/Ubuntu Linux distro

Prerequisites

I need to get this out of the way before I say anything: I will not spoon-feed complete linux noobs on how to do basic things. I am all for giving tips and helping people (even if they’re inexperienced), but I’m not going to teach you how to type “cd” in bash.

So, to avoid wasting both my time and yours, this tutorial requires you understand:

  • Basic use of the Bash terminal
    Prerequisites
    I need to get this out of the way before I say anything: I will not spoon-feed complete linux noobs on how to do basic things. I am all for giving tips and helping people (even if they’re inexperienced), but I’m not going to teach you how to type “cd” in bash.

    So, to avoid wasting both my time and yours, this tutorial requires you understand:

    • Basic use of the Bash terminal
    • [Optional] Basic use of the Apt package manager
    • [Optional] A rudimentary understanding of Git
    • [Optional] Some experience in building things from source

    Understanding Git, Apt, and how to build things from source are optional, as they’re technically not required to do what this hopes to guide you through, but they will be needed for recommended (yet still optional) tweaks

    Please for the love of god do not ask me about something you can do a web-search for and find a result in 0.00002 nanoseconds. I won’t respond to that type of question for the sake of my own sanity

    Running the Game
    To run, one must have first mastered walking. To mod a game, you first need it to run and be playable

    Valve is a pretty cool company, not only because they host user-generated content like what you’re currently reading, but also because they develop something called Proton. Proton is a compatibility layer between a game and the Linux distro you’re running, one that makes it relatively easy to run windows games without too many bugs. We’ll use proton to get Inscryption running, and to eventually mod it

    First, enable Steam Play on all unsupported titles. In the steam client, click:

    Steam -> Settings -> Steam Play -> Enable Steam Play for all other titles -> Proton Experimental

    This makes it so any game that doesn’t natively run on your system will use Proton Experimental by default. This on its own should be enough to run Inscryption, but I personally take a slightly more advanced route

    Warning: Optional stuff ahead

    This is completely optional, but recommended

    Instead of using Valve’s Proton Experimental, I use Glorious Eggroll’s Proton-GE. Because Proton is open-source, anyone can make edits and forks of the code; Proton-GE is a community managed fork of Proton and is what I use. It often preforms better than Experimental, but can be more unstable, and although I usually don’t have problems with it I will occasionally need to manually make a game use Experimental instead of GE because of strange bugs exclusive to GE. It’s not a huge deal, but one to keep in mind

    First, we need dependencies:

  • [Optional] Basic use of the Apt package manager
  • [Optional] A rudimentary understanding of Git
  • [Optional] Some experience in building things from source

Understanding Git, Apt, and how to build things from source are optional, as they’re technically not required to do what this hopes to guide you through, but they will be needed for recommended (yet still optional) tweaks

Please for the love of god do not ask me about something you can do a web-search for and find a result in 0.00002 nanoseconds. I won’t respond to that type of question for the sake of my own sanity

Running the Game

To run, one must have first mastered walking. To mod a game, you first need it to run and be playable

Valve is a pretty cool company, not only because they host user-generated content like what you’re currently reading, but also because they develop something called Proton. Proton is a compatibility layer between a game and the Linux distro you’re running, one that makes it relatively easy to run windows games without too many bugs. We’ll use proton to get Inscryption running, and to eventually mod it

First, enable Steam Play on all unsupported titles. In the steam client, click:

Steam -> Settings -> Steam Play -> Enable Steam Play for all other titles -> Proton Experimental

 

This makes it so any game that doesn’t natively run on your system will use Proton Experimental by default. This on its own should be enough to run Inscryption, but I personally take a slightly more advanced route

Warning: Optional stuff ahead

This is completely optional, but recommended

Instead of using Valve’s Proton Experimental, I use Glorious Eggroll’s Proton-GE. Because Proton is open-source, anyone can make edits and forks of the code; Proton-GE is a community managed fork of Proton and is what I use. It often preforms better than Experimental, but can be more unstable, and although I usually don’t have problems with it I will occasionally need to manually make a game use Experimental instead of GE because of strange bugs exclusive to GE. It’s not a huge deal, but one to keep in mind

First, we need dependencies:

sudo dpkg --add-architecture i386 
wget -nc https://dl.winehq.org/wine-builds/winehq.key
sudo apt-key add winehq.key

sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ <replace this with your ubuntu distro release name (ex: focal) > main'  
sudo apt update

sudo apt install --install-recommends -y winehq-staging

These commands were pulled straight from the winehq[www.winehq.org] page on installing for Ubuntu based systems. Here’s the link to verify them: https://wiki.winehq.org/Ubuntu

With wine installed, install winetricks (A required dependency for Proton-GE)

sudo apt install winetricks

Now with dependencies installed, we could manually install Proton-GE by downloading a version from the Github releases page[github.com] and extracting the .tar file into “~/.steam/root/compatibilitytools.d/”, or we can use a tool to do it for us

ProtonUp is a python script that checks our current install and sees if it needs updating, so we’ll use that to make it easier on us. Because ProtonUp is a python script, you’ll need python to run it (duh)

sudo apt install python3

This will install python3 and pip3, which we will use to install ProtonUp

pip3 install protonup

Having an easier way to update Proton-GE is wonderful and all, but I want it to be even easier to manage my GE versions. To do that, I use ProtonUp-Qt, a Qt interface for using the ProtonUp script.

You can either run it from source or build an appimage yourself, but in this case it’s easier to download a release and mark it executable. Go to ProtonUp-Qt’s releases page[github.com] and download the latest release. Then, use chmod to mark it executable

chmod +x ProtonUp-Qt-*.*.*-x86_64.AppImage
Now, just run ProtonUp-Qt by double-clicking on it and install the latest version of Proton-GE. The folder it defaults to (~/.steam/root/compatibilitytools.d) is correct, so don’t change it unless you know what you’re doing. Restart steam and congrats, you should be able to use Proton-GE as one of the compatibility tools for a game

All you need to do now is follow the same steps as you would with enabling Proton Experimental, but instead choose the latest GE version

Modding the Game

Modding games on Linux can be very complex, especially when the game you’re modding is running through Proton or Wine. Luckily, Inscryption is fairly easy to mod even in Proton. Modding Inscryption is ultimately as easy as installing BepInEx and setting a launch option, but without the API mod and JSON parser you’ll find yourself without any custom cards.

Start with installing BepInEx[inscryption.thunderstore.io]:

  1. Go to the link above and click “Manual Download”, then save it somewhere on youtr system
  2. Open the .zip and click into “BepInExPack_Inscryption”
  3. Extract the contents into your Inscryption install folder ($HOME/.steam/steam/steamapps/common/Inscryption)

With that done, add this to your launch options:

WINEDLLOVERRIDES="winhttp=n,b" %command%

Now, assuming everything is working, running the game should cause a window to pop up and preload BepInEx, then launch the game. If it works, congrats you’ve technically modded Inscryption, but without any real mods it’s pretty useless. Lets install everything needed for custom cards

Prerequisites for custom cards:

  1. Download the API[inscryption.thunderstore.io] mod and JSON Parser[inscryption.thunderstore.io]
  2. Go into “BepInEx/plugins” and extract the .dll files from each mod here
  3. Launch the game

To install a card pack:

  1. Download a card-pack mod
  2. Extract the “Artwork” and “Cards” files to “BepInEx/plugins/JSONLoader”
  3. Launch the game

To install any other mod:

  1. Download the mod
  2. Extract the .dll to “BepInEx/plugins”
  3. Launch the game

Recommended Mods and Tweaks

These mods and tweaks are what I personally use. I recommend installing them, but you can completely skip this entire section if you like

Feral Gamemode

Feral Gamemode is a Daemon/Lib combo that allows an app to ask for certain temporary optimizations. It came preinstalled with the distro I use (Linux Mint), so I never had to go through the installation process, but it’s fairly simple compared to some other apps I’ve installed from source

First, get the dependencies:

sudo apt install meson libsystemd-dev pkg-config ninja-build git libdbus-1-dev libinih-dev build-essential

Then, build and install Gamemode:

git clone https://github.com/FeralInteractive/gamemode.git
cd gamemode
./bootstrap.sh

Now that it’s installed, put “gamemoderun %command%” in your launch options to run the game with Feral Gamemode’s optimizations

The problem with multiple %command%’s

If you just tried what I told you to do (add another %command% to the launch options), you will have noticed that either the mod or Gamemoded didn’t work depending on which came first. That’s because Steam doesn’t let you use the %command% keyword in the launch options more than once. This, however, is no problem. Simply put “gamemoderun” anywhere before the %command% and both the dll override and gamemode will run

This applies for anything that uses %command%. They can be chained together, but you can only have one %command%

Example:

command_option1 command_option2 command_option3 %command% -launch_option1 -launch_option2 -launch_option3
LibSpeedhack

LibSpeedhack[github.com] is a multipurpose speedhack library. Why would I need this for Inscryption? Well, there’s a good chance you won’t, but in case you ever decide to ouroboros loop you’ll appreciate speeding the game up a hundred times or so to make the animations way shorter

As always, install the dependencies:

sudo apt install build-essential

Then, clone the repo and build the project:

git clone https://github.com/evg-zhabotinsky/libspeedhack
cd libspeedhack
make

Once built, test if it’s working by running glxgears:

$HOME/libspeedhack/speedhack glxgears
echo 2 >/tmp/speedhack_pipe # This is how you do the speedhacking. Higher = faster, smaller fraction = slower
To make Inscryption run with the speedhack, add “$HOME/libspeedhack/speedhack” to your launch options (put it somewhere before the %command%)

The Hammer Mod

Act 1 doesn’t have a hammer, but 2 and 3 do. What’s up with that? Well, not anymore because with this mod you get a hammer in act 1 in-case you’ve made a misplay or want to clear out the boulders The Prospector makes

To Install:

  1. Download the Smalltweak Hammer mod[inscryption.thunderstore.io]
  2. Extract the .dll into “BepInEx/plugins”
Ingame Card Creator

Ever want to test a potentially broken card? Want to make a card behave like the ouroboros but as a 0 cost card? Want to toy around with special effects? Say no more, because this mod lets you make cards during act 1 at any time

To Install:

  1. Download the InGame Card Creator mod[inscryption.thunderstore.io]
  2. Extract the .dll to “BepInEx/plugins”

Thanks to 8 gubed for his great guide, all credit to his effort. you can also read the original guide from Steam Community. enjoy the game.

Related Posts:

Post Author: Robins Chew

Leave a Reply

Your email address will not be published. Required fields are marked *