Real-time multiplayer chat for Godot 4 games — without running your own chat servers.
You create a studio account, drop in one node, and your players can talk in isolated rooms. Rooms and chat history are completely separated by app_id, so different games never see each other. Players connect with short-lived JWTs that you mint on your own game server.
No infrastructure to maintain. Just chat.
Free tier limits:
- 20 concurrent connections
- 2 rooms
- 500 messages per day
- 20 messages of history returned on join
Higher limits are available on paid plans. First 60 days for free. Get charged at the end of the 60 days.
This addon does not host chat itself. The live API is https://aponteplace.io. Create a studio account at https://bgdchat.com to get an app_id and a server secret.
Important: Do not put an
sk_live_secret in a shipped game. Mint player tokens on a trusted game server. The Godot client only stores the player JWT and talks to the WebSocket.
Install
- Copy
addons/bdg_chatinto your project. - Project → Project Settings → Plugins → enable BDG Chat.
- Add a
BDGChatClientnode, or openaddons/bdg_chat/example/chat_demo.tscn.
In a game
$Chat.app_id = "app_xxxxxxxx"
$Chat.player_token = player_jwt_from_your_game_server
$Chat.connect_to_chat()
# Wait for the connected signal
await $Chat.connected
$Chat.join("lobby")
$Chat.send_chat("hello")
Exports
- ws_url (default wss://aponteplace.io/ws)
- app_id
- player_token
Methods
- connect_to_chat()
- join(room)
- send_chat(text)
- leave()
- close()
- is_socket_open()
Signals
- connected
- disconnected(code, reason)
- joined(room, user_id, display_name, users_online)
- chat_received(text, display_name, user_id, ts, room)
- user_joined(user_id, display_name)
- user_left(user_id, display_name)
- error_received(code, message)
- raw_event(payload)
The client sends a ping every 25 seconds. Minting player tokens (server only). BDGPlayerTokens.mint() POSTs to https://aponteplace.io/apps/{app_id}/player-tokens with Authorization: Bearer sk_live_... Use this from a trusted server or a private tool — never from a released client.
Protocol
- Game server: POST /apps/{app_id}/player-tokens with the studio secret.
- Client connects to: wss://aponteplace.io/ws
- Join: { "type":"join", "room":"lobby", "app_id":"app_xxx", "token": PLAYER_JWT }
- Chat: { "type":"chat", "text":"hello" }
- Events: joined, chat, user_joined, user_left, error
Requirements
- Godot 4.7 or newer
- A BDG Chat studio account and app_id
- A player token minted by your game server
The live API and product are from XStreamIO.
License: MIT
Copyright (c) 2026 XStreamIO / Misael Aponte
Site: https://bgdchat.com
API: https://aponteplace.io
Company: https://xstreamio.com
Changelog for version V1.0.0-alpha
2026-08-14 15:42:10
No changelog provided for this version.