From bea92dd298772aad8330927221920dec5baf7ba5 Mon Sep 17 00:00:00 2001 From: Mirko Jugurdzija Date: Wed, 15 Apr 2026 10:39:32 +0200 Subject: [PATCH 1/7] feat: add LookAtPosition, Reaction and ChatReaction comms messages (#384) --- .../kernel/comms/rfc4/comms.proto | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/proto/decentraland/kernel/comms/rfc4/comms.proto b/proto/decentraland/kernel/comms/rfc4/comms.proto index ad864959..66427042 100644 --- a/proto/decentraland/kernel/comms/rfc4/comms.proto +++ b/proto/decentraland/kernel/comms/rfc4/comms.proto @@ -18,6 +18,9 @@ message Packet { PlayerEmote player_emote = 9; SceneEmote scene_emote = 10; MovementCompressed movement_compressed = 12; + LookAtPosition look_at_position = 13; + Reaction reaction = 14; + ChatReaction chat_reaction = 15; } uint32 protocol_version = 11; } @@ -138,3 +141,25 @@ message Voice { VC_OPUS = 0; } } + +// Message sent to force an avatar to look at a position +message LookAtPosition { + float timestamp = 1; + // world position + float position_x = 2; + float position_y = 3; + float position_z = 4; + string target_avatar_wallet_address = 5; +} + +message Reaction { + int32 emoji_index = 1; + float timestamp = 2; + int32 count = 3; +} + +message ChatReaction { + int32 emoji_index = 1; + string message_id = 2; + string address = 3; +} From 0ed6dc30842b75db984ca2b0f35c58551df358af Mon Sep 17 00:00:00 2001 From: Pravus Date: Thu, 16 Apr 2026 22:37:04 +0900 Subject: [PATCH 2/7] chore: update particle system bursts property (#386) Replaced bursts collection with wrapper --- .gitignore | 3 ++- proto/decentraland/sdk/components/particle_system.proto | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index cf4e96af..d314a4e8 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ node_modules package-lock.json .DS_Store out-* -proto/google \ No newline at end of file +proto/google +.idea \ No newline at end of file diff --git a/proto/decentraland/sdk/components/particle_system.proto b/proto/decentraland/sdk/components/particle_system.proto index 5d59d236..61ade1ae 100644 --- a/proto/decentraland/sdk/components/particle_system.proto +++ b/proto/decentraland/sdk/components/particle_system.proto @@ -65,7 +65,7 @@ message PBParticleSystem { optional PlaybackState playback_state = 22; // default = PS_PLAYING // --- Emission Bursts --- - repeated Burst bursts = 29; + optional BurstConfiguration bursts = 29; // ---- Nested types ---- @@ -102,6 +102,10 @@ message PBParticleSystem { } // Emission burst configuration. + message BurstConfiguration { + repeated Burst values = 1; + } + message Burst { float time = 1; // Seconds from start of cycle. uint32 count = 2; // Particles to emit. From 0f034b73c85ff1e98454841c0562cab46239403e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20D=C3=ADaz?= Date: Mon, 20 Apr 2026 07:58:34 -0300 Subject: [PATCH 3/7] feat: add topic pub/sub RPCs to CommsApiService (#390) Adds SubscribeToTopic, PublishData and ConsumeMessages RPCs so scenes can exchange topic-scoped JSON payloads through the comms layer. Each void-returning RPC uses its own response message (following the TeleportToResponse pattern) to avoid colliding with the package-level EmptyResponse defined in restricted_actions.proto. --- .../decentraland/kernel/apis/comms_api.proto | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/proto/decentraland/kernel/apis/comms_api.proto b/proto/decentraland/kernel/apis/comms_api.proto index 4288fe71..76c5dc24 100644 --- a/proto/decentraland/kernel/apis/comms_api.proto +++ b/proto/decentraland/kernel/apis/comms_api.proto @@ -20,6 +20,35 @@ message VideoTracksActiveStreamsData { VideoTrackSourceType source_type = 3; } +message SubscribeToTopicRequest { + string topic = 1; +} + +message SubscribeToTopicResponse {} + +message PublishDataRequest { + string topic = 1; + string data = 2; +} + +message PublishDataResponse {} + +message ConsumeMessagesRequest { + string topic = 1; +} + +message ConsumeMessages { + string sender = 1; + string data = 2; +} + +message ConsumeMessagesResponse { + repeated ConsumeMessages messages = 1; +} + service CommsApiService { rpc GetActiveVideoStreams(VideoTracksActiveStreamsRequest) returns (VideoTracksActiveStreamsResponse) {} + rpc SubscribeToTopic(SubscribeToTopicRequest) returns (SubscribeToTopicResponse) {} + rpc PublishData(PublishDataRequest) returns (PublishDataResponse) {} + rpc ConsumeMessages(ConsumeMessagesRequest) returns (ConsumeMessagesResponse) {} } \ No newline at end of file From 14be2dada5de056ff6b4b5d410c394eff1cae283 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20D=C3=ADaz?= Date: Mon, 27 Apr 2026 12:06:39 -0300 Subject: [PATCH 4/7] feat: Add unsubscribeFromTopic method (#393) --- proto/decentraland/kernel/apis/comms_api.proto | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/proto/decentraland/kernel/apis/comms_api.proto b/proto/decentraland/kernel/apis/comms_api.proto index 76c5dc24..0f1b1ec9 100644 --- a/proto/decentraland/kernel/apis/comms_api.proto +++ b/proto/decentraland/kernel/apis/comms_api.proto @@ -26,6 +26,12 @@ message SubscribeToTopicRequest { message SubscribeToTopicResponse {} +message UnsubscribeFromTopicRequest { + string topic = 1; +} + +message UnsubscribeFromTopicResponse {} + message PublishDataRequest { string topic = 1; string data = 2; @@ -49,6 +55,7 @@ message ConsumeMessagesResponse { service CommsApiService { rpc GetActiveVideoStreams(VideoTracksActiveStreamsRequest) returns (VideoTracksActiveStreamsResponse) {} rpc SubscribeToTopic(SubscribeToTopicRequest) returns (SubscribeToTopicResponse) {} + rpc UnsubscribeFromTopic(UnsubscribeFromTopicRequest) returns (UnsubscribeFromTopicResponse) {} rpc PublishData(PublishDataRequest) returns (PublishDataResponse) {} rpc ConsumeMessages(ConsumeMessagesRequest) returns (ConsumeMessagesResponse) {} -} \ No newline at end of file +} From afef740a06b9f2f178c89911314531a65033c676 Mon Sep 17 00:00:00 2001 From: Nick Khalow <71646502+NickKhalow@users.noreply.github.com> Date: Mon, 4 May 2026 21:41:10 +0400 Subject: [PATCH 5/7] feat: audio analysis sync to main (#338) feat: audio analysis (#328) * component definition * specify package in the component def * apply lint * omit experimental features * support multiple analysis modes * relax order * optional args Co-authored-by: Gon Pombo --- .../sdk/components/audio_analysis.proto | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 proto/decentraland/sdk/components/audio_analysis.proto diff --git a/proto/decentraland/sdk/components/audio_analysis.proto b/proto/decentraland/sdk/components/audio_analysis.proto new file mode 100644 index 00000000..940f18af --- /dev/null +++ b/proto/decentraland/sdk/components/audio_analysis.proto @@ -0,0 +1,44 @@ +syntax = "proto3"; +package decentraland.sdk.components; + +import "decentraland/sdk/components/common/id.proto"; +option (common.ecs_component_id) = 1212; + +enum PBAudioAnalysisMode { + MODE_RAW = 0; + MODE_LOGARITHMIC = 1; +} + +message PBAudioAnalysis { + + // Parameters section + PBAudioAnalysisMode mode = 1; + + // Used only when mode == MODE_LOGARITHMIC + optional float amplitude_gain = 100; + optional float bands_gain = 101; + // End when mode == MODE_LOGARITHMIC + + // End Parameters section + + // Result section + float amplitude = 200; + + // Protobuf doesn't support fixed arrays -> 8 band fields + float band_0 = 201; + float band_1 = 202; + float band_2 = 203; + float band_3 = 204; + float band_4 = 205; + float band_5 = 206; + float band_6 = 207; + float band_7 = 208; + + // End Result section + + // Future fields + // float spectral_centroid = 13; + // float spectral_flux = 14; + // bool onset = 15; + // float bpm = 16; +} From af74b1dff2c6662f995a048143302d6a172a25be Mon Sep 17 00:00:00 2001 From: Steven Williams Date: Mon, 4 May 2026 14:02:03 -0400 Subject: [PATCH 6/7] feat: add IA_MODIFIER input action (value 14) (#396) feat: add IA_MODIFIER input action (value 14) for Shift key The Decentraland desktop client already supports IA_MODIFIER at value 14, mapped to the Shift key. This adds the missing enum value to the protocol definition so the SDK type definitions stay in sync with the runtime. Co-authored-by: Nicolas Earnshaw --- proto/decentraland/sdk/components/common/input_action.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/proto/decentraland/sdk/components/common/input_action.proto b/proto/decentraland/sdk/components/common/input_action.proto index c21def37..52ee8667 100644 --- a/proto/decentraland/sdk/components/common/input_action.proto +++ b/proto/decentraland/sdk/components/common/input_action.proto @@ -17,6 +17,8 @@ enum InputAction { IA_ACTION_4 = 11; IA_ACTION_5 = 12; IA_ACTION_6 = 13; + // Modifier key (Shift on desktop) + IA_MODIFIER = 14; } // PointerEventType is a kind of interaction that can be detected. From 834aaf3b4a1c9efdf26f5ea2d41d8b8ff4f00e9f Mon Sep 17 00:00:00 2001 From: Muna <44584806+decentraland-bot@users.noreply.github.com> Date: Mon, 4 May 2026 16:01:51 -0300 Subject: [PATCH 7/7] feat: locomotion settings (#398) --- .../avatar_locomotion_settings.proto | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 proto/decentraland/sdk/components/avatar_locomotion_settings.proto diff --git a/proto/decentraland/sdk/components/avatar_locomotion_settings.proto b/proto/decentraland/sdk/components/avatar_locomotion_settings.proto new file mode 100644 index 00000000..a16f2169 --- /dev/null +++ b/proto/decentraland/sdk/components/avatar_locomotion_settings.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; + +package decentraland.sdk.components; + +import "decentraland/sdk/components/common/id.proto"; + +option (common.ecs_component_id) = 1211; + +// The PBAvatarLocomotionSettings component allows scenes to modify locomotion settings defining things such +// as the avatar movement speed, jump height etc. +message PBAvatarLocomotionSettings { + optional float walk_speed = 1; // Maximum speed when walking (in meters per second) + optional float jog_speed = 2; // Maximum speed when jogging (in meters per second) + optional float run_speed = 3; // Maximum speed when running (in meters per second) + optional float jump_height = 4; // Height of a regular jump (in meters) + optional float run_jump_height = 5; // Height of a jump while running (in meters) + optional float hard_landing_cooldown = 6; // Cooldown time after a hard landing before the avatar can move again (in seconds) +}