All of this came out of watching my own traffic. Some entries are confirmed, some are a best guess, and a few amount to "this keeps showing up and I don't know why" — those say so. Nothing here is official, and none of it is guaranteed to survive the next client update. Done out of curiosity, shared as is.
Was updated with Calude AI to fix my english and improve some information about events
| File | Contents |
|---|---|
| Both.md | Codes seen in both directions — the bulk of the reference |
| OnEvent.md | Incoming-only codes |
| OpRaise.md | Outgoing-only codes |
| Operations.md | Login, join and leave — the operations the events ride in |
| Event74.md | Code 74 in detail — every world object shares this one event |
| UnSorted.md | Unidentified codes and open questions |
| Code | What it is | Where |
|---|---|---|
1 |
Voice | Both |
2 |
Show Message | OnEvent |
3 |
Sync request, like 5 |
OnEvent |
4 |
Master sync | UnSorted |
5 |
Ask master for a data sync | OnEvent |
6 |
RPC trigger | Both |
7 |
Unreliable serialization | Both |
8 |
Serialization interest table | OpRaise |
10 |
Udon sync — scene objects | OnEvent |
11 18 |
Udon sync — player objects, RPCs | Both |
12 |
Player serialization / IK | Both |
13 |
Avatar parameter sync | Both |
14 |
Props | Both |
16 17 |
Object sync / pickups | Both |
20 51 |
Join world / loaded | OnEvent |
22 |
Take ownership | Both |
24 25 |
Instance snapshot — in / out | OnEvent · OnEvent |
33 |
Moderation / instance control | Both |
34 |
Rate limit table | OnEvent |
35 |
Ping-ish, no payload | OnEvent |
40 |
Avatar refresh? | OpRaise |
42 |
VR mode / nameplate group | OpRaise |
43 44 |
ChatBox message / typing | Both |
53 |
Store products | OnEvent |
60 |
PhysBones permissions | Both |
66 |
EAC heartbeat | OpRaise |
67 |
AppId | OpRaise |
71 |
Emoji (legacy) | UnSorted |
73 |
Private avatar token | OnEvent · OpRaise |
74 |
All world objects | Event74 |
76 |
Emoji | OpRaise |
202 |
Instantiate | OpRaise |
226 253 254 255 |
Photon internals | OnEvent |
21 26 28 |
Unidentified | OnEvent |
Some of these only make sense as a group:
- Serialization:
1, 6, 7, 11, 12, 13, 17, 18, 22— continuous state sync. - Udon sync:
10, 11, 18. - World objects:
74, plus16,17,22for the objects it spawns.
Events travel inside Photon operations, which are numbered separately. Four show up in a normal session:
| Op | What it is |
|---|---|
231 |
Login — auth cookie, hwid, region, app version |
226 |
Join instance — sent twice, the second one carries the instance token |
253 |
Raise event — everything in OpRaise.md is one of these |
254 |
Leave |
Captured parameter dumps and the full connect sequence: Operations.md
- OnEvent = incoming, hooked at
IPhotonPeerListener.OnEvent(EventData). - OpRaise = outgoing, i.e.
SendOperation(253, ...)with the event code in parameter244and the payload in parameter245. - The two number spaces are separate. Event
226(AppStats, incoming) and operation226(JoinGame, outgoing) are unrelated. Same for253and254.
This documents what each event is and roughly how it is shaped — not a decoder. Payload dumps are here because that is what was observed on the wire; exact offsets, packing and parsing are deliberately left out. If you want them, go look.
Where something is inferred rather than confirmed, it says so.