Skip to content

Repository files navigation

logo

LicenseLatest VersionDownloadsAPI DocumentationMSRV

Tile-first. Retro-ready. Write Once, Run Anywhere—2D Engine!

Change Log | Architecture | FAQ | Roadmap | Online Demo


Core Philosophy

Everything is Tiles

TUI & sprites → buffer → cells → tiles

A unified rendering abstraction

High performance: Texture2DArray, single draw call

One Codebase, Multiple Targets

Terminal · Desktop · Web

GPU-rendered TUI — no terminal emulator

Hybrid TUI + pixel content across targets

Quick Start

app! macro scaffolding

Built-in BASIC interpreter

Event-driven Model–Render–Game loop


⭐ Killer App: MDPT

A Markdown-first presentation toolkit with a self-rendered TUI(no terminal emulator needed).

MDPT demonstrates RustPixel's unique capability: rendering a full-featured terminal UI in a native GPU window, completely independent of any terminal emulator.

MDPT

cargo pixel r mdpt g -r # WGPU mode (native)
cargo pixel r mdpt t -r # Term mode (native)
cargo pixel r mdpt w -r # Web mode (browser)

Key Features

FeatureDescription
GPU-Accelerated Transitions6 transition effects (dissolve, circle, wipe, etc.) powered by shaders
Code Highlighting100+ languages with dynamic line-by-line reveal {1-4|6-10|all}
Text AnimationsSpotlight, Wave, FadeIn, Typewriter effects
ChartsLine charts, bar charts, pie charts, Mermaid diagrams
Column LayoutsFlexible multi-column content arrangement
PETSCII/SSF ImagesNative pixel-art and animation support
Full CJK SupportChinese, Japanese, Korean text rendering
Mipmap RenderingCrisp text at any window size or fullscreen, single draw call performance
Incremental DisplayStep-by-step content reveal with pause markers

Why MDPT?

Unlike terminal-based presenters (presenterm, slides), MDPT:

  • No terminal emulator — Runs in a native window with GPU rendering
  • Consistent rendering — Same look across all platforms
  • Rich transitions — GPU shader effects impossible in terminals
  • True graphics — Not limited by terminal cell constraints

AI-Powered Slide Generation

The gen-mdpt Claude Code skill can automatically generate complete MDPT presentations from any topic or document — including code blocks, charts, tables, column layouts, and animations. Below is a Rust tutorial generated by gen-mdpt:

gen-mdpt


⭐ Tetris — Play Against AI

Two-player Tetris with AI opponent, attack flight animations, and sweep clear effects.

Tetris

cargo pixel r tetris g -r # WGPU mode (native)
cargo pixel r tetris t -r # Terminal mode
cargo pixel r tetris w -r # Web mode (browser)

Unified Texture Architecture

Texture2DArray with 3-level mipmaps (4096×4096 layers), containing Sprite, TUI, Emoji, and CJK symbols. Single texture binding, instanced rendering, one draw call.

Mipmaps = precomputed lower-resolution versions of the same texture, auto-selected based on render size.

Pix resources (assets/pix/) are loaded with fallback: app-specific first, then shared root. Workspace apps share root assets/pix/; standalone projects need their own copy. See Architecture for details.


Showcase and games

PETSCII art gallery with Matrix rain, GPU transitions, and 2000+ artworks. Fullscreen screensaver mode supported.

PetView

cargo pixel r petview g -r # WGPU mode (native)
cargo pixel r petview w -r # Web mode (browser)

Quick Start

Install

cargo install rust_pixel # Install cargo-pixel CLI
cargo pixel # First run clones workspace to ~/rust_pixel_workcd~/rust_pixel_work

Run Demo Games

cargo pixel r snake t # Snake - Terminal mode
cargo pixel r snake g # Snake - WGPU mode (native window)
cargo pixel r tetris w # Tetris - Web mode (localhost:8080)
cargo pixel r petview g -r # Petview - WGPU mode (release)

Create Your Own Game

cargo pixel c mygame # Create in ./apps/mygame
cargo pixel r mygame t # Run it!# Or create standalone project
cargo pixel c myapp .. # Create in ../myappcd ../myapp && cargo pixel r myapp g

Write Games in BASIC

RustPixel includes pixel_basic - a built-in BASIC interpreter perfect for beginners or quick prototyping!

cargo pixel r basic_snake t # Run BASIC Snake game

Write game logic in familiar BASIC syntax (apps/basic_snake/assets/game.bas):

10REM SNAKE GAME20 X =20: Y =1030DIM BX(100): DIM BY(100)
40 YIELD
50GOTO401000REM ON_INIT1010 BOX 0, 0, 60, 24, 11020RETURN2000REM ON_TICK2010IFKEY("W") THEN DY =-1: DX =02020 X = X + DX: Y = Y + DY
2030RETURN3500REM ON_DRAW3510 PLOT X, Y, "@", 10, 03520RETURN

