Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
a802e33
docs: update delete-data flag examples
Jul 10, 2026
c849ef6
docs: keep delete-data examples concise
Jul 10, 2026
eb538e1
Merge remote-tracking branch 'origin/master' into bot/docs-audit
Jul 11, 2026
4794bd4
docs: clarify C# reducer result callbacks
Jul 11, 2026
7a9dc22
docs: align TypeScript skill table naming guidance
Jul 12, 2026
6173dd9
Merge remote-tracking branch 'origin/master' into bot/docs-audit
Jul 14, 2026
45f7424
Merge remote-tracking branch 'origin/master' into bot/docs-audit
Jul 15, 2026
47b823c
docs: align TypeScript table accessor examples
Jul 15, 2026
ff9429e
Merge remote-tracking branch 'origin/master' into bot/docs-audit
Jul 16, 2026
7f66bc4
Merge remote-tracking branch 'origin/master' into bot/docs-audit
Jul 17, 2026
9dc58c7
docs: align scheduled function examples
Jul 17, 2026
dd24d4e
Merge remote-tracking branch 'origin/master' into bot/docs-audit
Jul 18, 2026
2caabd6
docs: update procedure language support overview
Jul 18, 2026
a129e9c
docs: clarify Unreal uproject-dir path
Jul 19, 2026
fab18a5
docs: update Rust and C++ sender examples
Jul 20, 2026
03cc8c5
Fix Rust codegen bindings path in docs
Jul 21, 2026
9fc83bc
Merge remote-tracking branch 'origin/master' into bot/docs-audit
Jul 21, 2026
f73fb9a
docs: address audit PR review comments
Jul 21, 2026
077a8c6
docs: align reducer context docs with SDK
Jul 22, 2026
63c0437
Merge remote-tracking branch 'origin/master' into bot/docs-audit
Jul 23, 2026
e52c15f
docs: update C# reducer failure pattern
Jul 23, 2026
c6c5606
Merge remote-tracking branch 'origin/master' into bot/docs-audit
Jul 24, 2026
4157226
Merge remote-tracking branch 'origin/master' into bot/docs-audit
Jul 25, 2026
879a028
docs: fix HTTP handler route placeholder
Jul 25, 2026
e03a492
docs: avoid ambient clock in file storage examples
Jul 26, 2026
4e49028
docs: correct TypeScript connectionId nullability
Jul 27, 2026
3e8e25d
Merge remote-tracking branch 'origin/master' into bot/docs-audit
clockwork-labs-bot Jul 28, 2026
bb43070
docs: clarify TypeScript provider reconnect behavior
clockwork-labs-bot Jul 28, 2026
77554f5
Merge remote-tracking branch 'origin/master' into bot/docs-audit
clockwork-labs-bot Jul 29, 2026
fe79243
Merge remote-tracking branch 'origin/master' into bot/docs-audit
clockwork-labs-bot Jul 30, 2026
e6f1e64
docs: clarify event table subscribe-all behavior
clockwork-labs-bot Jul 30, 2026
3b71177
docs: update C# reducer callback tutorial wording
clockwork-labs-bot Jul 31, 2026
ce0bf17
Merge remote-tracking branch 'origin/master' into bot/docs-audit
clockwork-labs-bot Aug 1, 2026
fc626dc
docs: align TypeScript table accessor examples
clockwork-labs-bot Aug 1, 2026
d88851c
docs: use database name in client connection docs
clockwork-labs-bot Aug 2, 2026
d5dfde4
Merge remote-tracking branch 'origin/master' into bot/docs-audit
clockwork-labs-bot Aug 3, 2026
4f82e07
docs: fix TypeScript submodule examples
clockwork-labs-bot Aug 3, 2026
f6ff8bb
Merge remote-tracking branch 'origin/master' into bot/docs-audit
clockwork-labs-bot Aug 4, 2026
f60edda
docs: align scheduled task field names
clockwork-labs-bot Aug 4, 2026
47fdbbe
Merge remote-tracking branch 'origin/master' into bot/docs-audit
clockwork-labs-bot Aug 5, 2026
d4ddc12
Document Rust string default values
clockwork-labs-bot Aug 5, 2026
c4c6ad8
Merge remote-tracking branch 'origin/master' into bot/docs-audit
clockwork-labs-bot Aug 6, 2026
1d60e64
docs: update Unreal client callback examples
clockwork-labs-bot Aug 6, 2026
c2c9899
Merge remote-tracking branch 'origin/master' into bot/docs-audit
clockwork-labs-bot Aug 7, 2026
b12d92a
docs: sync Codex plugin skills
clockwork-labs-bot Aug 7, 2026
c630cc9
Merge remote-tracking branch 'origin/master' into bot/docs-audit
clockwork-labs-bot Aug 8, 2026
df43dab
docs: align C++ ScheduleAt examples
clockwork-labs-bot Aug 8, 2026
bf67e22
Merge remote-tracking branch 'origin/master' into bot/docs-audit
clockwork-labs-bot Aug 9, 2026
35ed2c2
docs: align reducer overview examples
clockwork-labs-bot Aug 9, 2026
1fb3581
Merge remote-tracking branch 'origin/master' into bot/docs-audit
clockwork-labs-bot Aug 10, 2026
0cf717b
docs: clarify Unity connection ticking
clockwork-labs-bot Aug 10, 2026
72f7085
docs: fix React template project layout
clockwork-labs-bot Aug 11, 2026
d7c3e47
docs: address audit review comments
clockwork-labs-bot Aug 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions codex-plugin/plugins/spacetimedb/skills/cli/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,10 @@ spacetime publish my-database --server local --yes
spacetime publish my-database --delete-data=always --yes
```

Bare `--delete-data` defaults to `always`. Keep simple interactive docs examples
bare, and use `--delete-data=always` for scripted/non-interactive examples that
also pass `--yes`.

### Database Interaction

```bash
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@ import { ScheduleAt } from 'spacetimedb'; // for scheduled tables only

