Cette page est affichée en anglais. Une traduction française est en cours.
ScriptsMay 31, 2026·3 min de lecture

Matter.js — 2D Physics Engine for the Web

A lightweight, fast 2D rigid body physics engine written in JavaScript for browsers and Node.js, powering games, simulations, and interactive experiences.

Prêt pour agents

Installation agent prête

Cet actif peut être installé après choix du runtime, vérification du plan et exécution de la commande adaptée.

Native · 98/100Policy : autoriser
Surface agent
Tout agent MCP/CLI
Type
Skill
Installation
Single
Confiance
Confiance : Established
Point d'entrée
Matter.js Overview
Commande d'installation directe
npx -y tokrepo@latest install 2103df05-5ccb-11f1-9bc6-00163e2b0d79 --target codex

À exécuter après confirmation du plan en dry-run.

Introduction

Matter.js is a 2D rigid body physics engine for JavaScript. It handles collision detection, forces, constraints, and compound bodies, making it straightforward to add realistic physics to browser-based games, interactive demos, and data visualizations without writing simulation math from scratch.

What Matter.js Does

  • Simulates rigid body dynamics including gravity, friction, restitution, and air resistance
  • Provides broad-phase and narrow-phase collision detection with SAT (Separating Axis Theorem)
  • Supports constraints such as springs, ropes, and pin joints between bodies
  • Handles compound bodies and concave shapes through convex decomposition
  • Includes a built-in Canvas renderer for quick prototyping and debugging

Architecture Overview

The engine runs a fixed-timestep simulation loop that updates body positions, detects collisions, and resolves contacts each frame. Bodies are organized in a Composite tree structure. The Detector module uses a grid-based broad phase to cull impossible collisions, then an SAT narrow phase for precise contact points. A Resolver applies impulses iteratively to satisfy constraints and prevent penetration. The Render module is optional and decoupled from the physics core.

Self-Hosting & Configuration

  • Install via npm with npm install matter-js or include the CDN script tag
  • Create an Engine, add Bodies and Constraints to its World composite
  • Configure gravity direction and scale via engine.gravity.x and engine.gravity.y
  • Use Matter.Runner for automatic frame stepping or call Engine.update() manually for custom loops
  • Swap the built-in renderer for any canvas or WebGL library by reading body positions each frame

Key Features

  • Zero dependencies and under 90 KB minified for a complete physics simulation
  • Deterministic simulation with fixed timestep for reproducible results
  • Event system for collision start, active, and end callbacks on any body pair
  • Mouse and touch constraint for interactive dragging of physics bodies
  • Sleeping bodies optimization that skips computation for stationary objects

Comparison with Similar Tools

  • Box2D (via Emscripten) — industry-standard C++ engine ported to JS; heavier but more feature-complete for complex joints
  • Planck.js — JavaScript rewrite of Box2D with a similar API; stricter physics but larger learning curve
  • p2.js — another JS physics engine with AABB tree broadphase; less actively maintained than Matter.js
  • Rapier (WASM) — Rust-based high-performance engine compiled to WASM; faster but requires WASM support and a different workflow

FAQ

Q: Can Matter.js handle 3D physics? A: No. It is strictly a 2D engine. For 3D physics in JavaScript, consider Cannon.js, Ammo.js, or Rapier.

Q: How many bodies can it simulate at 60 FPS? A: Performance depends on the device, but a few hundred active bodies typically run smoothly in modern browsers. Enable sleeping for inactive bodies to improve performance.

Q: Does Matter.js work with Pixi.js or Three.js? A: Yes. Use Matter.js for physics and read body positions and angles each frame to update your rendering library of choice.

Q: Is Matter.js suitable for production games? A: It is used in many browser games and interactive sites. For performance-critical titles with thousands of bodies, a WASM-based engine may be more appropriate.

Sources

Fil de discussion

Connectez-vous pour rejoindre la discussion.
Aucun commentaire pour l'instant. Soyez le premier à partager votre avis.

Actifs similaires