npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

csterm

v1.0.22

Published

Counter-Strike in your terminal - true 3D FPS with software rendering

Readme

CS-CLI

A terminal-based Counter-Strike clone with true 3D mesh rendering - not raycasting! Built entirely in TypeScript, rendering to your terminal using ANSI escape codes.

Terminal FPS TypeScript License

Features

  • Real 3D Engine: Software rasterizer with perspective projection, z-buffering, and triangle rendering
  • Mouse Look: Full mouse capture with smooth sensitivity controls (SGR 1006 mode)
  • Weapons: Knife, pistol, rifle, shotgun, and sniper with distinct behaviors
  • Bot AI: Bots with pathfinding, combat behaviors, and difficulty levels
  • Spatial Audio: Procedural 8-bit sound effects with stereo panning
  • Deathmatch Mode: Kill limit, respawning, scoreboard, and kill feed
  • Debug Console: Source-engine style console with ~ key

Requirements

  • Node.js 18+ or Bun
  • A modern terminal with mouse support (iTerm2, Ghostty, Kitty, Alacritty, etc.)
  • macOS, Linux, or WSL

Installation

git clone https://github.com/idanbeck/cs-cli.git
cd cs-cli
npm install

Running

# Recommended - suppresses audio library warnings
npm run play

# Or with bun for faster startup
npm run dev

Controls

| Key | Action | |-----|--------| | WASD | Move | | Mouse | Look around (when captured) | | Arrow Keys | Look around (keyboard fallback) | | Click / C | Capture/release mouse | | Space | Jump | | F | Fire weapon | | R | Reload | | 1-5 | Select weapon | | Tab | Show scoreboard | | ~ | Open debug console | | Esc | Release mouse / Quit | | Q | Quit |

Console Commands

Press ~ to open the console:

| Command | Description | |---------|-------------| | help | List all commands | | sensitivity <0.1-10> | Set mouse sensitivity | | fov <30-120> | Set field of view | | bot_add [easy\|medium\|hard] | Spawn a bot | | bot_kick | Remove all bots | | god | Toggle invincibility | | noclip | Toggle collision | | tp <x> <y> <z> | Teleport | | stats | Show K/D ratio |

Architecture

src/
├── engine/          # 3D rendering pipeline
│   ├── math/        # Vector3, Matrix4, Quaternion
│   ├── Camera.ts    # View/projection matrices
│   ├── Rasterizer.ts # Triangle rasterization
│   └── Renderer.ts  # Main render loop
├── game/            # Game logic
│   ├── Player.ts    # Player state
│   ├── Weapon.ts    # Weapon definitions
│   └── GameMode.ts  # Deathmatch rules
├── ai/              # Bot AI
│   ├── Bot.ts       # Bot entity
│   └── Pathfinding.ts # A* navigation
├── audio/           # Sound system
│   └── SoundEngine.ts # Procedural 8-bit audio
└── ui/              # UI components
    └── Console.ts   # Debug console

How It Works

Unlike traditional terminal "3D" games that use raycasting (like the original Wolfenstein 3D), CS-CLI uses a complete 3D rendering pipeline:

  1. Mesh Geometry: Maps and objects are defined as triangle meshes
  2. Matrix Transforms: Model → World → View → Projection space
  3. Triangle Rasterization: Barycentric coordinate interpolation
  4. Z-Buffer: Proper depth sorting for overlapping geometry
  5. ANSI Output: Converts framebuffer to terminal escape sequences

This allows for true 3D features like:

  • Ramps and stairs (not just flat floors)
  • Objects at any angle
  • Proper perspective projection
  • Billboard sprites for entities

License

This project uses the PolyForm Noncommercial License 1.0.0.

Free for: Personal use, education, research, hobby projects, non-profits

Requires license for: Commercial use, commercial products, revenue-generating applications

For commercial licensing, contact: Idan Beck

Credits

Built with: