Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/liabru/matter-js
a 2D rigid body physics engine for the web ▲● ■
https://github.com/liabru/matter-js
canvas javascript physics physics-engine rigid-bodies web
Last synced: 6 days ago
JSON representation
a 2D rigid body physics engine for the web ▲● ■
- Host: GitHub
- URL: https://github.com/liabru/matter-js
- Owner: liabru
- License: mit
- Created: 2014-02-19T14:16:17.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2024-08-17T14:14:36.000Z (5 months ago)
- Last Synced: 2025-01-05T03:05:23.716Z (8 days ago)
- Topics: canvas, javascript, physics, physics-engine, rigid-bodies, web
- Language: JavaScript
- Homepage:
- Size: 21.8 MB
- Stars: 17,061
- Watchers: 238
- Forks: 1,969
- Open Issues: 269
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-open-source-games - Matter.js - Matter.js is a JavaScript 2D rigid body physics engine for the web. (Frameworks/Engines/Libraries / IOS)
- awesome-game-engine-dev - Matter.js - Featured 2D physics engine for the web. [[Demos](https://brm.io/matter-js/)] (Libraries / JavaScript)
- awesome-github-star - matter-js
- awesome-jsgames - Matter.js - A JavaScript 2D rigid body physics engine for the web. (Uncategorized / Uncategorized)
- awesome-physics - matter-js - A 2D rigid body physics engine for the web (Mechanics / Rigid Bodies and Physics Engines)
- starred-awesome - matter-js - a 2D rigid body physics engine for the web ▲● ■ (JavaScript)
- awesome-star-libs - liabru / matter-js
- awesome - liabru/matter-js - a 2D rigid body physics engine for the web ▲● ■ (JavaScript)
- awesome - liabru/matter-js - a 2D rigid body physics engine for the web ▲● ■ (JavaScript)
- awesome-design-dev - matter-js
- awesome-design-dev - matter-js
README
> *Matter.js* is a JavaScript 2D rigid body physics engine for the web
[brm.io/matter-js](https://brm.io/matter-js/)
[Demos](#demos) ・ [Gallery](#gallery) ・ [Features](#features) ・ [Plugins](#plugins) ・ [Install](#install) ・ [Usage](#usage) ・ [Examples](#examples) ・ [Docs](#documentation) ・ [Wiki](https://github.com/liabru/matter-js/wiki) ・ [References](#references) ・ [License](#license)
### Demos
- Mixed Shapes
- Solid Shapes
- Concave SVG Paths
- Concave Terrain
- Concave Bodies
- Compound Bodies
- Newton's Cradle
- Wrecking Ball
- Slingshot Game
- Rounded Corners
- Views
- Time Scaling
- Body Manipulation
- Composite Manipulation
- Raycasting
- Sprites
- Pyramid
- Car
- Catapult
- Reverse Gravity
- Bridge
- Avalanche
- Basic Soft Bodies
- Cloth
- Events
- Collision Filtering
- Chains
- Ball Pool
- Stack
- Circle Stack
- Compound Stack
- Restitution
- Friction
- Air Friction
- Static Friction
- Sleeping
- Beach Balls
- Stress 1
- Stress 2
- Sensors
### Gallery
See how others are using matter.js physics
- [Patrick Heng](https://patrickheng.com/) by Patrick Heng
- [USELESS](https://useless.london/) by Nice and Serious
- [Secret 7](https://secret-7.com/) by Goodness
- [New Company](https://www.new.company/) by New Company
- [Game of The Year](https://gameoftheyear.withgoogle.com/) by Google
- [Pablo The Flamingo](https://pablotheflamingo.com/) by Nathan Gordon
- [Les métamorphoses de Mr. Kalia](https://lab212.org/oeuvres/2:art/18/Les-metamorphoses-de-Mr-Kalia) by Lab212
- [Phaser](https://phaser.io/) by Photon Storm
- [Sorry I Have No Filter](https://sorryihavenofilter.com/pages/about/) by Jessica Walsh
- [Fuse](https://fuse.blog/) by Fuse
- [Glyphfinder](https://www.glyphfinder.com/) by überdosis
- [Isolation](https://isolation.is/postcards/my-week) by sabato studio
- [more...](https://github.com/liabru/matter-js/wiki/Gallery)
### Features
- Rigid bodies
- Compound bodies
- Composite bodies
- Concave and convex hulls
- Physical properties (mass, area, density etc.)
- Restitution (elastic and inelastic collisions)
- Collisions (broad-phase, mid-phase and narrow-phase)
- Stable stacking and resting
- Conservation of momentum
- Friction and resistance
- Events
- Constraints
- Gravity
- Sleeping and static bodies
- Plugins
- Rounded corners (chamfering)
- Views (translate, zoom)
- Collision queries (raycasting, region tests)
- Time scaling (slow-mo, speed-up)
- Canvas renderer (supports vectors and textures)
- [MatterTools](https://github.com/liabru/matter-tools) for creating, testing and debugging worlds
- World state serialisation (requires [resurrect.js](https://github.com/skeeto/resurrect-js))
- Cross-browser and Node.js support (Chrome, Firefox, Safari, IE8+)
- Mobile-compatible (touch, responsive)
- An original JavaScript physics implementation (not a port)
### Install
You can install using package managers [npm](https://www.npmjs.org/package/matter-js) and [Yarn](https://yarnpkg.com/) using:
npm install matter-js
Alternatively you can download a [stable release](https://github.com/liabru/matter-js/tags) or try the latest experimental [alpha build](https://github.com/liabru/matter-js/tree/master/build) (master) and include the script in your web page:
### Performance with other tools (e.g. Webpack, Vue etc.)
Bundlers and frameworks may reduce real-time performance when using their default configs, especially in development modes.
When using [Webpack](https://webpack.js.org/), the default sourcemap config can have a large impact, for a solution see [issue](https://github.com/liabru/matter-js/issues/1001).
When using [Vue.js](https://vuejs.org/), watchers can have a large impact, for a solution see [issue](https://github.com/liabru/matter-js/issues/1001#issuecomment-998911435).
### Usage
Visit the [Getting started](https://github.com/liabru/matter-js/wiki/Getting-started) wiki page for a minimal usage example which should work in both browsers and Node.js.
Also see the [Running](https://github.com/liabru/matter-js/wiki/Running) and [Rendering](https://github.com/liabru/matter-js/wiki/Rendering) wiki pages, which show how to use your own game and rendering loops.
### Tutorials
See the list of [tutorials](https://github.com/liabru/matter-js/wiki/Tutorials).
### Examples
See the [examples](https://github.com/liabru/matter-js/tree/master/examples) directory which contains the source for all [demos](#demos).
There are even more examples on [codepen](https://codepen.io/collection/Fuagy/).
### Plugins
The engine can be extended through plugins, see these resources:
- [Using plugins](https://github.com/liabru/matter-js/wiki/Using-plugins)
- [Creating plugins](https://github.com/liabru/matter-js/wiki/Creating-plugins)
- [List of plugins](https://github.com/liabru/matter-js/wiki/List-of-plugins)
- [matter-plugin-boilerplate](https://github.com/liabru/matter-plugin-boilerplate)
### Documentation
See the [API Documentation](https://brm.io/matter-js/docs/) and the [wiki](https://github.com/liabru/matter-js/wiki)
### Building and Contributing
To build you must first install [node.js](https://nodejs.org/), then run
npm install
This will install the required build dependencies, then run
npm run dev
to spawn a development server. For information on contributing see [CONTRIBUTING.md](https://github.com/liabru/matter-js/blob/master/CONTRIBUTING.md).
### Changelog
To see what's new or changed in the latest version, see the [changelog](https://github.com/liabru/matter-js/blob/master/CHANGELOG.md).
### References
See the wiki page on [References](https://github.com/liabru/matter-js/wiki/References).
### License
Matter.js is licensed under [The MIT License (MIT)](https://opensource.org/licenses/MIT)
Copyright (c) 2014 Liam Brummitt
This license is also supplied with the release and source code.
As stated in the license, absolutely no warranty is provided.