Brand New Bubble Chat Customizations

You would just not manipulate the settings at all.

3 Likes

when you said “manipulate the settings”, are you saying like there wont be an option where i can add back the old bubble chat in roblox studio or am i not understand much from your reply

1 Like

Cannot express how crucial this update was for us!

Our game struggled to make good use of this new feature due to the lack of adornee customization, and that addition alone has made this a viable tool to use.

The additional customization options are convenient to use and implement; exactly what I wanted from a reworked chat bubble system.

This is a 10/10 update. Kudos to the Roblox Staff who worked on this and made it possible!

9 Likes

10/10

I’ve been waiting for something like this for quite a while, adding this to my “experience” right now!

2 Likes

Like manipulation of a majority of core Roblox ui, it takes a dictionary that can define specific settings. This is explained in the documentation that has been listed at the bottom of the post. You don’t need to call :SetBubbleChatSettings() at all if you just want it to be normal.

3 Likes

Good update; however it is still missing a much-asked-for feature, setting chat customization per channel or per message. For instance, setting the background color of a team chat bubble or a whisper bubble. Please implement this, thank you.

1 Like

You’re already able to do so, by doing the following:

local Chat = game:GetService("Chat")

Chat:SetBubbleChatSettings({
    CornerRadius = UDim.new(0, 12)  -- Set it to whatever radius you want.
})
4 Likes

I’m really happy with this update! I wasn’t satisfied by the initial release of the new bubble chat, due to the lack of customization. Now, all of my problems with it have been solved! I’m looking forward to using the new features.

There is a setting for CornerRadius. It isn’t mentioned in the post, but it is in the Developer Hub page at the bottom of the post.

If you’re referring to the old bubble chat that was buggy and broken, I don’t think so. But, you can easily recreate the look of the old one with the new bubble chat settings (corner radius, background color, disabled animations)

2 Likes

You sure can, using the CornerRadius setting! Here’s a client-side example snippet:
game:GetService("Chat"):SetBubbleChatSettings({CornerRadius = UDim.new(1, 0)})

No plan for this yet, but I’d be curious to hear what would be the use cases/user stories for this that wouldn’t be covered by the new UserSpecificSettings system!

Since this update, you can now use custom images to use as the bubble’s background, so you can provide your own custom shapes now!

7 Likes

It would be useful for a per use case, or have it so it doesn’t replace each bubble instantly, but instead changes new bubbles could lead to some cool things.

I would like to be able to modify the background color of the bubble chat to the team’s color if the message is within team-chat, if not in team chat it would stay as the default color. This would help players identify if a message sent is in team chat or not.

1 Like

Some examples I can think of:

  • Changing the customization depending on where the NPC/User is located. (For example different levels/worlds/lighting settings.)
  • Changing the customization depending on the mood of the NPC to convey them more easily, like a red message box showing the NPC is angry/disapproving vs a green one being more approving.
  • Allowing you to do things like exclusive chat effects where the chat box changes shape or colour in a sort-of animation, for example rainbow chat.

I know you could change the settings before sending each message, but I can imagine that creates a lot of overhead especially with more animated systems, as you’d have to change the entire customization table for the entire client for each individual message. And, another problem with that is possible race conditions, especially with the new up-coming truly parallel luau.

A simply solution would be allowing us to pass along a customization table with the :Chat() function, the API of which would look like this:
void Chat(Instance partOrCharacter, string message, Dictionary appearance)

And used like this:

chatService:Chat(adornee, "Hello world!", {
    TextColor3 = Color3.new(1, 0, 0),
    TextSize = 24,
    Padding = 12,
    BubblesSpacing = 8
})

Or you could store the table somewhere and swap between presets based on certain variables being at play.

17 Likes

Great! How would you make team-specific settings with this update, or this still currently not possible?

2 Likes

This is a great and useful change and will definitely benefit us in one way or another!!

Much love to the hardworking DevRel team :heart:

You can now! Here’s an example (local) script that makes every player’s bubble have the same background color as their team’s color.

local Chat = game:GetService("Chat")
local Players = game:GetService("Players")
local bubbleChatSettings = {
	UserSpecificSettings = {}
}

local function onPlayerAdded(player)
	-- The lines below change the color of chat bubbles only for the player passed as an argument
	bubbleChatSettings.UserSpecificSettings[player.UserId] = { BackgroundColor3 = player.TeamColor.Color }
	Chat:SetBubbleChatSettings(bubbleChatSettings) -- Applies the new settings table
	player:GetPropertyChangedSignal("TeamColor"):Connect(function() -- Also update when the player's team changes
		bubbleChatSettings.UserSpecificSettings[player.UserId] = { BackgroundColor3 = player.TeamColor.Color }
		Chat:SetBubbleChatSettings(bubbleChatSettings)
	end)
end

local function onPlayerRemoving(player) -- When a player leaves, we need to clear their settings
	bubbleChatSettings.UserSpecificSettings[player.UserId] = nil
	Chat:SetBubbleChatSettings(bubbleChatSettings)
end

for _, player in ipairs(Players:GetChildren()) do -- Registers players who were in the game before we joined
	onPlayerAdded(player)
end

Players.PlayerAdded:Connect(onPlayerAdded) -- Listens for incoming players
Players.PlayerRemoving:Connect(onPlayerRemoving) -- Listens for leaving players
9 Likes

Thank you all for your ideas on what a more granular “per-bubble” customization system could bring to the table. Can’t promise anything, but I’m definitely taking notes!

8 Likes

With the implementation of video frames, would it be possible to allow us to change the background to a video instead of a static image as well? If ever in the future we’re allowed to upload our own, I could imagine some cool effects being made with the use of video frames as the background. For example a chat box that has an animated bubbly background in an underwater setting.

This would be something for the future, if we’re ever even going to be able to upload videos ourselves, but still cool nonetheless.


Honestly great update though, the fact I’m spurting out ideas proves I’m excited about the change and possibilities, keep em coming.

2 Likes

Really great update! I plan on using this later when I start making the multiplayer mode.

Suggestion:

Can there be StrokeColor3(Color3) and StrokeSize(Number) properties for bubble chat?

2 Likes

im talking about this chat right here that i’m referring to
image
at first when i saw the topic, i thought the chat shown on the pictures were going to be the new bubble chat to replace the current bubble chat we have today until i looked more into the topic to find out that it was actually about customization features for the bubble chat like backgroundimage or backgroundgradient and stuff like that

2 Likes

I love the fact that you’re increasing the amount of customisation options for the new bubble chat, but it would be nice, if we could get a version of the chat that doesn’t hook into RobloxScriptSecurity functions so we can fork it.

Nope, its a LocalScript you can edit, so you can fix any part of it’s bugs. I also find it funny how the old bubblechat has slowly been breaking itself.

1 Like