SuperChat DOC
SuperChat User Documentation (UE 5.7 / Win64)
1) Requirements Unreal Engine 5.7.x Windows development environment Project with C++ enabled (recommended for plugin compile workflows)
2) Installation (Fab) 1. Buy/claim the plugin from Fab. 2. Install it for your UE 5.7 engine version through Fab/Epic Launcher. 3. Open your project, go to Edit Plugins, search for SuperChat, and enable it. 4. Restart Unreal Editor when prompted.
3) Blueprint Only Quick Setup 1. Add SuperChatComponent to your Player Controller (recommended) or Character/Pawn. 2. Keep bAutoCreateUI enabled for out of box widget behavior. 3. Create a channel data asset for custom channels: In Content Browser: Add (+) Miscellaneous Data Asset Choose SuperChatChannelDataAsset Name it something like DA SuperChatChannels 4. Open DA SuperChatChannels and add channel entries (ChannelName + MaxDistance), for example: Global (MaxDistance = 1 for unlimited) Near (MaxDistance = 1000) Local (MaxDistance = 5000) Team (MaxDistance = 1) Any custom channels you want 5. Assign DA SuperChatChannels to the component's ChannelData field. 6. Set DefaultChannelName to one of the channel names defined in your data asset. 7. (Optional) Configure ThemePreset and UI options (auto close, closed state behavior, local echo). 8. Bind your input actions: Open/close chat: ToggleChatUI Send: SendMessageToCurrentChannel (or SendMessageToChannelName) 9. Test in multiplayer PIE (2+ players) to validate replication and channel filtering behavior.
4) Exposed Enums (Blueprint) ESuperChatChannel: Global, Near, Local, Team, System, Custom ESuperChatBadWordPolicy: Censor, Reject ESuperChatThemePreset: Classic, Dark, Neon, High Contrast, Custom
5) Complete Blueprint Node Reference (USuperChatComponent)
Messaging SendMessage(Content, Channel) Sends a chat message using built in enum channels (Global, Near, Local, Team, etc.). Use this when your UI lets users select enum based channels. Content is sanitized and validated server side before distribution. SendMessageToChannelName(Content, ChannelName) Sends a message to a named channel from your ChannelData asset. Best for DataAsset driven channel systems (for example Tribe A, Raid, Officer). If the name is invalid, the system safely falls back to a valid/default channel. SendMessageToCurrentChannel(Content) Sends to whatever channel is currently selected on the component. Ideal for "Enter to send" flow in Blueprint chat input widgets. SendSystemMessage(WorldContextObject, Content) [Server side use] Broadcasts a system/admin style message to players from authority. Use for announcements (match start, objective updates, server notices). Should be called on server authority (GameMode/server logic).
Channels GetAvailableChannelNames() Returns channel names from ChannelData. If ChannelData is missing, returns fallback defaults (Global/Near/Local/Team). SetCurrentChannelName(ChannelName) Sets the currently selected channel used by SendMessageToCurrentChannel. Invalid names are auto corrected to a valid/default channel. GetCurrentChannelName() Returns the active channel currently selected on this component.
UI Control CreateChatUI() Creates chat UI manually. Use this when bAutoCreateUI is false and you control spawn timing. OpenChatUI() Opens chat UI, shows input controls, and focuses input. CloseChatUI() Closes input/focus state. Depending on settings, widget can stay visible or collapse. CloseChatUIWithDelay(DelaySeconds) Closes input immediately but keeps messages visible briefly before hiding. Useful for cinematic/immersive chat behavior. ToggleChatUI() Toggles between open and closed states based on current state. IsChatOpen() Returns true if chat is currently in "open/input" state.
Theme ApplyThemePreset(Preset) Applies a predefined visual theme and updates UI colors at runtime. Presets: Classic, Dark, Neon, High Contrast, Custom. ReapplyThemePreset() Re applies the currently selected preset. Useful after changing widgets or when forcing visual refresh.
History GetMessageHistory() Returns stored local message history (up to MaxMessageHistory). ClearMessageHistory() Clears local stored message history. Also useful for reset flows between matches/rounds.
Moderation / Mute List MuteSenderByUniqueId(UniqueId) Locally blocks messages from a user by unique net id string. UnmuteSenderByUniqueId(UniqueId) Removes that unique id mute. MuteSenderByName(Name) Locally blocks messages by sender display name. UnmuteSenderByName(Name) Removes name based mute. ClearMuteList() Clears all local mute entries.
Advanced Filter Hook BP ShouldReceiveMessage(Message, TargetPC) [BlueprintNativeEvent override] Final per recipient filter hook. Return false to block delivery to a specific target client. Great for custom rules (factions, proximity exceptions, role permissions).
Events (Assignable) OnMessageReceived Fires when a message is accepted and received on this client. OnChatUIVisibilityChanged Fires when chat open state changes (open/closed). OnAdminCommand Fires on server when an admin slash command is received. Use it to implement custom command handlers (/kick, /help, /event, etc.).
6) Details Panel Reference (All Exposed Component Options)
SuperChat|Channels ChannelData Data asset that defines channel names and distance limits. Set this to support custom channel names and control channel ranges. DefaultChannelName Channel selected on startup. Should match one of your ChannelData entries. CurrentChannelName (runtime read only) Shows current selected channel while the game is running.
SuperChat|UI bAutoCreateUI If true, plugin auto creates the chat widget on begin play. ChatHeaderText Text shown in chat header (for example "Global Chat" or server name). bAutoCloseAfterSend If true, chat closes input state after sending a message. bLocalEchoOnSend If true, sender sees an immediate local preview before network round trip. bHideWidgetWhenClosed If true, widget collapses when closed (not just input hidden). bClosedShowsMessagesOnly If true, closed state keeps message list visible while hiding input/header. ClosedMessageFadeInSeconds Fade in duration for messages shown during closed mode. ClosedMessageDisplaySeconds How long closed mode messages stay visible before fading out. ClosedMessageFadeOutSeconds Fade out duration for closed mode messages. MaxMessageLength Maximum characters per message. 0 means unlimited. ChatMessageFont Font used for message rendering in native widget. LocalMessageColor Color for the local player's own messages. OtherMessageColor Color used for non local messages when override is enabled. bOverrideOtherMessageColor If true, non local messages use OtherMessageColor instead of channel colors. ChatWidgetClass Widget class used for chat UI instance creation. Replace this to use your custom widget implementation. ChatWidgetInstance (runtime read only) Active runtime widget reference (if created). MaxMessageHistory Maximum stored messages locally. 0 means unlimited history.
SuperChat|Theme GlobalChannelColor Color for Global channel messages. NearChannelColor Color for Near channel messages. LocalChannelColor Color for Local channel messages. TeamChannelColor Color for Team channel messages. CustomChannelColor Color for Custom channel messages. SystemChannelColor Color for System channel messages. ThemePreset One click visual preset selector. bAutoApplyThemePresetOnBeginPlay If true, selected ThemePreset auto applies at begin play. UIAccentColor Accent line/highlight color in native widget. UIHeaderBackgroundColor Header panel background color. UIMessagePanelColor Main message panel background color. UIInputBackgroundColor Input row background color. UIInputTextColor Input text foreground color. UIButtonColor Send button color.
SuperChat|Moderation BadWords List of blocked or censored words. BadWordPolicy Choose Censor (replace with ) or Reject (drop message). bEnableRateLimit Enables anti spam timing checks. MinSecondsBetweenMessages Minimum delay allowed between messages per sender. SpamWindowSeconds Size of anti spam rolling window. SpamMaxMessagesInWindow Max number of messages allowed inside spam window. bEnableMuteList Enables local mute filtering. MutedSenderUniqueIds Local set of muted unique ids. MutedSenderNames Local set of muted sender names.
SuperChat|Admin bIsChatAdmin Grants ability to issue admin commands from this component. bEnableAdminCommands Enables slash command parsing (example /clear).
SuperChat|User PlayerDisplayNameOverride Optional local display name override for UI presentation. Server authority still validates sender identity for replication.
SuperChat|Team ChannelTeamIds (Map<FName, int32 ) Maps channel names to team ids for team based filtering. Example: Team 1 for red team players, Team 2 for blue team players. You can also map custom channels such as Tribe A 101.
7) Mini Tutorials
Tutorial A: Basic Global/Near/Local setup 1. Create DA SuperChatChannels. 2. Add Global( 1), Near(1000), Local(5000). 3. Assign ChannelData and set DefaultChannelName = Global. 4. Bind key to ToggleChatUI and SendMessageToCurrentChannel. 5. Test with 2 players and verify distance filtering.
Tutorial B: Team chat (simple team split) 1. In ChannelData, add Team with MaxDistance = 1. 2. For each player's SuperChatComponent set ChannelTeamIds: Key: Team Value: Team number (example 1 or 2) 3. Send using Team channel (or ChannelName = Team). 4. Result: team messages are delivered only to matching team ids (when ids are configured).
Tutorial C: Tribe / Squad chat (custom channels) Use this when you need multiple clan/tribe channels like Tribe A, Tribe B.
1. Add custom channels in ChannelData: Tribe A, Tribe B (usually MaxDistance = 1) 2. On each player set ChannelTeamIds mapping per tribe channel, for example: Tribe A 101 Tribe B 202 3. Override BP ShouldReceiveMessage in Blueprint to enforce tribe filtering for custom channels: If Message.ChannelName is Tribe A / Tribe B, compare Message.SenderTeamId with target player's matching tribe id. Return true only when they match. 4. Send with SendMessageToChannelName(Content, Tribe A) etc.
Tutorial D: Admin quick clear command 1. Enable bEnableAdminCommands. 2. Set bIsChatAdmin = true on admin player/component. 3. Type /clear (or /clearchat). 4. Chat history is cleared for connected players.
8) Theming Presets: Classic, Dark, Neon, High Contrast, Custom You can override channel colors and UI palette colors in component properties. Presets can be auto applied on BeginPlay.
9) Networking and Security Notes The system is replicated and server authoritative. Client sender name spoofing is blocked by server side identity resolution. Client sent System channel messages are rejected. Custom channel ranges are server validated. Whitespace only messages are rejected.
10) Moderation and Usability Rate limiting and anti spam window controls Bad word policy: Censor or Reject Local mute list support Local echo option for responsive UX
11) Platform Scope Module type: Runtime Supported target platform: Win64
12) Packaging Recommendation Use Unreal BuildPlugin to validate distributable output before submission: BuildPlugin against Win64 Development + Shipping Ensure no local artifact folders are shipped (Binaries/Intermediate/Saved)
13) Support Discord: Discord