Skip to content
PN Scripts

Game dev tools

Laurelkeep

Achievements for Godot 4 that players never lose: safe versioned saves, a polished popup and screen, stats that unlock by themselves, and Steam sync with an offline queue.

  • Godot 4
  • GDScript
  • GodotSteam (optional)
  • Coming soon

Coming soon

Not published on its store yet, so there is no buy or download link. PN Scripts does not take payment for it here.

The Laurelkeep unlock popup over the Lantern Valley demo, with the unlock and progress cards at full size

What it solves

The gap

Achievements look simple until players lose them: a crash during saving, a renamed id after an update, an unlock made offline that never reaches Steam. Most free addons write one plain file and leave the platform part to you.

What it is

Laurelkeep saves achievements safely and recovers them, carries them through game updates, mirrors them to Steam or your own backend through a saved offline queue, and gives you the popup, the screen and an editor dock to define and test them.

How you use it

Achievements that players never lose, with Steam sync and a finished UI, in an afternoon instead of a week.

A tested achievements layer for Godot 4 developers who ship on Steam or their own platform and want every unlock to survive crashes, updates and lost connections.

Who it is for

Use it when

  • Adding Steam achievements to a Godot game without writing the sync and retry logic
  • Shipping an update that renames or removes achievements without taking anything from players
  • Giving a web or itch-style release local achievements with a proper popup and screen

Built for

  • Indie developers shipping Godot 4 games on Steam
  • Godot teams that need achievements on their own platform or server

What is inside

Define once, unlock anywhere

Achievements live in one resource that you edit in the Laurelkeep dock and the Inspector. Unlock with one line, add progress that clamps to the target and never goes down, or name a stat and let Laurelkeep unlock the achievement when the stat reaches its goal. Signals tell your game what happened.

Saves that survive

Every save carries a format version, your data version and a checksum, goes through a temporary file that is read back, and keeps a backup. A damaged file is set aside and the newest good copy is loaded. Removed achievements keep their records, renamed ones keep their progress, and migration steps upgrade old saves.

Steam and your own backend

With GodotSteam in the project, Laurelkeep reads what the player already unlocked, mirrors unlocks, progress and stats, and sends stat changes at most once a minute. Without a connection, changes wait in a queue saved with the progress and go out later; a name Steam does not know is reported, not dropped. A small class connects your own server.

Popup, screen and dock

The unlock popup queues notices, never takes focus or taps, keeps running while the game is paused and follows reduced motion. The achievements screen shows completion, filters, progress bars and unlock dates with hidden ones masked. The editor dock checks your set, exports CSV and JSON, and unlocks or resets achievements while the game runs.

Specs

Availability
Coming soon
Vendor
PN Scripts
Type
Plugin
Pricing
One-time purchase Price to be announced.
License
Proprietary
Deployment
Download (ZIP with addons/laurelkeep and a ZIP with the demo project)
Maturity
v1.0.0

Compatibility

Platform or runtime Supported versions Tested up to
Godot Engine 4.5 or newer 4.7.1
GodotSteam (optional) 4.x or newer mock of the 4.x API

Stack

  • Godot 4
  • GDScript
  • GodotSteam (optional)

Laurelkeep is coming soon

It is finished and tested. It is not on sale yet; this page will say where to get it when it is.

Coming soon

Not published on its store yet, so there is no buy or download link. PN Scripts does not take payment for it here.

Questions

A GDScript addon for Godot 4 that handles achievements end to end: definitions, progress and stats, a safe save, an unlock popup, an achievements screen, an editor dock, and sync to Steam (through GodotSteam) or your own backend with an offline queue.

Godot 4.5 or newer (tested with 4.7.1 and 4.5.2). GDScript only, no C# or GDExtension. For Steam, add GodotSteam to your project and initialise Steam; Laurelkeep finds it at run time and needs nothing else.

GodotSteam itself and a Steamworks account; leaderboards; achievement artwork for your game (the demo icons are examples). The Steam backend was tested against a mock of the GodotSteam API, not on real Steam, and Windows, macOS and mobile exports were not tested.

Written in GDScript by PN Scripts and tested with 60 headless tests covering saves and recovery, migrations, the popup queue, stats, offline sync with a simulated server and a GodotSteam mock, CSV and JSON, and the screen. The addon was installed from its release zip into fresh projects on Godot 4.7.1 and 4.5.2, and the demo was exported for the web and checked in Chrome. Created with AI assistance; the behaviour was checked by PN Scripts with automated tests, a buyer install and screenshots of the running demo and editor.

It is not on sale yet. When it is, this page will link to the store; PN Scripts does not take payment on this site.