Skip to main content
Chimera replaces Halo PC’s crashy and broken Keystone chat with a completely custom, highly configurable chat system.

Why Replace the Chat?

The Keystone chat is crashy and broken.Halo PC’s original chat system has numerous issues:
  • Frequent crashes
  • Memory leaks
  • Poor rendering
  • Limited customization
  • Inconsistent behavior
Chimera’s custom chat is:
  • Stable - No crashes or memory leaks
  • Customizable - Extensive configuration options
  • Feature-rich - Color support, timestamps, filtering
  • Performant - Efficient rendering and scrolling

Always Enabled

The custom chat is always enabled as a passive feature. The original Keystone chat is completely replaced.

Core Features

Color Support

Full RGB color support for chat messages. Usage: Use color codes in messages:
chimera_chat_color_help  # Show available colors
Team Colors:
  • Free-for-all messages: Green tint
  • Red team messages: Red tint
  • Blue team messages: Blue tint
  • Server messages: Blue tint

Message Types

Three distinct message categories:
Player-to-player communication:
  • All chat (everyone sees)
  • Team chat (team only)
  • Vehicle chat (vehicle occupants)

Scrollback Support

Optional scrollback for console history:
[custom_console]
enable_scrollback=1  ; Enable page up/down scrolling
Custom console and custom chat are separate but related features. Both improve upon the original implementations.

Extensive Customization

Chimera’s chat is highly customizable through chimera.ini.

Server Messages

Configure server message appearance:
[custom_chat]

; Color (RGBA, 0-1 intensity)
server_message_color_a=0.5
server_message_color_r=0.45
server_message_color_g=0.72
server_message_color_b=1.0

; Position (HUD pixels)
server_message_x=360
server_message_y=60

; Dimensions (HUD pixels)
server_message_w=350
server_message_h=380
server_message_h_chat_open=160

; Anchor point
server_message_anchor=top_right  ; top_left, top_right, center, bottom_left, bottom_right

; Font
server_message_font=small  ; smaller, small, large, console, system

; Timing (seconds)
server_slide_time_length=0    ; Animation time
server_time_up=5.0            ; Display duration
server_fade_out_time=1.0      ; Fade out duration

; Line spacing
server_line_height=1.1

; Hide when console visible
server_message_hide_on_console=0

Chat Messages

Configure player chat appearance:
[custom_chat]

; Free-for-all color (RGBA, 0-1 intensity)
chat_message_color_ffa_a=0.85
chat_message_color_ffa_r=0.85
chat_message_color_ffa_g=1.0
chat_message_color_ffa_b=0.85

; Red team color
chat_message_color_red_a=0.85
chat_message_color_red_r=1.0
chat_message_color_red_g=0.85
chat_message_color_red_b=0.85

; Blue team color
chat_message_color_blue_a=0.85
chat_message_color_blue_r=0.85
chat_message_color_blue_g=0.85
chat_message_color_blue_b=1.0

; Position (HUD pixels)
chat_message_x=8
chat_message_y=38

; Dimensions (HUD pixels)  
chat_message_w=612
chat_message_h=300
chat_message_h_chat_open=300

; Anchor point
chat_message_anchor=top_left

; Font
chat_message_font=small

; Timing (seconds)
chat_slide_time_length=0.25   ; Animation time
chat_time_up=5.0              ; Display duration
chat_fade_out_time=1.0        ; Fade out duration

; Line spacing
chat_line_height=1.1

; Hide when console visible
chat_message_hide_on_console=1

Chat Input

Customize the chat input box:
[custom_chat]

; Input color (RGBA, 0-1 intensity)
chat_input_color_a=1.0
chat_input_color_r=1.0
chat_input_color_g=1.0
chat_input_color_b=1.0

; Position (HUD pixels)
chat_input_x=8
chat_input_y=338

; Width (HUD pixels)
chat_input_w=612

; Anchor point
chat_input_anchor=top_left

; Font
chat_input_font=small

Console Commands

Chat-related console commands:

Block Server IPs

Hide server IPs from chat (useful for streamers):
chimera_chat_block_ips true
Streamers: Enable this to prevent viewers from seeing which server you’re on.

Block Server Messages

Block all messages from the server:
chimera_chat_block_server_messages true
RCON responses will still appear in console, not chat.