pixel_basic features:

  • Classic BASIC syntax with line numbers
  • Game hooks: ON_INIT (1000), ON_TICK (2000), ON_DRAW (3500)
  • Graphics: PLOT x, y, char, fg, bg / BOX / CLS
  • Input: KEY("W"), KEY("SPACE")
  • Arrays: DIM arr(100)
  • Control flow: GOTO, GOSUB/RETURN, FOR/NEXT, IF/THEN
  • Math: RND(), INT(), ABS()
  • Strings: STR$(), LEN(), MID$()

See pixel_basic/ for the interpreter source code.


Architecture

┌─────────────────────────────────────────────────────────┐
│ Game │
│ ┌─────────────────────┐ ┌─────────────────────────┐ │
│ │ Model │ │ Render │ │
│ │ ├─ init() │ │ ├─ init() │ │
│ │ ├─ handle_input() │ │ ├─ draw() │ │
│ │ ├─ handle_auto() │ │ └─ Panel │ │
│ │ └─ handle_timer() │ │ └─ Sprites[] │ │
│ └─────────────────────┘ │ └─ Buffer │ │
│ │ └─ Cells[] │ │
│ └─────────────────────────┘ │
└─────────────────────────────────────────────────────────┘

Demo Games

Snake

PETSCII animations with smooth gameplay

cargo pixel r snake g -r # WGPU (native)
cargo pixel r snake t -r # Terminal
cargo pixel r snake w -r # Web

Snake

Tetris

Play against AI

cargo pixel r tetris g -r # WGPU (native)
cargo pixel r tetris t -r # Terminal
cargo pixel r tetris w -r # Web

Tetris

Tower Defense

Pixel-perfect sprite movement

cargo pixel r tower g -r # WGPU (native)
cargo pixel r tower w -r # Web

Tower

Poker / Gin Rummy

Card game algorithms + FFI/WASM demos

cargo pixel r poker t -r
cargo pixel r gin_rummy t -r

Poker


Tools

Palette - Color Tool

Terminal UI for color manipulation

cargo pixel r palette t -r

Palette

Edit - Character Art Editor

cargo pixel e t . assets/logo.txt # Terminal mode
cargo pixel e g . assets/logo.pix # WGPU mode
Edit TerminalEdit SDL

Petii - Image to PETSCII Converter

cargo pixel p assets/lion.png 40 40 > lion.pix
cargo pixel e g . lion.pix
Petii Example 1Petii Example 2

GIF to PETSCII Animation

cargo pixel cg input.gif output.ssf 40 25
cargo pixel ssf . output.ssf # Preview

FFI & WASM

RustPixel algorithms can be exported for other languages:

# C++/Python FFIcd apps/poker/ffi && make run
# JavaScript WASMcd apps/poker/wasm && make run

Installation Guide

PlatformGuide
macOSdoc/mac.md
Linuxdoc/linux.md
Windows (WSL)doc/win.md
Windows (Native)doc/win-native.md

Requirements:

  • Nerd Font (for terminal mode)
  • Rust 1.71+
  • wasm-pack (for web mode)

Features

  • app! macro - One-line game scaffolding with cross-platform entry points
  • Model/Render pattern - Clean separation of logic and presentation
  • Event/Timer system - Built-in messaging mechanism
  • Unified adapter trait - Same code for all rendering backends
  • WGPU shaders - Modern GPU rendering pipeline (native + WebGL2/WebGPU)
  • Game algorithms - Pathfinding, object pools, utilities
  • Audio support - Sound effects and music playback

Roadmap

Three Pillars

PillarDescription
Hybrid TUISame code runs in Terminal, Native Window, and Web
ScriptingBASIC drives game logic, Rust handles engine
AI Art PipelinePETSCII/ASCII art search → generation

AI Integration

  • AI-friendly API — Refine APIs for better AI code generation compatibility
  • AIGC for MDPT — Auto-generate slide illustrations (converted to pixel art)
  • PETSCII/ASCII Art Generation — Explore AI-generated low-resolution, high-quality character art

BASIC Enhancement

  • Richer Game Capabilities — Expand BASIC to support more complex games and TUI apps
  • Unified Script Templateinit / update / draw / on_key pattern for all apps

Toolchain

  • Editor Improvements — Enhanced character art editor with more features
  • Asset Pipeline — Charset/Palette/Pack import/export, versioning, hot reload
  • Cross-Platform Consistency — Unified input and rendering across all backends

See Roadmap 2026 for detailed plans.


Made with Rust

About

Tile-first. Retro-ready. Write Once, Run Anywhere—2D Engine!

Resources

Stars

298 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages