Game-First Design
Built specifically for ASCII games with double-buffering, layers, and camera systems.
A minimalist, high-performance ASCII rendering library for game developers

Current builds are beta. A stable 0.1.0 release is blocked by:
import {
Renderer,
CanvasTarget,
GameLoop,
KeyboardManager,
} from "@shaisrc/tty";
// Set up canvas rendering
const canvas = document.getElementById("game");
const target = new CanvasTarget(canvas, { width: 80, height: 24 });
const renderer = new Renderer(target);
// Create player
const player = { x: 40, y: 12, char: "@", color: "yellow" };
// Handle input
const keyboard = new KeyboardManager();
keyboard.onKeyDown("ArrowUp", () => player.y--);
keyboard.onKeyDown("ArrowDown", () => player.y++);
keyboard.onKeyDown("ArrowLeft", () => player.x--);
keyboard.onKeyDown("ArrowRight", () => player.x++);
// Key aliases (normalized): "Space"/"Spacebar" -> " ", "Esc" -> "Escape"
keyboard.onKeyDown("Space", () => player.attack());
// Game loop
const game = new GameLoop(
(dt) => {
// Game logic here
},
() => {
renderer
.clear()
.box(0, 0, 80, 24, { style: "double", fg: "cyan" })
.centerText(1, "KISS ASCII Game", { fg: "yellow" })
.setChar(player.x, player.y, player.char, player.color)
.render();
},
});
game.start();npm install @shaisrc/ttysetChar() - Set individual charactersdrawText() - Draw text stringsfill() - Fill rectangular areasbox() - Bordered boxes with fill optionsborder() - Border-only framesrect() - Solid rectanglesmenu() - Interactive menus with selectionprogressBar() - Horizontal/vertical progress indicatorspanel() - Titled panels with scrollable contentcenterText() - Center text horizontallyrightAlign() - Right-align textleftAlign() - Left-align textalignText() - Generic alignment with optionslayer() - Create and switch layerslayerOrder() - Control rendering orderhideLayer() / showLayer() - Toggle layer visibilitysetCamera() - Position viewport in worldfollow() - Follow an entity smoothlymoveCamera() - Pan the cameraworldToScreen() / screenToWorld() - Coordinate transforms👉 Ready to start?
Check out the Quick Start Guide to build your first ASCII game in under 5 minutes!
MIT Licensed | Copyright © 2026-present ShaiDev