The Problem
Halo: Combat Evolved has a critical limitation inherited from the original Xbox version: This creates a jarring visual experience on modern displays running at 60 Hz, 144 Hz, or higher refresh rates. Even if you’re rendering at 144 FPS, players and objects will appear to stutter because their positions only update 30 times per second.The Solution
Chimera adds interpolation to smooth object movement between ticks. The system intelligently predicts and smooths object positions, creating fluid motion that matches your frame rate.What Gets Interpolated
Chimera interpolates multiple game elements:- Objects - Players, vehicles, weapons, and all dynamic objects
- Camera - First-person and third-person camera movement
- Particles - Effects, explosions, and particle systems
- Lights - Dynamic lighting effects
- Flags - CTF flags and similar objects
- Antennas - Warthog antennas and similar animated models
- First Person - Weapon models and first-person animations
Technical Implementation
Tick Progress Calculation
The interpolation system tracks progress between ticks:Frame Synchronization
Interpolation hooks into Chimera’s event system:- On Tick - Store previous state and reset progress
- Pre-frame - Calculate interpolation progress (0.0 to 1.0)
- Pre-camera - Apply camera interpolation
- Frame - Restore original values after rendering
Always Enabled
Interpolation is always enabled in Chimera and cannot be disabled. This is a fundamental enhancement that all players benefit from.
- Work transparently without configuration
- Maintain compatibility with all game modes
- Preserve gameplay accuracy (only visual smoothing)
- Handle game state changes automatically
Game State Handling
Pause Detection
Interpolation automatically pauses when the game is paused:Buffer Clearing
Interpolation buffers are cleared on major game state changes:- Loading a new map
- Reverting to checkpoint
- Respawning
- Major game events
Performance Characteristics
Optimized for Modern Hardware
Interpolation is highly optimized:- Minimal CPU overhead - Simple linear interpolation
- No memory leaks - Buffers cleared on state changes
- Cache-friendly - Sequential memory access patterns
- Frame-rate independent - Scales with any FPS
No Gameplay Impact
Interpolation is purely visual. All game logic, physics, and netcode still run at the server’s tick rate (typically 30 ticks per second).
- Hit detection is unaffected
- Physics simulation remains identical
- Network synchronization stays the same
- Demo playback compatibility preserved
Visual Comparison
- Without Interpolation
- With Interpolation
At 144 FPS without interpolation:
- Objects update position 30 times per second
- Visible stuttering on smooth camera pans
- Choppy vehicle movement
- Jarring player animations
First Person Camera
Chimera also handles first-person camera interpolation:Related Features
Uncap Cinematic
Uncap cinematic frame rate from 30 FPS
Throttle FPS
Limit frame rate for consistent interpolation
Bug Fixes
Other frame-rate related fixes
Auto Center Fix
Fixes vehicle handling at high FPS
Technical Notes
Implementation Files
The interpolation system is implemented across multiple files:src/chimera/fix/interpolate/interpolate.cpp- Core systemsrc/chimera/fix/interpolate/object.cpp- Object interpolationsrc/chimera/fix/interpolate/camera.cpp- Camera interpolationsrc/chimera/fix/interpolate/particle.cpp- Particle effectssrc/chimera/fix/interpolate/light.cpp- Dynamic lightssrc/chimera/fix/interpolate/flag.cpp- Flag objectssrc/chimera/fix/interpolate/fp.cpp- First person viewsrc/chimera/fix/interpolate/antenna.cpp- Antenna animations
