|
1 | 1 | # PurrNet EOS Transport |
2 | 2 |
|
3 | | -An [Epic Online Services](https://dev.epicgames.com/en-US/services) P2P transport for [PurrNet](https://purrnet.dev/), built on top of the [PlayEveryWare EOS Unity Plugin](https://github.com/PlayEveryWare/eos_plugin_for_unity_upm). |
4 | | - |
5 | | -Use it when you want EOS-friend-list / lobby flows to drive your PurrNet connection without standing up a relay of your own. |
| 3 | +[Epic Online Services](https://dev.epicgames.com/en-US/services) P2P transport for [PurrNet](https://purrnet.dev/). Drop it on your `NetworkManager` and PurrNet rides on top of EOS — no relay to host, no extra glue. |
6 | 4 |
|
7 | 5 | ## Install |
8 | 6 |
|
9 | | -Add the package to your Unity project's `Packages/manifest.json`: |
| 7 | +Easiest path — open **Tools → PurrNet → PurrNet Packages** and hit install on EOS Transport. One click and you're done. |
| 8 | + |
| 9 | +If you'd rather pull it in by hand, open Unity's Package Manager → **Add package from git URL** and paste: |
10 | 10 |
|
11 | | -```json |
12 | | -"dev.purrnet.eostransport": "https://github.com/PurrNet/PurrNetEOSTransport.git?path=/Assets/EOSTransport#release" |
| 11 | +``` |
| 12 | +https://github.com/PurrNet/PurrNetEOSTransport.git?path=/Assets/EOSTransport#release |
13 | 13 | ``` |
14 | 14 |
|
15 | | -For the in-development branch, swap `#release` for `#dev`. |
| 15 | +Swap `#release` for `#dev` if you want the in-development branch. |
16 | 16 |
|
17 | | -### Required dependencies |
| 17 | +You'll also need the [PlayEveryWare EOS Plugin](https://github.com/PlayEveryWare/eos_plugin_for_unity_upm). Same flow — Package Manager → **Add package from git URL**: |
18 | 18 |
|
19 | | -| Package | Why | |
20 | | -|---|---| |
21 | | -| [PurrNet](https://github.com/PurrNet/PurrNet) | The networking layer this transport plugs into. | |
22 | | -| [PlayEveryWare EOS Plugin](https://github.com/PlayEveryWare/eos_plugin_for_unity_upm) (`com.playeveryware.eos`) | Provides the EOS SDK + `EOSManager`. The transport is gated by a `versionDefine` on this package, so the runtime code only compiles when it's present. | |
| 19 | +``` |
| 20 | +https://github.com/PlayEveryWare/eos_plugin_for_unity_upm.git |
| 21 | +``` |
| 22 | + |
| 23 | +That gives you the EOS SDK and `EOSManager`. The transport's runtime code is gated by a `versionDefine` on `com.playeveryware.eos`, so it only compiles once the plugin is in. |
23 | 24 |
|
24 | | -You'll also need an Epic dev account and product credentials configured via **Tools → EOS Plugin → EOS Configuration**. |
| 25 | +Then set up your Epic dev account and product credentials under **Tools → EOS Plugin → EOS Configuration**. |
25 | 26 |
|
26 | 27 | ## Usage |
27 | 28 |
|
28 | 29 | 1. Add the `EOSTransport` component to your `NetworkManager`. |
29 | | -2. Configure `socketName` (any string both peers agree on) and `remoteProductUserId` (the host's EOS Product User ID — set this on the client side before connecting). |
30 | | -3. Server starts via `NetworkManager.StartServer()`; client connects via `NetworkManager.StartClient()`. |
| 30 | +2. Set `socketName` (any string, both peers just need to agree on it). |
| 31 | +3. On the client, set `remoteProductUserId` to the host's EOS Product User ID before connecting. |
| 32 | +4. `NetworkManager.StartServer()` to host, `NetworkManager.StartClient()` to join. |
31 | 33 |
|
32 | | -Host loopback is handled automatically — calling `StartClient()` on the same `NetworkManager` after `StartServer()` short-circuits to in-process delivery instead of routing through EOS. |
| 34 | +If you call `StartClient()` on the same `NetworkManager` that's already hosting, it short-circuits to in-process delivery instead of going through EOS. Host loopback, no extra wiring. |
33 | 35 |
|
34 | 36 | ## Attribution |
35 | 37 |
|
36 | | -Originally derived from [`quentinleon/PurrNetEOSTransport`](https://github.com/quentinleon/PurrNetEOSTransport) (MIT, © 2025 Quentin Leon). This version is substantially rewritten — it adds an `EOSPeer` abstraction, fragmentation queue with `LimitExceeded` backpressure, host loopback, channel-to-reliability mapping, and notification-handle cleanup guards. Maintained under the PurrNet org. |
37 | | - |
38 | | -Both copyright lines are preserved in [`LICENSE`](./LICENSE). |
| 38 | +Forked from [`quentinleon/PurrNetEOSTransport`](https://github.com/quentinleon/PurrNetEOSTransport) (MIT, © 2025 Quentin Leon) and rewritten — `EOSPeer` abstraction, fragmentation queue with `LimitExceeded` backpressure, host loopback, channel-to-reliability mapping, and notification-handle cleanup. Both copyright lines live in [`LICENSE`](./LICENSE). |
39 | 39 |
|
40 | 40 | ## License |
41 | 41 |
|
|
0 commit comments