EasyChat is a modular, reusable in-game chat and command console addon for Godot 4. Drop a single custom node into your UI, tune appearance and behaviour with resources, and optionally sync chat over the network when you pair it with LinkUx (LAN / online backends with the same game-side flow).
Whether you are building a single-player HUD, a co-op lobby, or a competitive session, EasyChat gives you history, autocomplete for / commands, notifications while the panel is closed, and a small global API so gameplay code can post system messages without juggling node references.
- Features
- What’s new in 2.0.0
- Requirements
- Installation
- Quick start
- Documentation
- Project layout
- Credits
| Custom node | Registered editor type EasyChat (Control) with its own icon and live editor preview. |
| Global API | Autoload EasyChat for enable(), disable(), add_message(), add_system_message(), and more. |
| Robust customization | EasyChatConfig now centralizes a simpler but more powerful setup: colors, fonts, layout, animations, sounds, limits, and command list—share one .tres across scenes. |
| StyleBox per element | Assign custom StyleBox resources to history, input, send button, autocomplete, suggestion rows, and notifications while preserving built-in default styles. |
| Interactive preview tools | New Preview section in EasyChatConfig with editor buttons to rebuild, toggle sections, spawn sample messages/notifications, and preview show/hide animations instantly. |
| Expanded animations | All chat elements support NONE, FADE, FADE_UP, FADE_DOWN, FADE_LEFT, FADE_RIGHT, SLIDE_*, and SCALE, plus per-group Slide Distance controls in Animations. |
| Commands | ChatCommand resources with executed(args); autocomplete and keyboard navigation. |
| Offline & online | Works out of the box offline; enable multiplayer_enabled and LinkUx for real-time RPC chat. |
| Player-friendly | Open/close keys, optional “close on send”, floating notifications, and input that does not eat gameplay when the chat is closed. |
- Simplified and redesigned the customization workflow so setup is faster while still allowing deep visual control.
- Added
StyleBoxsupport across chat elements, enabling fine-grained skinning without losing the default fallback theme. - Added the new Preview tools in
EasyChatConfigfor direct editor-side testing of states, sample content, and animations. - Expanded animation options with directional fade variants (
FADE_UP/DOWN/LEFT/RIGHT) and per-subgroup slide distance values.
| Item | Required? | Notes |
|---|---|---|
| Godot 4.3 | Yes | Uses Godot 4 APIs (@export, typed signals, Tween, etc.). |
| LinkUx addon | Optional | Only if you turn on multiplayer_enabled on the EasyChat node and want networked chat. Expects autoload /root/LinkUx. |
Expected install path in your project:
res://addons/easychat/
- Copy this repository’s
addons/easychatfolder (or the packaged addon folder) into your Godot project underres://addons/easychat/. - Open Project → Project Settings → Plugins.
- Enable EasyChat.
- (Optional) Install LinkUx and register it as an autoload if you plan to use multiplayer chat.
- Add an EasyChat node to a scene (for example under a
CanvasLayerthat covers the viewport).
That’s it—the plugin registers the EasyChat autoload and the custom node type automatically.
In your main UI or gameplay scene, add EasyChat from the Add Node dialog. The node fills the screen and anchors the chat bar to the bottom of the viewport.
- Default open chat key:
T(configurable on the node). - Default close key:
Escape. - Type plain text and press Enter to send; lines starting with
/run commands.
func _ready() -> void:
EasyChat.set_player_name("Ada") # Only if you want it to display a custom name (in multiplayer mode, it does this automatically)
EasyChat.enable() # You need to activate it to use it (you can deactivate it with disable())
func _on_match_started() -> void:
EasyChat.add_system_message("Match started — good luck!")Create an EasyChatConfig resource (.tres), tweak styles, animations, and limits, assign it to the node’s config field, and reuse the same resource in other scenes.
In EasyChatConfig, use the Preview section buttons to:
- Rebuild and refresh the preview UI.
- Toggle History/Input/Autocomplete/Notifications visibility.
- Trigger show/hide animations for History Panel and Input Row.
- Spawn local/remote/system messages and notification samples.
- Quickly inspect command autocomplete visuals.
The official documentation is a website:
Then open EasyChat Official Documentation in your browser for the full interactive docs (navigation, EN / ES language toggle, and quick search).
addons/easychat/
├── plugin.cfg # Plugin metadata
├── plugin.gd # EditorPlugin: autoload + custom type registration
├── easychat.gd # Global EasyChat singleton (facade)
├── easychat_node.gd # EasyChat Control node (UI, Input, Sync, etc.)
├── easychat_config.gd # EasyChatConfig resource
├── chat_command.gd # ChatCommand resource
├── icon.svg
└── icon.png
- EasyChat — IUX Games, Isaackiux · version 2.0.0 (see
plugin.cfg). - Designed to work alongside LinkUx for swappable multiplayer backends, but it can work without any problems offline (just uncheck the Multiplayer checkbox in EasyChatConfig).