Open-source project
bitbrain/pandora avatar
bitbrain/pandora

Pandora: RPG data management as a Godot 4 addon

Godot 4 addon for RPG data management such items, inventories, spells, mobs, quests and NPCs.

1,128 stars41 forksGDScriptMIT

At a glance

What is it?
Pandora is a Godot 4 addon that puts items, spells, abilities, characters, monsters and loot tables in a dedicated editor UI, exposes them through a singleton at runtime, and propagates property changes down the category tree. The author labels it alpha and not production ready.
Who is it for?
Pandora suits an indie team or solo developer whose game content is mostly RPG records, who wants an editor for items, spells, monsters and loot tables instead of writing one, and who accepts an alpha dependency. It is the wrong choice for a commercial release in its current form, since the README states the addon is not production ready and the tags jump from v1.0-alpha9 in 2024 to v1.0-alpha10 in 2026.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 64 days ago.
What is it written in?
Mainly GDScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What the addon actually manages

Pandora is an addon for the Godot Engine by bitbrain, written in GDScript, published under the MIT licence and hosted on a godot-4.x branch. The README describes it as a way to simplify the handling of RPG data, covering items, spells, abilities, characters, monsters and loot tables, and it claims to help whether you are building a traditional turn-based RPG or a fast-paced action game.

The point of an addon like this is the editor rather than the runtime. Every project with an inventory needs the same six or seven kinds of record, each with the same handful of fields, and each with a place in the UI where a designer can create, edit and delete one. Pandora puts all of those records in a dedicated editor UI, with create, edit and delete operations for items, spells, abilities, characters, monsters and loot tables.

The differentiator the README highlights is propagation. Properties set on a category propagate automatically to the child categories and entities below it. In a game with a tree of item categories, that means a rule like this item type ignores weight can be set once at the category level instead of on every individual item, which is the kind of thing that otherwise gets missed on one record and becomes a bug report.

The README opens with a warning that the addon is still in alpha and not production ready yet, and links the alpha milestone in the repository.

The singleton API and entity instances at runtime

The runtime side is described as an accessible API through the Pandora singleton, with access to the data at runtime or even within tool scripts, which is the phrase that matters for editor tooling. A tool script runs inside the editor, so a plugin that can read the same data structures from both contexts can validate, preview or generate content from the database itself.

The example in the README shows how that is used. A scene declares an exported entity variable of type PandoraEntity, so the entity can be picked in the editor, and at runtime the scene creates its own instance with instantiate, sets an integer property with set_integer, and looks up a known entity by identifier through Pandora.get_entity with an EntityIds constant:

gdscript
class_name MyScene extends Node2D

# Entity can be selected in the editor
@export var entity:PandoraEntity

var instance:PandoraEntity

func _ready():
   # create a new instance of this entity
   self.instance = entity.instantiate()
   instance.set_integer("Current Stack Size", 3)
   var other_entity := Pandora.get_entity(EntityIds.COPPER_ORE)

Two things are worth reading out of that snippet. The exported type is a Godot resource type, so a scene file carries a reference to the data rather than a copy of it, and the runtime object is a separate instance created from that reference. And setting a property by name with set_integer, rather than through a typed property, is what makes the property propagation possible: the value is written into the entity's own property store, where inheritance from the category can apply.

Installation into an existing Godot project

Installation is a manual, three-step affair, which is normal for a Godot addon.

First, download the latest release from the repository, or optionally take the current build from the godot-4.x branch archive if you would rather track the tip of the branch. Second, extract the pandora folder into the addons folder of the Godot project. Third, activate the addon in the editor under Project, then Project Settings, then Plugins.

That third step is where Godot plugins register themselves, and the README treats it as the step people miss: the addon does nothing until it is enabled in project settings. The folder layout is the reason the procedure is a copy rather than an install, and it also means the addon version in your project is pinned by your source control rather than by a package manager.

The documentation lives on a wiki at bitbra.in/pandora, and questions go to a discussion board in the repository. The project also has a Discord server, and the repository carries a SECURITY.md file for reporting problems.

The repository root shows how a project using the addon is laid out: a project.godot file, the addon sources under addons/, the pandora/ directory, mock/ for test data, an examples/ folder with an inventory example, test/ with the test suite, reports/ for coverage output, and a data.pandora file that appears to hold the project data itself.

How the testing is set up

The README claims that every feature is covered with unit tests, and the repository layout backs that up in a specific way.