## Tables

`table(OPTIONS, COLUMNS)` takes two arguments. The `name` field MUST be snake_case:
`table(OPTIONS, COLUMNS)` takes two arguments. The `name` field is optional;
when present, it overrides the canonical SQL name and should be snake_case:

```typescript
const entity = table(
Expand All @@ -65,9 +66,13 @@ const entity = table(
);
```

Options: `name` (snake_case, recommended), `public: true`, `event: true`, `scheduled: (): any => reducerRef`, `indexes: [...]`
Options: `name` (optional canonical SQL name override), `public: true`, `event: true`, `scheduled: (): any => reducerRef`, `indexes: [...]`

`ctx.db` accessors are the keys passed to `schema({...})`, verbatim: `schema({ score_record })` → `ctx.db.score_record`. Use snake_case keys matching the table `name`. Client codegen converts case; server `ctx.db` does not.
`ctx.db` accessors are the keys passed to `schema({ ... })`, verbatim:
`schema({ score_record })` -> `ctx.db.score_record`. The optional `name`
field overrides the canonical SQL name; it does not change the server
`ctx.db` accessor. Use snake_case keys matching the table `name`. Client
codegen converts case; server `ctx.db` does not.

## Column Types

Expand Down
13 changes: 5 additions & 8 deletions codex-plugin/plugins/spacetimedb/skills/unity/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,6 @@ public class SpacetimeManager : MonoBehaviour
.Build();
}

void Update()
{
Connection?.FrameTick();
}

