ASCII Engine is a terminal-based graphics engine written in Rust for creating ASCII art games and animations directly in the terminal. Handles rendering, collision detection, animations, and layered graphics.
Flicker-Free Rendering
Achieves smooth rendering by implementing a screen state-diffing algorithm. Rather than redrawing the entire screen each frame, the engine calculates only what changed from the previous frame buffer and prints the minimal difference. This eliminates flicker, frame drops, and lag during rapid updates.
Animation System
Tick-based animation system with automatic chaining when one animation finishes, remaining time carries over to the next, ensuring smooth transitions without timing gaps. Frame timing is calculated from elapsed ticks rather than simple counters, making it robust against timing variations.
Supporting Libraries
Built on two custom Rust libraries developed for this project:
- terminal_display: Screen buffer management and optimized frame rendering
- event_sync: Tick-based timing synchronization for deterministic event scheduling
Running Example