Send Chat Message

Programmatically send chat messages:
chimera_send_chat_message <channel> <message>
Channels:
  • 0 - All chat
  • 1 - Team chat
  • 2 - Vehicle chat
  • Other channels may be used by mods
Examples:
# Send to all chat
chimera_send_chat_message 0 "Hello everyone!"

# Send to team chat
chimera_send_chat_message 1 "Attack the base!"

# Send to vehicle chat
chimera_send_chat_message 2 "I'm driving"

Color Help

Display available chat colors:
chimera_chat_color_help
Shows all color codes and examples.

Custom Console

Related feature - custom console with improvements:
[custom_console]

; Enable custom console
enabled=1

; Enable scrollback with page up/down
enable_scrollback=1

; Buffer size (lines)
buffer_size=10000
buffer_size_soft=256  ; Soft limit before cleanup

; Appearance
line_height=1.1
x_margin=10

; Fade timing (seconds)
fade_start=3.0
fade_time=0.75

Console Prompt Color

Customize console input color:
chimera_console_prompt_color <red> <green> <blue>
Example:
# Green prompt
chimera_console_prompt_color 0 1 0

# Cyan prompt  
chimera_console_prompt_color 0 1 1

Font Customization

Chat can use any of Chimera’s fonts: Available fonts:
  • smaller - Smallest font
  • small - Default small font
  • large - Large font
  • console - Monospace console font (Hack Bold)
  • system - System font (Interstate Bold)
Font override in chimera.ini:
[font_override]
enabled=1

; Customize each font size/family
small_font_family=Interstate-Bold
small_font_size=15
small_font_weight=400
See the Font Override section for complete font customization options.

Animation and Timing

Control how messages appear and disappear:
Messages can slide in when appearing:
chat_slide_time_length=0.25  ; 0.25 second slide-in
server_slide_time_length=0   ; No animation (instant)
How long messages stay visible:
chat_time_up=5.0        ; 5 seconds visible
server_time_up=5.0      ; 5 seconds visible
Fade out duration before disappearing:
chat_fade_out_time=1.0    ; 1 second fade
server_fade_out_time=1.0  ; 1 second fade

Layout Examples

Default Layout

┌─────────────────────────────────┐
│  Chat messages (top-left)       │
│                                  │
│                                  │
│                                  │
│                                  │
│                Server messages ──┤ (top-right)
│                                  │
│                                  │
│                                  │
│                                  │
│                                  │
│  Chat input (bottom)             │
└─────────────────────────────────┘

Custom Layout

You can position elements anywhere:
; Bottom-left chat
chat_message_anchor=bottom_left
chat_message_x=10
chat_message_y=100

; Top-center server messages
server_message_anchor=center
server_message_x=0  ; Centered
server_message_y=10

HUD Pixel Coordinates

Coordinates are in HUD pixels:
  • Standard: 640x480 HUD space
  • Scales automatically to your resolution
  • Anchor point determines coordinate origin
Anchor points:
  • top_left - (0,0) is top-left corner
  • top_right - (0,0) is top-right corner
  • center - (0,0) is center of screen
  • bottom_left - (0,0) is bottom-left corner
  • bottom_right - (0,0) is bottom-right corner

Technical Implementation

Location: src/chimera/halo_data/chat.cpp
extern "C" void chat_out_asm(int channel, const wchar_t *message);

void chat_out(int channel, const wchar_t *message) {
    if(!message) {
        return;
    }
    chat_out_asm(channel, message);
}
Supports both wide-character and UTF-8 input:
void chat_out(int channel, const char *message) {
    wchar_t message_to_send[256] = {};
    MultiByteToWideChar(CP_UTF8, 0, message, -1, 
                        message_to_send, sizeof(message_to_send));
    chat_out_asm(channel, message_to_send);
}

Best Practices

For competitive play: Keep chat minimal and positioned away from crosshair.For streaming: Enable chimera_chat_block_ips true to hide server IPs.For recording: Customize colors to match your overlay/theme.

Font Override

Customize chat fonts

Console Commands

Chat-related commands

Hotkeys

Bind chat commands to keys

Widescreen Fix

Ensure chat scales on widescreen

Build docs developers (and LLMs) love