TextChatService chat bubble woes

so I’ve been maintaining an RC car system that is completely open-source and free to use in any game, as the remote and cars are free models. the past few months I’ve been updating and fixing bugs within it to make sure it’s still working.

the cars have the ability to “talk” by copying the player’s chats and making the part display a bubble. this used to be achievable on the server-side of things with the now deprecated Chat service, like this (truncated):

local FT1 = textService:FilterStringAsync(MSG, plr.UserId)
local FT2 = FT1:GetNonChatStringForBroadcastAsync()

chatService:Chat(car.PrimaryPart, FT2, "White")

but since Chat is no longer usable as a service, this does not work anymore.

I looked for other solutions using the new TextChatService, and that led me to using TextChatService:DisplayBubble() as an alternative to this. i swapped this out…for it to not work at all. this is because DisplayBubble only works on the client (which frankly I find quite nonsensical..)

the only workaround to this I could find was by using RemoteEvents that fire to all clients so they can see the bubble. I really don’t want to do this as it doesn’t seem very performant, especially if there’s a lot of players in the server. I also want to make the RC system as portable as I can make it, which makes this workaround very unreliable for my use case.

so the next solution to this problem was to use the AdorneeName property under TextChatService.BubbleChatConfiguration. it accepts a string name of any part/attachment under a player’s character. perfect for my use case, since connected RC vehicles are parented under the player’s character. however, this has one HUGE issue that make doesn’t really make it worth using for my case:

it’s not customizable per-player, it affects all chat bubbles sent by players across the whole game. ;~;
this brings up several issues, such as what if one person doesn’t want vehicle chat, but another person does?

i did find a proposed solution to this:

which is to use a LocalScript so the chat bubble is in the correct position for them. I figured this would work since AdorneeName must have some sort of replication property to it…but that’s not the case:



the chat bubble is only in the correct spot for them only, which is not what I want.

I’m out of ideas to really figure out a viable solution to this chat problem, so it would be appreciated if I got help for this ;~;

I’m pretty sure your problem is not using remote events, I kinda skimmed through the whole thing, but you could do something like this

ReplicatedStorage > RemoteEvent

Server Side:

local RS = game:GetService("ReplicatedStorage")
local event = RS:FindFirstChild("RemoteEvent")

event.OnServerEvent:Connect(function(plr, ...)
--your code
end)

Client Side:

local RS = game:GetService("ReplicatedStorage")
local event = RS:FindFirstChild("RemoteEvent")

--something to trigger the event
event:FireServer(...)

Now this might be a little messy because I’m not in studio right now, so if you just toy with the “Fire..” and “On..Event”, whatever fits should work

1 Like

i would use remoteevents if it weren’t for the fact that it would be very tricky/not-so-performant for DisplayBubble and the other methods of going at this, and the fact that I want to keep the remote system as portable as possible (it can work directly out of the box as a free model, which for that I can keep the remote events within the remote but even after that it would be EXTREMELY hard to come up with a method for the receiving end), so this wouldn’t work well for my case. thanks for answering anyways, i appreciate the help

1 Like