There is a GdUnitRunner.cfg configuration file at the root, a test/ directory holding the suite, and a TestScene.gd script alongside a TestScene.tscn scene, with runtest.sh and runtest.cmd scripts for launching the run on either platform. The reports/ directory is where coverage output lands, and the CI workflow has its own badge in the README for the pandora-ci workflow.

The presence of a test scene as well as unit tests is worth noting. An addon that manipulates editor plugins and resource instances is exactly the kind of code where a headless unit test proves little on its own, because the interesting behaviour involves editor signals and tool-mode execution. A scene that exercises the addon inside a running project covers part of what the unit tests cannot.

For an adopter, the practical question is whether the test suite reflects the version you install, since the addon is pre-1.0 and the tests are part of the repository rather than a published artefact.

Alpha status, version history and what alpha10 changed

The release history is short and the gaps are wide. The most recent tag is v1.0-alpha10 from 2026-07-27, before that v1.0-alpha9 from 2024-10-30 and v1.0-alpha8 from 2024-07-20. The last push to the repository was on 2026-08-20, which is after the newest tag, so work continues on the branch between releases.

That pattern, an alpha9 in late 2024 and an alpha10 in mid-2026, suggests a project that moves in bursts rather than on a schedule. It also means the version you install may not match the documentation, and that an addon pinned in a project can go a long time without a new tag.

The alpha label is used seriously rather than as marketing. The README states the addon is not production ready, the branch is named godot-4.x rather than main, and the release cadence suggests the data model is still changing. For a solo developer, that is an acceptable trade for a tool that removes a large amount of repetitive editor work. For a team shipping a commercial game, it is a risk to price in, since an alpha addon can change its data format or its API between releases.

A reasonable middle path is to use Pandora for authoring convenience in a prototype, and to keep the exported data in version control so that the game can still build if the addon is later removed.

The alternative: your own resource classes and editor tooling

The alternative approach is to define your own Godot resources for each kind of record and write the editor UI yourself, or to accept that records are plain data files edited in a text editor or spreadsheet with a conversion step.

The difference is not subtle. Your own resources give you full control over the data model and no dependency on an alpha addon, but they also give you no editor, no propagation of category properties to descendants, and no runtime API, so every project reinvents the same panels and the same lookup code. The addon route trades that control for a ready-made surface, and its cost is the alpha risk and a specific opinion about how your data should be shaped.

There is a middle option that the repository hints at, since the data file is a .pandora file and the runtime side exposes entities as resources with exported references. If your game only needs a handful of record types, a set of custom Resource subclasses with a small editor plugin may be less work than adopting an addon whose feature set covers loot tables, abilities and monsters as well.

The deciding question is how much of your data model is RPG-shaped. If items, spells and monsters are the bulk of your content, the addon covers ground you would otherwise write. If your game has one inventory and a dozen enemies, the overhead is not worth it.

Editorial conclusion

Pandora suits an indie team or solo developer whose game content is mostly RPG records, who wants an editor for items, spells, monsters and loot tables instead of writing one, and who accepts an alpha dependency. It is the wrong choice for a commercial release in its current form, since the README states the addon is not production ready and the tags jump from v1.0-alpha9 in 2024 to v1.0-alpha10 in 2026. It is also the wrong choice for a game with a small data model, where a handful of custom Resource classes will be less work. Verify first that the property propagation from categories to entities covers the rules you want to set once, that the exported data survives a rebuild of your project, and that the addon version you commit matches the one the documentation describes.

Frequently asked questions

How do I install Pandora in a Godot project?

Download the latest release or the godot-4.x branch archive, extract the pandora folder into the addons folder of the Godot project, then enable it under Project, Project Settings, Plugins. The addon does nothing until it is activated in project settings.

What data can Pandora manage?

Items, spells, abilities, characters, monsters and loot tables. All of them can be created, edited and deleted in the dedicated editor UI, and properties propagate automatically to child categories and entities.

How does code access Pandora data at runtime?

Through the Pandora singleton, which can be read at runtime or inside tool scripts. The README example exports a PandoraEntity on a scene, instantiates it with entity.instantiate(), sets properties with set_integer and looks up a record with Pandora.get_entity and an EntityIds constant.

Is Pandora ready for production use?

No. The README states the addon is still in alpha and not production ready, and the release history shows v1.0-alpha10 from 2026-07-27 after a long gap from v1.0-alpha9 in 2024.

Official sources

  1. bitbrain/pandora on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/bitbrain-pandora.svg)](https://hysenlabs.com/projects/bitbrain-pandora)

Was this useful?