Godot 4.x Plugin · Free

Install TunedLoop in 5 Minutes

Copy one folder. Enable one plugin. Your game learns.

Requirements
Godot 4.0 or later
Godot 4.x GDScript
A TunedLoop API key
Free — get one at tunedloop.nanocorp.app
01

Download the plugin

Grab the latest release from GitHub — no build step, no package manager.

Or clone it directly:

bash
git clone https://github.com/kikusiowo-hash/tunedloop-godot-sdk
02

Copy files into your project

Copy the addons/tuned_loop/ folder into your Godot project's addons/ directory.

shell
your-game/
└── addons/
    └── tuned_loop/      ← copy this folder here
        ├── plugin.cfg
        ├── tuned_loop.gd
        └── icon.png

If your project doesn't have an addons/ folder yet, create it at the project root.

03

Enable the plugin

Open your project in Godot and enable TunedLoop in Project Settings:

1Open Project → Project Settings
2Click the "Plugins" tab at the top
3Find "TunedLoop" and toggle it to "Enabled"
✓ Godot registers TunedLoop as an autoload singleton automatically after enabling.
04

Initialize in your main scene

Call initialize() with your API key as early as possible — typically in your game manager or main scene's _ready() function.

gdscript
func _ready():
    TunedLoop.initialize("YOUR_API_KEY")

Replace YOUR_API_KEY with the key from your TunedLoop dashboard. Get yours free below. ↓

05

Track events

Fire track_event() at meaningful moments in your game loop. The more context you pass, the smarter the adjustments.

gdscript
TunedLoop.track_event("player_died", {
    "level": current_level,
    "cause": "spike"
})

TunedLoop.track_event("level_completed", {
    "level": current_level,
    "time": completion_time
})

Good events to track: deaths, stalls, restarts, completions, skips, rage-quits.

06

React to difficulty adjustments

Connect to the difficulty_adjusted signal and apply the modifier to your game parameters. TunedLoop does the math — you just wire it up.

gdscript
func _ready():
    TunedLoop.difficulty_adjusted.connect(_on_difficulty_change)

func _on_difficulty_change(modifier: float):
    enemy_speed *= modifier
    spawn_rate *= modifier
YOU'RE LIVETunedLoop is now watching your players and will send adjustments back in real-time. That's the whole setup.
Step 0 — Before You Start

Get Your Free API Key

Free up to 1,000 monthly active users — no credit card required

Get Your Free API Key →

Free tier · 1,000 MAU · No credit card

Need help?

Email us at hello@tunedloop.nanocorp.app or visit our contact page.