For best games in js, the first results are phaserjs/phaser (Phaser is a comprehensive 2D game engine built in JavaScript that runs directly in web browsers, featuring canvas rendering, a robust game loop, asset management, physics, and input support), mustache-dev/mario-kart-3.js (Mario-Kart-3.js is a browser-playable JavaScript racing game featuring WebGL canvas rendering, keyboard and mouse input handling, a game loop, collision detection, and vehicle physics, though it is a specific clone rather than a general-purpose game engine) and gabrielecirulli/2048 (This repository provides a fully browser-playable JavaScript puzzle game with client-side game loops and keyboard input handling, fitting the category even though it is a single concrete title rather than an engine or a diverse collection). photonstorm/phaser and babylonjs/babylon.js round out the shortlist. Compare the match explanations and check the project documentation against your requirements.
Explore open-source JavaScript games on GitHub, featuring arcade clones, puzzle titles, and web-based engines for developers.
Phaser is a comprehensive 2D game engine designed for building high-performance, interactive content that runs directly in web browsers. At its core, the engine utilizes a fixed-timestep simulation loop that decouples game logic from variable browser frame rates, ensuring consistent behavior across diverse hardware. It provides a robust framework for managing asset loading, physics, input, and audio, enabling the creation of complex, responsive visual experiences for both desktop and mobile devices. The engine distinguishes itself through a high-performance graphics pipeline that automaticall
Phaser is a comprehensive 2D game engine built in JavaScript that runs directly in web browsers, featuring canvas rendering, a robust game loop, asset management, physics, and input support.
Mario-Kart-3.js is a browser-based 3D racing simulation implemented in JavaScript. It utilizes a WebGL game engine to render three-dimensional race tracks and vehicle models directly within a web browser using graphics hardware. The simulation features a physics-based drifting and maneuver system for gaining speed boosts and a power item system for deploying competitive advantages during races. The project encompasses a vehicle control system that maps keyboard and mouse inputs to steering and acceleration, alongside a simulation engine that manages collision detection and scripted item logi
Mario-Kart-3.js is a browser-playable JavaScript racing game featuring WebGL canvas rendering, keyboard and mouse input handling, a game loop, collision detection, and vehicle physics, though it is a specific clone rather than a general-purpose game engine.
This is a browser-based puzzle game and HTML5 JavaScript application where players slide and merge numbered tiles on a grid to reach a target value. The game runs entirely on the client side, using web standard technologies to handle game logic and rendering directly in the browser. The application is a mobile-compatible web app that translates touch-swipe gestures and keyboard inputs into directional commands. It includes a local storage score tracker to save and maintain a record of high scores across different sessions.
This repository provides a fully browser-playable JavaScript puzzle game with client-side game loops and keyboard input handling, fitting the category even though it is a single concrete title rather than an engine or a diverse collection.
Phaser is a cross-platform 2D web game engine and framework designed for creating interactive experiences that run on desktop and mobile web browsers. It serves as a GPU-accelerated rendering library and WebGL graphics engine for building two-dimensional games using HTML5 Canvas and WebGL. The engine features a dual-backend rendering pipeline that allows developers to switch between rendering paths. It distinguishes itself through high-performance graphics capabilities, including GPU-driven sprite batching for large-scale image management, a dynamic lighting system with self-shadows, and the
Phaser is an established cross-platform 2D web game engine designed entirely for JavaScript and TypeScript browser environments, providing canvas rendering, a game loop, input support, and robust graphics features.
Babylon.js is a JavaScript game engine and real-time graphics renderer designed for creating interactive three-dimensional visuals and applications. It functions as a web-based 3D framework and WebGL engine that enables the deployment of high-performance 3D content across various web platforms and devices. The project provides tools for web-based 3D game development, real-time graphics rendering, and the creation of browser-based interactive visualizations. It also supports the development of WebXR virtual and augmented reality experiences using standard web technologies. The framework cover
Babylon.js is a full-featured TypeScript 3D game engine that runs natively in the browser, providing canvas rendering, a game loop, and input support for creating interactive web games.
This project is a browser-based framework designed for building three-dimensional, block-based games and interactive simulations. It functions as a JavaScript library that provides the core infrastructure for rendering voxel environments, managing dynamic terrain data, and executing real-time physics within a web-based context. The engine distinguishes itself through a high-performance WebGL rendering pipeline that utilizes texture-atlas material mapping to consolidate visual assets and reduce draw calls. It manages large-scale environments by dividing the world into discrete, chunk-based spa
This repository provides a JavaScript-based voxel game engine featuring WebGL rendering, chunk management, and physics simulation designed for browser environments, though it focuses specifically on 3D block building rather than general 2D arcade games.
Tower Game is a browser-based JavaScript engine designed for building physics-driven stacking simulations. It provides a framework for developing interactive arcade-style challenges where players align blocks to build structures, with core systems that manage collision logic, health tracking, and precision-based scoring. The engine distinguishes itself through a modular architecture that allows for deep customization of gameplay mechanics. Developers can inject custom functions to override default movement speeds, oscillation angles, and scoring triggers at runtime. Additionally, the system s
This repository provides a browser-playable JavaScript game engine with canvas rendering, a game loop, and physics simulation tailored for arcade stacking games.
Untrusted is a web-based programming puzzle and meta-programming game where progress is achieved by rewriting the active JavaScript source code while the application is running. It functions as a code-editing adventure game that combines programming education with puzzle gameplay. The experience centers on real-time logic modification, requiring players to edit scripts to change environmental rules, manipulate game behavior, and resolve puzzle-based objectives. This interactive code editing allows players to overwrite active functions and variables to overcome obstacles. The project includes
Untrusted is an open-source browser-based puzzle game built in JavaScript that features a game loop and interactive script modification, making it a fitting example of a web game even if it focuses more on code-editing puzzles than traditional arcade mechanics.
This project is a browser-based game engine and implementation of a racing game built using a declarative component architecture. It provides a framework for constructing interactive three-dimensional environments and game objects by mapping hierarchical data structures to a persistent scene graph. The engine distinguishes itself by synchronizing game logic with high-performance rendering through a centralized data store. This approach ensures that physics calculations, player progress, and environmental variables remain consistent with the visual output of the scene. Developers can compose c
This repository provides a browser-based 3D game engine and racing game implementation written in TypeScript, featuring canvas rendering, a game loop, and state management suitable for web play.
This project is a WebGL 3D game engine and comprehensive suite of tools for rendering high-performance 3D graphics and interactive scenes in the browser using WebGL and WebGPU. It provides a dedicated WebXR framework for building augmented and virtual reality experiences that run directly in a web browser. The engine includes a specialized Gaussian splatting renderer for displaying 3D point-cloud data to create photorealistic environmental captures. It utilizes a glTF asset pipeline to load and stream compressed 3D models and textures for efficient asset delivery. The system covers real-time
PlayCanvas is a powerful WebGL and WebGPU 3D game engine that runs entirely in the browser with canvas rendering, a game loop, input handling, asset loading, and physics, aligning well with your search for browser-based JavaScript games and engines.
Hilo is an HTML5 game engine for building 2D games that run across browsers and devices. It renders graphics through Canvas, DOM, or WebGL backends, automatically selecting the best option for the target environment. The engine provides a complete game development solution with sprite, skeletal, and particle animation, along with a texture atlas system for efficient image loading and rendering. The framework distinguishes itself through its integration of the DragonBones skeletal animation engine, which drives bone-based character movement without frame-by-frame sprites, and its Chipmunk phys
Hilo is an HTML5 2D game engine with canvas and WebGL rendering, built-in asset loading, and physics support that lets you create browser-playable games in JavaScript, though it is a game development framework rather than a finished game itself.
melonJS is a lightweight HTML5 game engine for building 2D games in the browser using JavaScript. It provides a complete framework for sprite animation, tilemap loading, physics simulation, input handling, and audio playback, with a unified rendering system that automatically switches between WebGL and Canvas2D backends without code changes. The engine distinguishes itself through several integrated capabilities. It features a per-sprite shader pipeline for custom fragment shader effects, a SAT-based collision engine with swappable physics adapters (including built-in SAT, Matter.js, and Plan
MelonJS is a lightweight HTML5 2D game engine that supports canvas rendering, game loops, input handling, and physics simulations, fitting the requirement for browser-based JavaScript game development.
BrowserQuest is a WebSocket multiplayer game engine and real-time state synchronization tool. It functions as a web-based game server designed to manage concurrent connections and broadcast updates to maintain a consistent shared world state between a central server and distributed web clients. The project enables real-time multiplayer gaming and browser-based game development by implementing low-latency data exchange. It focuses on game state synchronization to ensure that multiple players interacting within the same environment see the same actions and world states simultaneously. The syst
BrowserQuest is a classic browser-based multiplayer game that runs entirely in JavaScript with client rendering and game loop mechanics, fitting the requested game genre well despite its abandoned status.
LittleJS is a lightweight HTML5 2D game engine designed for building web games using Canvas and WebGL without external dependencies. It integrates a WebGL sprite renderer, a 2D physics engine for arcade-style collisions and rigid-body dynamics, and a grid-based A* pathfinding system for entity navigation. The engine is distinguished by its procedural audio synthesizer, which generates music and sound effects at runtime using parameter arrays to minimize file sizes. It also features a comprehensive graphics pipeline that supports custom fragment-shader post-processing and a dynamic 2D lighting
LittleJS is a lightweight JavaScript game engine built for the browser that provides canvas and WebGL rendering, physics, and asset handling, making it a fitting tool for creating web games even though it operates as an engine framework rather than a finished game.
JavaScript Game Engine
Crafty is a JavaScript game engine that provides a component-based entity system for building browser games, though you will need to assemble your own asset loader and physics integrations since it focuses primarily on the core architecture and rendering.
I have created 111 one-button games in 2021
This repository provides a large collection of browser-playable arcade games written entirely in JavaScript, directly fulfilling the core interest in small open-source web games.
Simple adventure game written in HTML, CSS and JS.
This simple adventure game is playable directly in the browser using JavaScript and HTML, though it lacks the advanced features like a physics engine or asset loader that a full engine would have.
You can open the Demo in two different browser tabs, that way you spawn two different players into the world Demo here: http://185.82.21.82:8700
This project is a browser-playable multiplayer game built in TypeScript, though it focuses more on networking and 3D Babylon.js integration than a comprehensive general game engine.
This is a browser-based Tetris game built with React, using Redux and Immutable.js to manage all game state in a single immutable store. The application renders the game board, next-block preview, and score display as React components, with state transitions that are predictable and support time-travel debugging through the Redux DevTools Extension. The game distinguishes itself through several integrated capabilities. It automatically adapts between keyboard and touch controls based on the user's input device, with configurable repeat rates for responsive gameplay. A persistence layer serial
This browser-based Tetris game runs entirely in JavaScript with React rendering and keyboard and touch support, making it a playable arcade project though it lacks a full game engine or physics system.
:ski: The classic PC Game SkiFree, but in JS.
This repository is a faithful JavaScript port of the classic SkiFree game, offering a browser-playable arcade experience that fits the target category, though it lacks an explicit built-in physics engine or asset loader.
Classic tetris game implemented in CycleJS. Development in progress.
This repository provides a browser-playable Tetris game implemented in JavaScript using Cycle.js, though it represents a specific clone rather than a comprehensive game engine.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| phaserjs/phaser | 39.8K | JavaScript | MIT | |
| mustache-dev/mario-kart-3.js | 4.6K | JavaScript | — | |
| 13.3K |
| JavaScript |
| MIT |
| photonstorm/phaser | 39.8K | JavaScript | MIT |
| babylonjs/babylon.js | 25.7K | TypeScript | Apache-2.0 |
| max-mapper/voxel-engine | 1.3K | JavaScript | BSD-3-Clause |
| iamkun/tower_game | 1.6K | JavaScript | MIT |
| alexnisnevich/untrusted | 4.7K | JavaScript | — |
| pmndrs/racing-game | 2.2K | TypeScript | MIT |
| playcanvas/engine | 16.1K | JavaScript | MIT |