UPDATE: This is now live for all games. Please post if you have any issues.

The new chat is nearing a state where it could fully replace the old chat and we need a couple of games to try it out before we move on to a more wide release.

Please post your placeId if you would like to sign up for the beta.

If you think your game may not work with new chat due to removing unknown objects inserted into ServerStorage or similar you can post the placeId for a test version of your game and make sure to get that working right now.

NOTE: If you sign up to the beta and want to edit the chat, you should copy the whole chat before editing it as parts of the API may change before final release.

If you want to try out the new chat, it is currently live on a number of games including Natural Disaster Survival.

Here is an example of how easy the new chat is to customize:

SciFi chat theme

Chat System Overview

There are four main components of the chat. They are parented to the Chat service and will be cloned out of here to where by the corescript chat installer scripts on game startup. Any component can be replaced individually if you only want to edit that component. You can place the replacement either in the Chat service or it’s final location (ServerScriptService, ServerStorage, ect.)

ChatServiceRunner

This is the main server side component of the chat. It is parented to ServerScriptService. You normally should not need to override this, and instead add to the ChatModules.

ChatModules

This is a folder parented to ServerStorage containing the server side chat modules. Modules parented here are required by ChatServiceRunner and they are expected to return a single function, taking a reference to the ChatService object as an argument. The default modules include TeamChat and PrivateMessaging.

ChatScript

This is the client side chat component. It will be parented to StarterPlayerScripts.

ClientChatModules

The client chat modules include client side ChatSettings, CommandModules and MessageCreatorModules. The ChatSettings provide access to a bunch of features that are off by default, such as channel tabs and chat window resizing. The command modules allow you to easily add client side chat commands that do not need to be sent to the server. Default commands include /console and /clear. The MessageCreatorModules are used to create chat messages of various types.

Documentation

A wiki article containing all the documentation is coming soon. For now, you can see the server side documentation on the previous post here.

[details=MessageData format]

{ int ID string FromSpeaker string OriginalChannel bool IsFiltered int MessageLength string Message string MessageType int Time table ExtraData { Color3 ChatColor Color3 NameColor Enum.Font Font int TextSize table Tags } } ```[/details] [details=Client Side Documentation] Command modules return a table in the following format:

{

int ProcessorType = …,

function ProcessorFunction(message, ChatWindow, [ChatBar], ChatSettings)

}

There are two processor types, one for in progress chat messages and one for completed chat messages. Only command modules of processor type IN_PROGRESS_MESSAGE_PROCESSOR get the ChatBar argument passed in. This is currently experimental and only used for the client side of whisper. It does not return a processed bool like normal command modules, but instead returns a chat bar custom state object which is used for modifying the chat bar. Message Creator Modules return format:

{

string MessageType

function CreateMessageLabel(messageData)

}

The create message label creates a message label and returns a table of the following format:

{

Frame BaseFrame

void UpdateTextFunction(newMessageObject)

int GetHeightFunction()

void FadeInFunction(duration, CurveUtil)

void FadeOutFunction(duration, CurveUtil)

void UpdateAnimFunction(dtScale, CurveUtil)

}