Skip to content

Installation

KeepBlox is a server package, so it goes under [server-dependencies] in your wally.toml:

[server-dependencies]
KeepBlox = "xopoiii/keepblox@0.5.0"

Run wally install. The module lands in ServerPackages/KeepBlox; map ServerPackages somewhere only the server can see, such as ServerScriptService:

local KeepBlox = require(game:GetService("ServerScriptService").ServerPackages.KeepBlox)

The package targets roblox_server. From a project with the roblox target:

Terminal window
pesde add xopoiii/keepblox -t roblox_server -a KeepBlox
pesde install

The module lands in roblox_server_packages/KeepBlox. Linking the packages into a Rojo project needs pesde’s Rojo scripts, which pesde init offers to set up.

Download KeepBlox.rbxm from the latest release and insert it into ServerScriptService (or ServerStorage) in Studio. It is one ModuleScript named KeepBlox.

KeepBlox is the src/ folder of the repository. src/init.luau makes that folder one ModuleScript, and every other file becomes a child module of it. Name the ModuleScript KeepBlox.

  1. Clone the repository next to your game, or add it as a git submodule:

    Terminal window
    git clone https://github.com/XopoIII/KeepBlox.git
  2. Map its src folder into your game’s default.project.json, somewhere only the server can see:

    {
    "name": "MyGame",
    "tree": {
    "$className": "DataModel",
    "ServerScriptService": {
    "KeepBlox": { "$path": "KeepBlox/src" }
    }
    }
    }
  3. Sync with rojo serve, or build the place with rojo build.

Then require it from a server script:

local KeepBlox = require(game:GetService("ServerScriptService").KeepBlox)

KeepBlox has no runtime dependencies. Nothing touches game when the module is required; the engine services are looked up when the first store is made.

  • Server only. KeepBlox uses DataStoreService, MemoryStoreService and MessagingService, which only a server can call. Keep the module where clients cannot see it, and require it from server scripts.
  • The Luau Roblox runs today. The source uses current syntax such as const bindings. Studio and live servers run it; an old external tool may not parse it.
  • API access in Studio is optional. With “Enable Studio Access to API Services” off, the first load makes one read-only check, then keeps profiles in memory and reports it through store.onError. Nothing is saved. With it on, play tests use the live store by default; the studio option can keep them in memory or on a copy. See Studio and testing.
  • A Creator Store model.
  • An npm package for roblox-ts. Until then, copy types/index.d.ts next to the module.

Watch the changelog for new releases.

Write the load and release code in the quick start. If your game uses ProfileStore today, read Migrating from ProfileStore first: you may only need to change one require.