Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Modding

Modding refers to modifying any part of the game through means other than gameplay! This includes:

  • Editing sprites (the game’s art)
  • Editing dialogue
  • Editing your save file
  • Editing the game world itself with LDtk
  • Editing and creating Lua scripts

Modding the game is a great way to learn how it works, and can lead to contributing to the base game itself!

Modifying Sprites

Most sprites in this game are in the .ase format, as opposed to .png.

This is because Aseprite is the primarily used pixel art software, and .ase is a much more convenient format to save sprites in, as it has native integration with Aseprite for things like layers and animations.

To edit .ase files, you can either:

  1. Purchase Aseprite for $20 USD.
  2. Compile Aseprite for free (can be a bit more technical, and takes time).
  3. Use Libresprite, a free and open source alternative.

When you’re ready, simply open any image you want to edit in the assets/sprites directory and let loose!

Modifying Dialogue

WIP

Modifying Save Files

WIP

Modifying Game World

To modify the game world, you need LDtk, a free and open source software for editing 2D levels.

You can then open assets/ldtk/world.ldtk and start changing it how you wish.

Modifying and Creating Scripts

Much of the game’s logic is put inside of Lua scripts, for the sole purpose of being moddable!

Knowing how to script the game correctly does depend on understanding Bevy’s ECS, but you can avoid that if you’re making small changes to existing code.

Picking a code editor

You really could use any text editor, but it’s better to use one with good Lua support for things like syntax highlighting and autocompletion.

I recommend either Zed or VSCode, both needing the Lua extension installed for the best development experience.

Basics

The easiest way to modify scripts is just by changing variables’ values!

To see this in action, open up assets/scripts/player.lua and go to the set_player_values() function.

Inside of this function, you can change the values of attributes given to the player, like acceleration and max speed.

-- a function that sets attributes of the player.
function set_player_values()
    ---@type MovementAcceleration
    local acceleration = world.get_component(entity, MovementAcceleration)
    ---@type MaxLinearSpeed
    local max_speed = world.get_component(entity, MaxLinearSpeed)

    -- set attributes
    acceleration[1] = 850.0 -- change this!
    max_speed[1] = 100.0 -- change this!
end

You can even do this while the game is open. Scripts are hot-reloadable, meaning changes are applied in the game the moment you save the file!

Contributing

Contributing is when you make a change to the game that gets officially accepted. There are many ways to contribute, like improving art, improving and optimizing code, and adding missing and highly requested features!