From 3d156d75de3852dd36d0eeda33b17a2b6f10aa4a Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 7 Jan 2025 21:16:40 +0100 Subject: new proto doc --- doc/protocol.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 doc/protocol.md (limited to 'doc/protocol.md') diff --git a/doc/protocol.md b/doc/protocol.md new file mode 100644 index 0000000..cd4694e --- /dev/null +++ b/doc/protocol.md @@ -0,0 +1,36 @@ +# Protocol + +Default port is 28555 for TCP and UDP transport. + +For TCP, packets are concatenated to a stream. + +For UDP, game packets are concatenated in groups of at least one to form one UDP +packet. + +## Protocol packets + +All packets are preceeded by its length as u32. The next byte indicates the +type. The following bytes are the parameters. + +`Vec` is stored as u32 element count followed by the elements. `Res` is +used to denote 256-bit resource hash referring to data of type T. `Obj` refers +128-bit game objects IDs. + +```rs +00 connect(identity: u128) +ff disconnect() +01 request_resource(name: Res) +02 respond_resource(data: Vec) +03 add(id: Obj, prefab: Res) +04 remove(id: Obj) +05 position(id: Obj, pos: Vec3, rot: Vec3) +06 pose(id: Obj, params: Vec) +07 parent(parent: Obj, child: Obj) +08 sound(id: Obj, data: Vec) +09 prefab_index(res: Res) +``` + +## Resources + +Resources are reusable things. They are identified by the SHA-256 hash of their +serialized content. See [resources.md](./resources.md) -- cgit v1.2.3-70-g09d2