LittleJS 1.28.0

LittleJS - The Tiny Fast JavaScript Game Engine

LittleJS Logo

NPM Package Build Size NPM Downloads DeepScan MIT License Discord

🚂 All Aboard!

LittleJS is a fast, lightweight, and fully open source HTML5 game engine designed for simplicity and performance. Its small footprint is packed with a comprehensive feature set including 2D and 3D rendering, physics, particles, sound, and input handling. The code is very clean and well documented with many examples to get you started quickly.

🚀 Join the LittleJS Game Jam

The Third Annual LittleJS Game Jam will take place from Oct 2 to Nov 2! Unleash your creativity and develop amazing games using the LittleJS game engine.

Examples | Arcade | Docs | Reference | FAQ | Trailer | Discord | AI

LittleJS Screenshot1

LittleJS Screenshot2

LittleJS Features

✨ Graphics

🧊 LittleJS 3D

🔊 Audio

🎮 Input

💥 Physics

🚀 Flexibility

🛠️ Developer Tools

🤖 AI Friendly

How To Use LittleJS

To get started download the latest release from GitHub, the engine's builds and source as npm has them (the examples are in the repository), or install via npm:

npm install littlejsengine

or use degit for an empty Vite template

npx degit KilledByAPixel/LittleJS/examples/vite-starter my-game
cd my-game
npm install
npm run dev

The examples are only in the repository: clone it, or use Download ZIP on its GitHub page; the npm package and the release zip hold the engine alone. A page that loads images or modules needs a local web server, as browsers block them from a file on disk: serve the repository's root, for example with npx http-server, then open http://localhost:8080/examples/starter/, the place to start. The FAQ has more.

Here is a minimal Hello World example game, with the script path pointing at the engine file from the download or npm package; it loads nothing, so it runs straight from the file.

<!DOCTYPE html>
<script src="node_modules/littlejsengine/dist/littlejs.js"></script>
<script>
function gameInit() {}
function gameUpdate() {}
function gameUpdatePost() {}
function gameRender() {}
function gameRenderPost() { drawTextScreen('Hello World!', mainCanvasSize.scale(.5), 80); }
engineInit(gameInit, gameUpdate, gameUpdatePost, gameRender, gameRenderPost);
</script>

Tutorials

Examples

LittleJS comes with several demos both for learning and using as starter projects to create new games.

Builds

File Mode Module Use case
littlejs.js Debug No Debug mode with asserts
littlejs.release.js Release No Optimized for release
littlejs.min.js Release No Optimized for release and minified
littlejs.esm.js Debug ESM Debug mode with asserts
littlejs.esm.min.js Release ESM Optimized for release and minified

Every build includes the plugins. littlejs.min.js is about 135 KB gzipped, and the 3D plugins are a large part of that. A bundler like Vite leaves out the plugins a game does not use, so a small 2D game comes to about 26 KB gzipped, and a lit 3D scene to about 47 KB.

Games Made With LittleJS

Here are a few of the many amazing games created with LittleJS...

A collage of screenshots from games made with LittleJS

A sample of games built with LittleJS.

LittleJS pixel-art favicon