https://github.com/widgrensit/asobi-unreal-demo
UE5 demo project for the Asobi SDK
https://github.com/widgrensit/asobi-unreal-demo
Last synced: 26 days ago
JSON representation
UE5 demo project for the Asobi SDK
- Host: GitHub
- URL: https://github.com/widgrensit/asobi-unreal-demo
- Owner: widgrensit
- License: apache-2.0
- Created: 2026-04-23T13:35:17.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-01T14:47:14.000Z (about 2 months ago)
- Last Synced: 2026-05-01T16:29:06.272Z (about 2 months ago)
- Language: C++
- Size: 17.6 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# asobi-unreal-demo
Minimal UE5 demo project for the [Asobi Unreal SDK](https://github.com/widgrensit/asobi-unreal).
A player auto-registers, queues for the `demo` matchmaker, drops into a match, and moves a cube around with WASD. Other players in the same match render as remote cubes, their positions driven by `match.state` updates from the asobi server.
## Prerequisites
- Unreal Engine 5.4+ (tested on 5.4–5.7)
- A running [`sdk_demo_backend`](https://github.com/widgrensit/sdk_demo_backend) (see below)
## Setup
1. **Bring up a backend.** One command, no Erlang or rebar3 required:
```bash
git clone https://github.com/widgrensit/sdk_demo_backend
cd sdk_demo_backend && docker compose up -d
```
Server listens on `http://localhost:8084`.
2. **Clone this repo with submodules:**
```bash
git clone --recursive https://github.com/widgrensit/asobi-unreal-demo.git
```
If you already cloned without `--recursive`:
```bash
git submodule update --init --recursive
```
3. **Generate project files:** right-click `AsobiUnrealDemo.uproject` → *Generate Visual Studio project files* (or the Unix equivalent).
4. **Open `AsobiUnrealDemo.uproject` in UE5.** First open will compile the `AsobiSDK` plugin.
5. **Create a level:** the repo doesn't ship a `.umap`. In the editor, *File → New Level → Basic*, save it under `Content/Maps/ArenaMap`, then *Edit → Project Settings → Maps & Modes → Game Default Map*: set to `ArenaMap`.
6. **Press Play.** The HUD will show `LoggingIn → Connecting → Queuing → InMatch`. Press WASD to move; if a second client is queued, it'll appear as a remote cube.
## Controls
- **WASD** — move
## Project layout
| File | Purpose |
|---|---|
| `AsobiDemoGameInstance` | Owns SDK objects, handles auth → WS connect → matchmaker |
| `AsobiDemoGameMode` | Listens to `OnMatchState`, spawns and updates pawns; registers `AsobiDemoHUD` |
| `AsobiDemoPawn` | Local player WASD + 30 Hz `match.input`; remote pawns lerp to `match.state` positions; ships a top-down spring-arm + camera so Play just works |
| `AsobiDemoHUD` | Status overlay |
## License
Apache 2.0