void OnDestroy()
{
Connection?.Disconnect();
Expand Down Expand Up @@ -114,9 +109,9 @@ public class SpacetimeManager : MonoBehaviour

---

## FrameTick (Critical)
## FrameTick / Network Manager (Critical)

**`FrameTick()` must be called every frame in `Update()`.** The SDK queues all network messages and only processes them when you call `FrameTick()`. Without it, no callbacks fire and the client appears frozen. See the `Update()` method in the SpacetimeManager above.
The Unity package includes `SpacetimeDBNetworkManager`, a MonoBehaviour that advances active connections from Unity's `Update` loop. Add exactly one `SpacetimeDBNetworkManager` component to a scene GameObject, or call `Connection.FrameTick()` yourself every frame. Without one of these, no callbacks fire and the client appears frozen.

**Thread safety**: `FrameTick()` processes messages on the calling thread (the main thread in Unity). Do NOT call it from a background thread. Do NOT access `conn.Db` from background threads.

Expand Down Expand Up @@ -212,11 +207,13 @@ All SpacetimeDB SDK calls (`FrameTick`, `conn.Db` access, reducer calls) must ha
### Scene Loading
Use `DontDestroyOnLoad(gameObject)` on the SpacetimeManager to prevent the connection from being destroyed during scene transitions. Without it, the connection drops every time you load a new scene.

### Domain Reloading
The SDK resets its own internal static Unity state when entering Play Mode, including projects that disable Domain Reloading in Unity's Enter Play Mode Options. Reset any static fields and singleton references in your own game code separately.

### IL2CPP / AOT
The SpacetimeDB SDK uses code generation. If you encounter issues with IL2CPP builds:
- Ensure generated bindings are up to date
- Check that `link.xml` preserves SpacetimeDB types if you use assembly stripping

### Token Persistence
Token save/load via `PlayerPrefs` is demonstrated in the SpacetimeManager singleton above. Persisting the server-issued token and passing it back on reconnect keeps the same identity; without a saved token the server issues a new identity in the `OnConnect` callback. This token does not expire and a lost one can't be recovered, so self-issued identities are for development. For production, authenticate with an OIDC provider such as SpacetimeAuth, which handles token lifecycle.

Original file line number Diff line number Diff line change
Expand Up @@ -345,9 +345,18 @@ ctx.procedures.makeRequest().then(
</TabItem>
<TabItem value="csharp" label="C#">

C# modules currently cannot define procedures. Support for defining procedures in C# modules will be released shortly.
C# modules can define procedures:

A C# [client](#client) can call a procedure defined by a Rust or TypeScript module:
```csharp
[SpacetimeDB.Procedure]
Comment on lines +348 to +351
public static string MakeRequest(ProcedureContext ctx)
{
// ...
return "result";
}
```

A C# [client](#client) can call a procedure defined by a module:

```csharp
void Main()
Expand Down Expand Up @@ -384,7 +393,7 @@ Because procedures are unstable, Rust modules that define them must opt in to th

```toml
[dependencies]
spacetimedb = { version = "1.x", features = ["unstable"] }
spacetimedb = { version = "2.*", features = ["unstable"] }
```

Then, that module can define a procedure:
Expand Down Expand Up @@ -436,7 +445,7 @@ Use the other tabs (TypeScript/C#/Rust/Unreal C++/Blueprint) for client call exa
</TabItem>
<TabItem value="cpp-unreal" label="Unreal C++">

An Unreal C++ [client](#client) can call a procedure defined by a Rust or TypeScript module:
An Unreal C++ [client](#client) can call a procedure defined by a module:

```cpp
{
Expand Down Expand Up @@ -468,7 +477,7 @@ void AGameManager::OnMakeRequestComplete(const FProcedureEventContext& Context,
</TabItem>
<TabItem value="blueprint" label="Unreal Blueprint">

An Unreal [client](#client) can call a procedure defined by a Rust or TypeScript module:
An Unreal [client](#client) can call a procedure defined by a module:

![MakeRequest without callback](/images/unreal/intro/ue-blueprint-makerequest-nocallback.png)

Expand Down
11 changes: 6 additions & 5 deletions docs/docs/00100-intro/00200-quickstarts/00100-react.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,18 +47,19 @@ spacetime dev --template react-ts
<StepText>
Your project contains both server and client code.

Edit `spacetimedb/src/index.ts` to add tables and reducers. Edit `client/src/App.tsx` to build your UI.
Edit `spacetimedb/src/index.ts` to add tables and reducers. Edit `src/App.tsx` to build your UI.
</StepText>
<StepCode>
```
my-spacetime-app/
├── spacetimedb/ # Your SpacetimeDB module
│ └── src/
│ └── index.ts # Server-side logic
├── client/ # React frontend
│ └── src/
│ ├── App.tsx
│ └── module_bindings/ # Auto-generated types
├── src/ # React frontend
│ ├── App.tsx
│ └── module_bindings/ # Auto-generated types
├── spacetime.json # Shared SpacetimeDB dev config
├── spacetime.local.json # Local database name
└── package.json
```
</StepCode>
Expand Down
11 changes: 9 additions & 2 deletions docs/docs/00100-intro/00300-tutorials/00100-chat-app.md
Original file line number Diff line number Diff line change
Expand Up @@ -2042,7 +2042,10 @@ void PrintMessage(RemoteTables tables, Message message)

#### Warn if our name was rejected

We can also register callbacks to run each time a reducer is invoked. We register these callbacks using the `OnReducerEvent` method of the `Reducer` namespace, which is automatically implemented for each reducer by `spacetime generate`.
We can also register callbacks for reducer results. We register these callbacks
using generated events on `conn.Reducers`, such as `conn.Reducers.OnSetName`
and `conn.Reducers.OnSendMessage`, which are automatically implemented for
each reducer by `spacetime generate`.
Comment on lines +2045 to +2048

Each reducer callback takes one fixed argument:

Expand All @@ -2061,7 +2064,11 @@ These callbacks will be invoked in one of two cases:

Note that a status of `Failed` or `OutOfEnergy` implies that the caller identity is our own identity.

We already handle successful `SetName` invocations using our `User.OnUpdate` callback, but if the module rejects a user's chosen name, we'd like that user's client to let them know. We define a function `Reducer_OnSetNameEvent` as a `Reducer.OnSetNameEvent` callback which checks if the reducer failed, and if it did, prints an error message including the rejected name.
We already handle successful `SetName` invocations using our `User.OnUpdate`
callback, but if the module rejects a user's chosen name, we'd like that user's
client to let them know. We define a function `Reducer_OnSetNameEvent` and
register it with `conn.Reducers.OnSetName`; the callback checks if the reducer
failed, and if it did, prints an error message including the rejected name.

We'll test both that our identity matches the sender and that the status is `Failed`, even though the latter implies the former, for demonstration purposes.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ The `SpacetimeDBNetworkManager` is a simple script which hooks into the Unity `U

When you build a new connection to SpacetimeDB, that connection will be added to and managed by the `SpacetimeDBNetworkManager` automatically.

The SDK also resets its own internal static Unity state when entering Play Mode, including projects that disable Domain Reloading in Unity's Enter Play Mode Options. Your own static fields and singleton references are still your responsibility.

Click on the `GameManager` object in the scene and click **Add Component**. Search for and select the `SpacetimeDBNetworkManager` to add it to your `GameManager` object.

Our Unity project is all set up! If you press play, it will show a blank screen, but it should start the game without any errors. Now we're ready to get started on our SpacetimeDB server module, so we have something to connect to!
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -701,7 +701,7 @@ Replace the implementation of the `GameManager` class with the following.
public class GameManager : MonoBehaviour
{
const string SERVER_URL = "http://127.0.0.1:3000";
const string MODULE_NAME = "blackholio";
const string DATABASE_NAME = "blackholio";

public static event Action OnConnected;
public static event Action OnSubscriptionApplied;
Expand All @@ -719,13 +719,13 @@ public class GameManager : MonoBehaviour
Application.targetFrameRate = 60;

// In order to build a connection to SpacetimeDB we need to register
// our callbacks and specify a SpacetimeDB server URI and module name.
// our callbacks and specify a SpacetimeDB server URI and database name.
var builder = DbConnection.Builder()
.OnConnect(HandleConnect)
.OnConnectError(HandleConnectError)
.OnDisconnect(HandleDisconnect)
.WithUri(SERVER_URL)
.WithDatabaseName(MODULE_NAME);
.WithDatabaseName(DATABASE_NAME);

// If the user has a SpacetimeDB auth token stored in the Unity PlayerPrefs,
// we can use it to authenticate the connection.
Expand Down Expand Up @@ -803,7 +803,7 @@ public class GameManager : MonoBehaviour

> Unity WebGL needs one extra precaution here. Browser WebSocket APIs cannot set an `Authorization` header, so reconnecting with a saved server-issued token may yield a short-lived WebSocket token in `HandleConnect`. The `#if UNITY_WEBGL` guard keeps the original saved token instead of overwriting it during reconnect.

Here we configure the connection to the database, by passing it some callbacks in addition to providing the `SERVER_URI` and `MODULE_NAME` to the connection. When the client connects, the SpacetimeDB SDK will call the `HandleConnect` method, allowing us to start up the game.
Here we configure the connection to the database, by passing it some callbacks in addition to providing the `SERVER_URL` and `DATABASE_NAME` to the connection. When the client connects, the SpacetimeDB SDK will call the `HandleConnect` method, allowing us to start up the game.

In our `HandleConnect` callback we build a subscription and call `Subscribe`, subscribing to all data in the database. This causes SpacetimeDB to synchronize the state of all your tables with your Unity client's SDK client cache.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -721,7 +721,7 @@ const START_PLAYER_MASS: i32 = 15;
#[spacetimedb::reducer]
pub fn enter_game(ctx: &ReducerContext, name: String) -> Result<(), String> {
log::info!("Creating player with name {}", name);
let mut player: Player = ctx.db.player().identity().find(ctx.sender).ok_or("")?;
let mut player: Player = ctx.db.player().identity().find(ctx.sender()).ok_or("")?;
let player_id = player.player_id;
player.name = name;
ctx.db.player().identity().update(player);
Expand Down Expand Up @@ -786,11 +786,11 @@ pub fn disconnect(ctx: &ReducerContext) -> Result<(), String> {
.db
.player()
.identity()
.find(&ctx.sender)
.find(&ctx.sender())
.ok_or("Player not found")?;
let player_id = player.player_id;
ctx.db.logged_out_player().insert(player);
ctx.db.player().identity().delete(&ctx.sender);
ctx.db.player().identity().delete(&ctx.sender());

// Remove any circles from the arena
for circle in ctx.db.circle().player_id().filter(&player_id) {
Expand Down Expand Up @@ -1554,7 +1554,7 @@ At this point, after publishing our module we can press the play button to see t

- If you get an error when running the generate command, make sure you have an empty subfolder in your Unity project Assets folder called `module_bindings`

- If you get an error in your Unity console when starting the game, double check that you have published your module and you have the correct module name specified in your `GameManager`.
- If you get an error in your Unity console when starting the game, double check that you have published your module and you have the correct database name specified in your `GameManager`.

### Next Steps

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -864,13 +864,13 @@ Notice that the food automatically respawns as you vaccuum them up. This is beca
- Publish to Maincloud `spacetime publish --server maincloud <your database name> --delete-data`
- `<your database name>` This name should be unique and cannot contain any special characters other than internal hyphens (`-`). You will have to update the database name in `blackholio-server/spacetime.local.json` to match.
- Update the URL in the Unity project to: `https://maincloud.spacetimedb.com`
- Update the module name in the Unity project to `<your database name>`.
- Update the database name in the Unity project to `<your database name>`.
- Clear the PlayerPrefs in Start() within `GameManager.cs`
- Your `GameManager.cs` should look something like this:

```csharp
const string SERVER_URL = "https://maincloud.spacetimedb.com";
const string MODULE_NAME = "<your module name>";
const string DATABASE_NAME = "<your database name>";

...

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -655,7 +655,7 @@ spacetime generate --lang unrealcpp --uproject-dir .. --unreal-module-name black
This will generate a set of files in the `blackholio/Source/blackholio/Private/ModuleBindings` and `blackholio/Source/blackholio/Public/ModuleBindings` directories which contain the code generated types and reducer functions that are defined in your module, but usable on the client.

:::note
`--uproject-dir` is straightforward as the path to the .uproject file. `--unreal-module-name` is the name of the Unreal module which in most projects is the name of the project, in this case `blackholio`.
`--uproject-dir` is the path to the Unreal project directory that contains the `.uproject` file. `--unreal-module-name` is the name of the Unreal module, which in most projects is the name of the project, in this case `blackholio`.
:::

:::warning
Expand Down Expand Up @@ -873,7 +873,7 @@ void AGameManager::HandleSubscriptionApplied(FSubscriptionEventContext& Context)
}
```

Here we configure the connection to the database, by passing it some callbacks in addition to providing the `SERVER_URI` and `MODULE_NAME` to the connection. When the client connects, the SpacetimeDB SDK will call the `HandleConnect` method, allowing us to start up the game.
Here we configure the connection to the database, by passing it some callbacks in addition to providing the `ServerUri` and `DatabaseName` to the connection. When the client connects, the SpacetimeDB SDK will call the `HandleConnect` method, allowing us to start up the game.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we sure this is the right casing?


In our `HandleConnect` callback we build a subscription and are calling `Subscribe` and subscribing to all data in the database. This will cause SpacetimeDB to synchronize the state of all your tables with your Unreal client's SpacetimeDB SDK's "client cache". You can also subscribe to specific tables using SQL syntax, e.g. `SELECT * FROM my_table`. Our [SQL documentation](../../../00300-resources/00200-reference/00400-sql-reference.md) enumerates the operations that are accepted in our SQL syntax.
</TabItem>
Expand Down Expand Up @@ -955,7 +955,7 @@ Update the **Event EndPlay** and **Event Tick** to the following:
Update the **OnConnect_Event**:
![Update OnConnect](/images/unreal/part-2-08-blueprint-onconnect.png)

Here we configure the connection to the database, by passing it some callbacks in addition to providing the `SERVER_URI` and `MODULE_NAME` to the connection. When the client connects, the SpacetimeDB SDK will call the `OnConnect_Event` method, allowing us to start up the game.
Here we configure the connection to the database, by passing it some callbacks in addition to providing the `ServerUri` and `DatabaseName` to the connection. When the client connects, the SpacetimeDB SDK will call the `OnConnect_Event` method, allowing us to start up the game.

In our `OnConnect_Event` callback we build a subscription and are calling `Subscribe` and subscribing to all data in the database. This will cause SpacetimeDB to synchronize the state of all your tables with your Unreal client's SpacetimeDB SDK's "client cache". You can also subscribe to specific tables using SQL syntax, e.g. `SELECT * FROM my_table`. Our [SQL documentation](../../../00300-resources/00200-reference/00400-sql-reference.md) enumerates the operations that are accepted in our SQL syntax.
</TabItem>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -920,7 +920,7 @@ Notice that the food automatically respawns as you vaccuum them up. This is beca
- Publish to Maincloud `spacetime publish --server maincloud <your database name> --delete-data`
- `<your database name>` This name should be unique and cannot contain any special characters other than internal hyphens (`-`).
- Update the URL in the Unreal project to: `https://maincloud.spacetimedb.com`
- Update the module name in the Unreal project to `<your database name>`.
- Update the database name in the Unreal project to `<your database name>`.
- Your `BP_GameManager` should look something like this:

![Maincloud Setup](/images/unreal/part-4-01-maincloud.png)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -721,7 +721,7 @@ const START_PLAYER_MASS: i32 = 15;
#[spacetimedb::reducer]
pub fn enter_game(ctx: &ReducerContext, name: String) -> Result<(), String> {
log::info!("Creating player with name {}", name);
let mut player: Player = ctx.db.player().identity().find(ctx.sender).ok_or("")?;
let mut player: Player = ctx.db.player().identity().find(ctx.sender()).ok_or("")?;
let player_id = player.player_id;
player.name = name;
ctx.db.player().identity().update(player);
Expand Down Expand Up @@ -786,11 +786,11 @@ pub fn disconnect(ctx: &ReducerContext) -> Result<(), String> {
.db
.player()
.identity()
.find(&ctx.sender)
.find(&ctx.sender())
.ok_or("Player not found")?;
let player_id = player.player_id;
ctx.db.logged_out_player().insert(player);
ctx.db.player().identity().delete(&ctx.sender);
ctx.db.player().identity().delete(&ctx.sender());

// Remove any circles from the arena
for circle in ctx.db.circle().player_id().filter(&player_id) {
Expand Down Expand Up @@ -1639,7 +1639,7 @@ After publishing our module we can press the play button to see the fruits of ou

- If you get an error when running the generate command, make sure you have an empty subfolder in your Godot project Assets folder called `module_bindings`

- If you get an error in your Godot console when starting the game, double check that you have published your module and you have the correct module name specified in your `GameManager`.
- If you get an error in your Godot console when starting the game, double check that you have published your module and you have the correct database name specified in your `GameManager`.

### Next Steps

Expand Down
Loading
Loading