https://github.com/widgrensit/asobi-unreal
Unreal Engine 5 C++ plugin SDK for Asobi game backend
https://github.com/widgrensit/asobi-unreal
asobi client-sdk cpp game-backend gamedev multiplayer sdk ue5 unreal-engine unreal-engine-5
Last synced: 25 days ago
JSON representation
Unreal Engine 5 C++ plugin SDK for Asobi game backend
- Host: GitHub
- URL: https://github.com/widgrensit/asobi-unreal
- Owner: widgrensit
- License: apache-2.0
- Created: 2026-04-02T11:38:22.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-05-01T17:52:30.000Z (about 2 months ago)
- Last Synced: 2026-05-01T19:25:07.271Z (about 2 months ago)
- Topics: asobi, client-sdk, cpp, game-backend, gamedev, multiplayer, sdk, ue5, unreal-engine, unreal-engine-5
- Language: C++
- Size: 47.9 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# asobi-unreal
Unreal Engine 5 C++ plugin SDK for the [Asobi](https://github.com/widgrensit/asobi) game backend. Requires UE 5.4+ (tested on 5.4–5.7).
## Installation
Clone into your project's `Plugins/` directory:
```bash
cd YourProject/Plugins
git clone https://github.com/widgrensit/asobi-unreal.git AsobiSDK
```
Regenerate project files, then enable `Asobi SDK` in *Edit → Plugins → Networking*.
## Run a backend first
The SDK talks to an Asobi server. The fastest way to get one is:
```bash
git clone https://github.com/widgrensit/sdk_demo_backend
cd sdk_demo_backend && docker compose up -d
```
That serves at `http://localhost:8084` (HTTP + WebSocket on `/ws`) with a 2-player `demo` mode. For the full reference game (arena shooter) see [`asobi_arena_lua`](https://github.com/widgrensit/asobi_arena_lua).
## Quick Start
```cpp
#include "AsobiClient.h"
#include "AsobiAuth.h"
#include "AsobiMatchmaker.h"
#include "AsobiWebSocket.h"
UAsobiClient* Client = NewObject();
Client->SetBaseUrl(TEXT("http://localhost:8084"));
UAsobiAuth* Auth = NewObject();
Auth->Init(Client);
FOnAsobiAuthResponse OnLogin;
OnLogin.BindDynamic(this, &AMyPawn::HandleLogin);
Auth->Login(TEXT("player1"), TEXT("secret"), OnLogin);
```
### Listening for a match
The matchmaker pushes `match.matched` after pairing players; a client-initiated `match.join` produces `match.joined`. Subscribe to **both** to cover matchmade and direct-join paths:
```cpp
WebSocket->OnMatchMatched.AddDynamic(this, &UMyClass::OnReady);
WebSocket->OnMatchJoined.AddDynamic(this, &UMyClass::OnReady);
```
See the [WebSocket protocol guide](https://github.com/widgrensit/asobi/blob/main/guides/websocket-protocol.md) for the full event surface.
## Features
| Subsystem | REST | WebSocket |
|---|---|---|
| Auth (register, login, refresh, OAuth, IAP) | ✓ | — |
| Players & stats | ✓ | — |
| Matches & matchmaker | ✓ | ✓ |
| Worlds (MMO-scale, terrain streaming) | ✓ | ✓ |
| Chat & direct messages | ✓ | ✓ |
| Social (friends, groups) | ✓ | — |
| Economy (wallets, store, inventory) | ✓ | — |
| Leaderboards & tournaments | ✓ | — |
| Cloud saves & storage | ✓ | — |
| Presence & notifications | ✓ | ✓ |
| Voting (cast, veto) | ✓ | ✓ |
Blueprint-callable on every subsystem. Typed `USTRUCT` responses for player, world, match, DM, leaderboard, etc.
## Modules
- `UAsobiClient` — HTTP + JSON helpers, auth token store
- `UAsobiAuth`, `UAsobiMatch`, `UAsobiMatchmaker`, `UAsobiWorld`, `UAsobiEconomy`, `UAsobiLeaderboard`, `UAsobiSocial`, `UAsobiStorage`, `UAsobiTournament`, `UAsobiDirectMessage`
- `UAsobiWebSocket` — real-time client with typed multicast delegates (`OnMatchState`, `OnWorldTick`, `OnWorldTerrain`, `OnDmMessage`, …)
## Demo
See [asobi-unreal-demo](https://github.com/widgrensit/asobi-unreal-demo) for a working UE5 sample project.
## Smoke test
Every release of this plugin runs the canonical SDK smoke flow against `widgrensit/sdk_demo_backend`. See [`Source/AsobiSDK/Tests/SmokeTest.md`](Source/AsobiSDK/Tests/SmokeTest.md) for the manual run command and CI notes.
## License
Apache 2.0