## Protocol packets ```rs type Obj = u128 type Res = [u8; 32] 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) ``` ## Resource formats ### Prefab ``` ([part])* ``` ### Part ``` ([len_key:u8] [len_value:u8] ([key:u8])* ([value:u8])*)* ``` - vertex_attributes: `[Res<[f32]>]` - index: `Res<[[u16;3]]>` - armature: ???? - fragment_shader: Shader - fragment_shader_data: `Res<[f32]>` - vertex_shader: Shader - vertex_shader_data: `Res<[f32]>` - texture: Texture ### Texture WebP ### Shader glsl source, todo ## Player tree - LowerTorso (2x leg tilt) - FootL - FootR - UpperTorso (2x arm tilt) - HandL (5x finger, 5x tilt) - HandR (5x finger, 5x tilt) - Head (2x brow, 2x eyelid, 2x eye, 3x mouth)