Simple Modding

Modding that only requires editing C# code.

Basics of the Game Structure

Overcooked! 2 is written in Unity version 2017.4.8 with no IL2CPP compilation.

The game files contain these major parts that we care about:

  • Overcooked2.exe - the main executable
  • Overcooked2_Data/StreamingAssets/Windows/ - all the Unity assets (models, textures, sounds, etc.)
  • Overcooked2_Data/Managed/Assembly-CSharp.dll - all the C# code used by the assets

For simple modding, we only need to edit the Assembly-CSharp.dll.

Editing C# Code

First, we need to inspect and understand the C# code we care about. dnSpy is a great tool for this.

To edit the code, we can either

  • Use dnSpy to directly edit the dll. This is the simplest method; or
  • Use BepInEx to dynamically inject modified code at runtime. This requires a bit more setup, but is highly recommended for more complex code editing, because it allows you to manage your code with version control, and makes the code injection easily reproducible.

There is plenty of tutorial and documentation on how to use dnSpy and BepInEx, so I won’t go into details here.

How do I …?

The Overcooked codebase is fairly complex, so it’s not always easy to find where certain game logic is. A fair amount of investigation is needed in general to make complex mods.

Refer to the Overcooked! 2 Tech Docs for some documentation about the trickest parts of the game code.

The rest is up to your imagination and determination. Good luck!