Legacy uses 3-5ms literally lmao.

Chat Customization Demo
Demo showing off ability to send chat messages with customization through rich text.
Legacy uses 3-5ms literally lmao.
there’s a nonzero chance that these fluctuations have always been happening with the TextChatService
Based on my personal experience, I barely see the Microprofile tag of the Legacy Chat System on the Microprofiler. It doesn’t use a lot. Maybe it uses ~3-5ms in worst cases. Eitherways, TextChatService’s ExperienceChatMain should use as low if not lower. I hate new features or changes that perform worse than what they’re trying to replace. They should either perform the same or they perform better.
Oh I put the MicroProfiler on 10KHz I think. At 1 It doesn’t even show up.
This just proves how well optimized the Legacy Chat System is. Roblox should take notes of that and actually make their new thing as optimized as it if not more. It’s ridiculous for a text chat system to take more resources than other calculations like physics or graphics.
I think it’s just that CanUserChatAsync and CanUserDirectChatAsync are just too slow. We have seen in the past that retrieving stuff like if a player has a badge can take up a lot of resources which is why roblox limits it and that makes it slower. Imagine that but for every message it is 2 times much calls… that is quite slow. Because just like a list of badges, the API has to check through a list of blocked users,
It would be nice if roblox could provide percentages so we can see how much it has improved.
If this theory is true then the server should store the ids of blocked users for each of the players that way the table can be accessed fast and the messages are quickly sent. This would increase server memory but will decrease message latency. Any local script using CanUserDirectChatAsync can just contact the server instead of needing to contact the data base directly. Developers will be unable to see the full list of the blocked users list for privacy.
Of course the list on the server would also need to change if the player blocks a user in game. The blocked id list will be deleted from the servers memory when player leaves.
Has there actually been an improvement? In a war clan group that I develop/manage for, users started making reports that they’ve been experiencing bad frame drops just randomly and most noticeably when they toggle their chat window (mainly opening it). This started happening just a week ago.
I’d really like to know how much of an improvement there is because I’m experiencing the opposite effect even in other games such as Epic Minigames. I’m just considering to make a custom chat at this point if it continues.
Absolutely needed! Very good to see that staff are beginning to publicly tackle TCS’ performance issues accordingly.
seems like the improvement is only about 3ms, if it even improved at all
hopefully making a custom chat using TextChatService will allow you to not do whatever silly mistake roblox is doing with their chat
it’s all over if custom chats are going to be unable to bypass all this frametime accumulation
About this, I disabled the in-experience chat completely through the settings and it still consumed resources…
Also the chat window and the icon still appeared for me (albeit without being able to chat), even though it’s disabled. This is another bug that have been reported.
re-asking this because no one told me what the new improvements to vc look like/are
You can use DisplaySystemMessage()
to send your messages from NPCs. If you’re trying to do it from the server, you’re going to have to fire a RemoteEvent for all the clients you wish to receive the message (and possibly any metadata) you want and have the clients call DisplaySystemMessage()
themselves.
As for customization, they have rich text enabled so you can simply wrap the text in whatever you’d like from this nice list (Rich text markup). If you want to customize a player’s name or add a new “tag” you can change the PrefixText
by returning a newly created TextChatMessageProperties
with the properties you want with the OnIncomingMessage
callback.
Attached you’ll find a quickly spun-up place (uncopylocked) demonstrating some of this. The RemoteEvent
is in ReplicatedStorage
, the clientside implementation in StarterGui
, and the serverside implementation in ServerScriptService
.
Demo showing off ability to send chat messages with customization through rich text.
Escape key still doesn’t erase the chat like it did with legacy chat. Is this intentional?
Every weekend, my community holds an international summit. An entire auditorium full of hundreds of simultaneous chat bubbles can get overwhelming. Glad to see this is being reoptimized!
Unmounting unused Chat components: Now if you if you turn off the chat window, it won’t consume any resources from your experiences
This has completely removed any chat-related lag in all the games I’ve built custom chat systems for! Finally, no lag spikes, love to see it.
I didn’t know about this! Thank you for going above and beyond to provide a place for me to look at!
We’ve optimized the voice bubble so rerenders less and consumes less CPU cycles. There are no visual change planned, but we are working on more voice-specific optimizations.
As mentioned in https://devforum.roblox.com/t/providing-you-more-control-and-better-performance/3590495, we’ve seen about a 40% improvement in average frame time across all platforms. Note that this doesn’t mean that the ExperienceChatMain bar is going to shrink 40% on all experiences, but depending on how text/voice chat is configured, the bar should both shrink and appear less frequently. All that said, we know how frustrating it is to see experience chat consume multiple milliseconds on specific frames and are working hard to address this.
Hey, this is something that we looked into, but unfortunately we couldn’t figure out an easy way to optimize the bubbles while keeping the existing functionality. We have some ideas on how to do this and will let everyone know when this has been implemented.