The Big Bubble Chat Rework

To be honest, this is one of the best updates so far! Not only it fixes the line cutter glitch, but it also makes everything look so much cooler! I was thinking we could maybe get outlines to the bubbles… But anyway, this is a great feature!

3 Likes

Whenever I try it in-game, it takes quite a while for it to load.

3 Likes

On R6 rigs, the spacing for the text bubbles seems a bit too extreme.
image

On R15 rigs, with the same bubble chat setup, it looks like this.
image

Obviously, the bubble chat on the R15 rig is more identical to the classic bubble chat. I assume the bubble chat isn’t supposed to look the way it does right now on R6 rigs - it looks extremely out of place. Could you verify this behaviour between the 2 rigs @Chocopain ?

I verified that the size and shape of the HumanoidRootPart are identical on both rigs, as you mentioned that the bubbles are adornee’d to the HumanoidRootPart in one of your replies.

image

I made use of a LocalScript in the StarterPlayerScript container to enable the new bubble chat, in case you might wonder. I’m using default settings as well.

14 Likes

We never had to recreate any chat to customise the old version - we just had to playtest it in Studio and copy/paste the correct folder, which doesn’t seem that complicated IMHO.

5 Likes

This visual rework of BubbleChat is something we’ve needed for a long time. However I, like many other developers, will not be using it for the foreseeable future due to the fact that it’s now a CoreScript.

Chat forking is an extremely important feature to some games. While the customisation that we’ve been given is quite a nice feature, it still doesn’t come close to the freedom we had with forked chat. The simple ability to omit certain messages (/me, for example) from being displayed opened up a world of opportunities for custom commands and emotes. In fact, that’s a critical feature to many roleplay games. This update would be welcomed with open arms if it weren’t a CoreScript. This simple “Don’t like it? Change it.” philosophy should still be applicable to the new chat. Giving us the freedom to modify it to our liking would only boost developer engagement and would definitely aid the migration to the new system two-fold.

While it’s nice to have settings, a lot of us would prefer the total freedom to change whatever we want about the new system - whether it be adding custom commands and formatting or even just changing the tweening of the chat bubbles.

10 Likes

Looks super clean! Could use a (…) when the player is typing, though.

9 Likes

Not really a problem, as long as the dumb gap glitch is gone.

1 Like

Awesome update but I still think chat needs a GUI update.
image
This doesn’t really look too consistent with the rest of the GUI, like the leaderboard.
image

14 Likes

You need to do in a local script.

4 Likes

Will there be an optimization update for the Billboard GUIs?
One billboard will do a draw call which is extremely unoptimized for a game with hundreds of players and with UI corners that are also not efficient at all!
Decals got their textures batched and you can have a million of them without any performance cost.

My project mainly focuses on Billboards and it is already laggy with a small number of instances.

4 Likes

I have found that if you set “VerticalStudsOffset” to around -1.7, it fits above the head of an R6 player.

6 Likes

So, i do not understand how the customisation works

3 Likes

Question: Is there a way to make the chat bubble instantly pop up instead of sliding up? I prefer the old style of instantly appearing. Is there any way to make the new chat like this?

4 Likes

I like new style of bubble chats and I appreciate the efforts made by the staff who worked on this project but I think it would be extremely beneficial for all Roblox Developers if we had the ability to fork & customize it ourselves - rather than it being restricted within CoreScripts and limited config options.

While the visuals are nice and the config options provided seem okay for basic customization, how are we supposed to explore in-depth how this new product will work? Having thought Roblox were becoming more focused on user generated content, I would have thought full customizability would be provided for such widely used features.

Providing the new Bubble Chat as a fully editable product would seem like the best thing to do. Especially if you want developers to actually learn something - it could be used as a learning resource; helping people better understand how the chat system operates and even how Roact works.

I also think the player list and other on screen menus should have the ability to be forked & edited, but that isn’t really relevant here.

We never would have known without this statement.

8 Likes

Will there be a native option supporting customization of chats for each player across all clients?

It’d be great to have a player with userId 000000 have a specific bubble chat color across all users.

I’m not sure of the implementation for Bubble Chat, but if we could do something like SetExtraData("ChatColor") like we can do for the existing chat, it’d be great.

ChatModule example of what I’m referencing:

SpecialChatColors = {
	["879330134"] = Color3.fromRGB(0,109,176)
}

local Run = function(ChatService)
	ChatService.SpeakerAdded:Connect(function(speakerName)
		local speaker = ChatService:GetSpeaker(speakerName)
		local player = speaker:GetPlayer()

		local chatColor = SpecialChatColors[tostring(player.UserId)]

		if (chatColor) then
			speaker:SetExtraData("ChatColor", chatColor)
		end
	end)
end
9 Likes

I’ve been experimenting with this using custom models.
The VerticalStudsOffset property changes every time you change into a different character.
However, for VerticalStudsOffset to update, you HAVE to send another chat message.

My request is to make VerticalStudsOffset update when this setting is being changed, not when another chat message is sent. I don’t know if this counts for other settings aswell, but it does for this one.

Examples below:

