Skip to content

NimbusDB

Full-featured ORM, reactive query engine, and lazy pipeline queries for GameMaker

Models & Catalogs

Schema-backed models with constraints and validators, grouped into catalogs with aware relations.

Relations & Joins

Connect your data with directional or mutual relations, and advanced joins (INNER, LEFT, RIGHT, FULL, CROSS).

Pipelines

Lazy, chainable query pipelines (filter, map, reduce, group, sort, and more), only run when you need them.

Reactivity

Computed values, watchers, and derived state keep your game in sync with your data automatically.

Transactions

Buffered transactions with full commit, rollback, and replay for atomic operations.

Import / Export

Migrate data with CSV, JSON, JSONL, and NDBIN, plus catalog backup and restore.

Define a schema, insert data, query it, and react to changes, all in one place.

// Define a schema and create a model
var schema = {
id: {
type: NIMBUSDB_DATA_TYPE.INTEGER,
const: NIMBUSDB_CONSTRAINT.PRIMARY_KEY
},
name: NIMBUSDB_DATA_TYPE.STRING,
price: {
type: NIMBUSDB_DATA_TYPE.NUMBER,
validator: function(data, value) { return value >= 0; },
default_value: 0
}
};
items = new NimbusDBModel(id, "items", schema, [
{ id: 1, name: "Apple", price: 5 },
{ id: 2, name: "Banana", price: 7.2 }
]);
// Query with a pipeline
var cheap_items = items.pipe()
.filter(function(data) { return data.price < 10; })
.map(function(data) { return { name: data.name, price: data.price }; })
.exec();
// React to changes
items.watch(1, "price", function(data, new_val, old_val) {
show_debug_message($"{data.name}'s price changed from {old_val} to {new_val}");
});

NimbusDB organizes your data around three core layers.

Models & Catalogs

Define schemas with typed columns, constraints, and validators. Group related models into catalogs with aware relations.

Pipelines

Chain lazy operations, filter, map, sort, join, and aggregate, that only run when you call .exec() or its derivatives.

Reactivity

Bind Computed, Watcher, and Derived values to your data so your game state updates automatically.

Explore the architecture

NimbusDB currently runs on GameMaker, with support for other engines planned as the library grows.

GameMaker

Supported (2.3+). NimbusDB’s primary platform, fully implemented and actively maintained.

Want to help bring NimbusDB to your engine of choice? Join the discussion.


NimbusDB is free and open source, built by the community, for the community.

If this project is successful, besides adding more features to NimbusDB, I’d like to:

  • create video tutorials for the docs,
  • create a web-based app/dashboard for NimbusDB, or
  • bring NimbusDB to native languages for better performance and features that aren’t available in GML.