2020-10-14 20_40_07-New FFA - Roblox Studio 2020-10-14 20_40_18-New FFA - Roblox Studio 2020-10-14 20_41_40-New FFA - Roblox Studio

6 Likes

Where I put this in?
local settings = {
– The amount of time, in seconds, to wait before a bubble fades out.
BubbleDuration = 15,

	-- The amount of messages to be displayed, before old ones disappear
	-- immediately when a new message comes in.
	MaxBubbles = 3,

	-- Styling for the bubbles. These settings will change various visual aspects.
	BackgroundColor3 = Color3.fromRGB(0, 0, 0),
	TextColor3 = Color3.fromRGB(255, 255, 255),
	TextSize = 16,
	Font = Enum.Font.Sarpanch,
	Transparency = .1,
	CornerRadius = UDim.new(0, 12),
	TailVisible = false,
	Padding = 8, -- in pixels
	MaxWidth = 300, --in pixels

	-- Extra space between the head and the billboard (useful if you want to
	-- leave some space for other character billboard UIs)
	VerticalStudsOffset = 0,

	-- Space in pixels between two bubbles
	BubblesSpacing = 6,

	-- The distance (from the camera) that bubbles turn into a single bubble
	-- with ellipses (...) to indicate chatter.
	MinimizeDistance = 40,
	-- The max distance (from the camera) that bubbles are shown at
	MaxDistance = 100,
}
pcall(function()
	game:GetService("Chat"):SetBubbleChatSettings(settings)
end)
1 Like

Boo!

This should not be built into the engine. This needs to be a standalone package that developers can easily drop into their game. This allows new developers to learn how modular code is written and it allows developers to have much greater control over the appearance and functionality of the chat. Building functionality like this into the engine is the wrong thing to do!

10 Likes

This is not happening. I am testing it, and both are enabled. You can see here: https://www.roblox.com/games/3487742603/FALL-UPDATE-Work-at-a-Restaurant-CS?refPageId=b03a99cf-faf3-4229-8d7a-7d20b4133006

Adding on to this, it overlaps with Roblox dialog. image

3 Likes

These are the settings for the old BubbleChat, forked from the Chat Service while played.

--[[ SCRIPT VARIABLES ]]
local CHAT_BUBBLE_FONT = Enum.Font.SourceSans
local CHAT_BUBBLE_FONT_SIZE = Enum.FontSize.Size24 -- if you change CHAT_BUBBLE_FONT_SIZE_INT please change this to match
local CHAT_BUBBLE_FONT_SIZE_INT = 24 -- if you change CHAT_BUBBLE_FONT_SIZE please change this to match
local CHAT_BUBBLE_LINE_HEIGHT = CHAT_BUBBLE_FONT_SIZE_INT + 10
local CHAT_BUBBLE_TAIL_HEIGHT = 14
local CHAT_BUBBLE_WIDTH_PADDING = 30
local CHAT_BUBBLE_PADDING = 12
local CHAT_BUBBLE_FADE_SPEED = 1.5

local BILLBOARD_MAX_WIDTH = 400
local BILLBOARD_MAX_HEIGHT = 250	--This limits the number of bubble chats that you see above characters

local ELIPSES = "..."
local MaxChatMessageLength = 128 -- max chat message length, including null terminator and elipses.
local MaxChatMessageLengthExclusive = MaxChatMessageLength - getMessageLength(ELIPSES) - 1

local NEAR_BUBBLE_DISTANCE = 65	--previously 45
local MAX_BUBBLE_DISTANCE = 100	--previously 80

--[[ END OF SCRIPT VARIABLES ]]

And here we have the old files.

initChatBubbleType(BubbleColor.WHITE,	"ui/dialog_white",	"ui/chatBubble_white_notify_bkg", 	false,	Rect.new(5,5,15,15))
initChatBubbleType(BubbleColor.BLUE,	"ui/dialog_blue",	"ui/chatBubble_blue_notify_bkg",	true, 	Rect.new(7,7,33,33))
initChatBubbleType(BubbleColor.RED,		"ui/dialog_red",	"ui/chatBubble_red_notify_bkg",		true,	Rect.new(7,7,33,33))
initChatBubbleType(BubbleColor.GREEN,	"ui/dialog_green",	"ui/chatBubble_green_notify_bkg",	true,	Rect.new(7,7,33,33))

Bubbles.

ui/dialog_white

dialog_white

dialog_white@2x

ui/dialog_blue

dialog_blue

dialog_blue@2x

ui/dialog_red

dialog_red

dialog_red@2x

ui/dialog_green

dialog_green

dialog_green@2x


Bubbles and Tails.

ui/chatBubble_white_notify_bkg

chatBubble_white_notify_bkg

ui/chatBubble_blue_notify_bkg

chatBubble_blue_notify_bkg

ui/chatBubble_red_notify_bkg

chatBubble_red_notify_bkg

ui/chatBubble_green_notify_bkg

chatBubble_green_notify_bkg


Tails.

ui/dialog_tail

dialog_tail

dialog_tail@2x


New Bubble Chat on Old Settings


Old Bubble Chat


Hope this helps anyone wanting to use old bubble chat settings!

14 Likes