## ▲.● matter.js `0.20.0` Release notes for `0.20.0`. See the release [readme](https://github.com/liabru/matter-js/blob/0.20.0/README.md) for further information. ### Highlights ✺ - added support for high refresh rate displays with fixed timestep in `Matter.Runner` - added support for sub-stepping for higher quality simulations in `Matter.Runner` - changed to a fixed timestep by default in `Matter.Runner` - improved frame pacing and average performance up to ~6% (see [#1238](https://github.com/liabru/matter-js/pull/1238)) - reduced average memory usage up to ~30% (see [#1238](https://github.com/liabru/matter-js/pull/1238)) - reduced memory garbage collection - bug fixes and improvements see [changelog](https://github.com/liabru/matter-js/blob/0.20.0/CHANGELOG.md) ### Changes ✲ See the release [compare page](https://github.com/liabru/matter-js/compare/0.19.0...0.20.0) and the [changelog](https://github.com/liabru/matter-js/blob/0.20.0/CHANGELOG.md) for a detailed list of changes. ### Migration ⌲ `Matter.Runner` related changes [#1254](https://github.com/liabru/matter-js/pull/1254): - `Matter.Runner` now defaults to a fixed deterministic timestep and support for non-fixed timestep is removed - optionally set your performance budgets `runner.maxFrameTime` (see docs) - note that `Matter.Runner` can now call zero, one, or multiple engine updates and events per display frame (see docs) - if needed set up your polyfill for `window.requestAnimationFrame` - see `Matter.Runner` updated docs throughout Performance related changes [#1238](https://github.com/liabru/matter-js/pull/1238): - `Matter.Collision` use `collision.supportCount` instead of `collision.supports.length` for active support count - `Matter.Pair` use `pair.contacts` instead of `pair.activeContacts` - `Matter.Pair` use `pair.contactCount` instead of `pair.contacts.length` for active contact count - `Pair.id` format has changed ### Comparison ⎄ For more information see [comparison method](https://github.com/liabru/matter-js/pull/794). ```ocaml Output sample comparison estimates of 44 examples against previous release matter-js@0.19.0: Similarity 99.80% Overlap -1.92% Filesize +3.38% 81.58 KB airFriction · · avalanche ● · ballPool ● · bridge ● · car ● · catapult ● · chains ● · circleStack · · cloth ● · collisionFiltering ● · compositeManipulation ● · compound · · compoundStack ● · concave ● · constraints ● · doublePendulum · · events ● · friction · · gravity ● · gyro ● · manipulation ● ◆ mixed ● · newtonsCradle · · pyramid ● · ragdoll ● · raycasting ● · remove ● ◆ restitution · · rounded ● · sensors · · sleeping ● ◆ slingshot ● · softBody ● · sprites ● · stack · · staticFriction ● · stats ● · stress ● · stress2 ● · stress3 ● · stress4 ● · timescale ● · views ● · wreckingBall ● · where for the sample · no change detected ● extrinsics changed ◆ intrinsics changed ``` ### Contributors ♥︎ Many thanks to the [contributors](https://github.com/liabru/matter-js/compare/0.19.0...0.20.0) of this release, [past contributors](https://github.com/liabru/matter-js/graphs/contributors) as well those involved in the [community](https://github.com/liabru/matter-js/issues) for your input and support. --- ## ▲.● matter.js `0.19.0` Release notes for `0.19.0`. See the release [readme](https://github.com/liabru/matter-js/blob/0.19.0/README.md) for further information. ### Highlights ✺ - Changed `Body.setAngularVelocity` and `Body.setVelocity` to be timestep independent - Improved similarity of results between different timesteps based on `60hz` as a baseline - Added timestep independent `Body.setSpeed`, `Body.setAngularSpeed`, `Body.getSpeed`, `Body.getVelocity`, `Body.getAngularVelocity` - Added optional `updateVelocity` argument to `Body.setPosition`, `Body.setAngle`, `Body.translate`, `Body.rotate` - Added extended documentation for `Body.applyForce` - Moved time correction feature from `Engine.update` to be built-in to `Matter.Body` - Improved [documentation](https://brm.io/matter-js/docs/) pages ### Changes ✲ See the release [compare page](https://github.com/liabru/matter-js/compare/0.18.0...0.19.0) and the [changelog](https://github.com/liabru/matter-js/blob/0.19.0/CHANGELOG.md) for a more detailed list of changes. ### Migration ⌲ See [PR #777](https://github.com/liabru/matter-js/pull/777#issue-487893963) for related changes and notes useful for migration. ### Comparison ⎄ For more information see [comparison method](https://github.com/liabru/matter-js/pull/794). ```ocaml Output comparison of 43 examples at 60hz against previous release matter-js@0.18.0 Behaviour 100.00% Similarity 100.00% Overlap +0.00% Performance -0.80% Memory +0.05% Filesize +1.67% 78.97 KB airFriction · · avalanche · · ballPool · · bridge · · car · · catapult · · chains · · circleStack · · cloth · · collisionFiltering · · compositeManipulation · · compound · · compoundStack · · concave · · constraints · · doublePendulum · · events · · friction · · gravity · · gyro · · manipulation · · mixed · · newtonsCradle · · pyramid · · ragdoll · · raycasting · · remove · · restitution · · rounded · · sensors · · sleeping · ◆ slingshot · · softBody · · sprites · · stack · · staticFriction · · stats · · stress · · stress2 · · stress3 · · timescale · · views · · wreckingBall · · where · no change ● extrinsics changed ◆ intrinsics changed ▶ code -n -d test/__compare__/examples-build.json test/__compare__/examples-dev.json ``` ### Contributors ♥︎ Many thanks to the [contributors](https://github.com/liabru/matter-js/compare/0.18.0...0.19.0) of this release, [past contributors](https://github.com/liabru/matter-js/graphs/contributors) as well those involved in the [community](https://github.com/liabru/matter-js/issues) for your input and support. --- ## ▲.● matter.js `0.18.0` Release notes for `0.18.0`. See the release [readme](https://github.com/liabru/matter-js/blob/0.18.0/README.md) for further information. ### Highlights ✺ - **Up to ~40% performance improvement (on average measured over all examples, in Node on a Mac Air M1)** - Replaces `Matter.Grid` with a faster and more efficient broadphase in `Matter.Detector` - Reduced memory usage and garbage collection - Resolves issues in `Matter.SAT` related to collision reuse - Removes performance issues from `Matter.Grid` - Improved collision accuracy - Improved API and docs for collision modules - Improved [documentation](https://brm.io/matter-js/docs/) pages - Added note about avoiding Webpack [performance problems](https://github.com/liabru/matter-js/blob/master/README.md#install) ### Changes ✲ See the release [compare page](https://github.com/liabru/matter-js/compare/0.17.1...0.18.0) and the [changelog](https://github.com/liabru/matter-js/blob/0.18.0/CHANGELOG.md) for a detailed list of changes. ### Migration ⌲ - Behaviour and similarity is in practice the same (a fractional difference from improved accuracy) - API is the same other than: - [Matter.Detector](https://brm.io/matter-js/docs/classes/Detector.html) replaces [Matter.Grid](https://brm.io/matter-js/docs/classes/Grid.html) (which is now deprecated but will remain for a short term) - [render.options.showBroadphase](https://brm.io/matter-js/docs/classes/Render.html#property_options.showBroadphase) is deprecated (no longer implemented) - [Matter.SAT](https://brm.io/matter-js/docs/classes/SAT.html) is renamed [Matter.Collision](https://brm.io/matter-js/docs/classes/Collision.html) - [Matter.SAT.collides](https://brm.io/matter-js/docs/classes/SAT.html#method_collides) is now [Matter.Collision.collides](https://brm.io/matter-js/docs/classes/Collision.html#method_collides) with a slightly different set of arguments ### Comparison ⎄ Differences in behaviour, quality and performance against the previous release `0.17.1`. For more information see [comparison method](https://github.com/liabru/matter-js/pull/794). ```ocaml Output comparison of 43 examples against previous release matter-js@0.17.1 Behaviour 99.99% Similarity 99.98% Overlap -0.00% Performance +40.62% Memory -6.18% Filesize -0.16% 77.73 KB airFriction · · avalanche ● · ballPool · · bridge · · car · · catapult · · chains · · circleStack · · cloth · · collisionFiltering · · compositeManipulation ● · compound · · compoundStack · · concave · · constraints ● · doublePendulum · · events · · friction · · gravity · · gyro · · manipulation · ◆ mixed · · newtonsCradle · · pyramid · · ragdoll · · raycasting · · remove · · restitution · · rounded · · sensors · · sleeping · ◆ slingshot · · softBody · · sprites · · stack · · staticFriction · · stats · · stress · · stress2 · · stress3 · · timescale · · views · · wreckingBall · · where · no change ● extrinsics changed ◆ intrinsics changed ``` ### Contributors ♥︎ Many thanks to the [contributors](https://github.com/liabru/matter-js/compare/0.17.1...0.18.0) of this release, [past contributors](https://github.com/liabru/matter-js/graphs/contributors) as well those involved in the [community](https://github.com/liabru/matter-js/issues) for your input and support. --- ## ▲.● matter.js `0.17.0` Release notes for `0.17.0`. See the release [readme](https://github.com/liabru/matter-js/blob/0.17.0/README.md) for further information. ### Highlights ✺ - Added performance and stats monitoring overlays to `Matter.Render` - See the [stats demo](https://brm.io/matter-js/demo/#stats) or enable [render.options.showPerformance](https://brm.io/matter-js/docs/classes/Render.html#property_options.showPerformance) and [render.options.showStats](https://brm.io/matter-js/docs/classes/Render.html#property_options.showStats) - Stats shown include - render frequency (e.g. `60 fps`) - engine delta time (e.g. `16.66ms`) - engine execution duration (e.g. `5.00ms`) - render execution duration (e.g.` 0.40ms`) - effective play speed (e.g. `1.00x` is real-time) - various other engine internal stats for debugging - Improved [documentation](https://brm.io/matter-js/docs/) pages - Added [Common.setDecomp](https://brm.io/matter-js/docs/classes/Common.html#method_setDecomp) and [Common.getDecomp](https://brm.io/matter-js/docs/classes/Common.html#method_getDecomp) to fix [bundler issues](https://github.com/liabru/matter-js/issues/981) - Added docs for all [Matter.Render options](https://brm.io/matter-js/docs/classes/Render.html#properties) - Migrated usage of `Matter.World` over to `Matter.Composite` (more info in [docs](https://brm.io/matter-js/docs/classes/World.html)) - Migrated, deprecated and removed various old functionality (see the [changelog](https://github.com/liabru/matter-js/blob/0.17.0/CHANGELOG.md) for details) ### Changes ✲ See the release [compare page](https://github.com/liabru/matter-js/compare/0.16.1...0.17.0) and the [changelog](https://github.com/liabru/matter-js/blob/0.17.0/CHANGELOG.md) for a detailed list of changes. ### Comparison ⎄ Differences in behaviour, quality and performance against the previous release `0.16.1`. For more information see [comparison method](https://github.com/liabru/matter-js/pull/794). ```ocaml Output comparison of 37 examples against previous release matter-js@0.16.1 Similarity 100% Performance +0.00% Overlap +0.00% airFriction · · avalanche · · ballPool · · bridge · · broadphase · · car · · catapult · · chains · · circleStack · · cloth · · collisionFiltering · · compound · · compoundStack · · constraints · · events · · friction · · gyro · · manipulation · · mixed · · newtonsCradle · · pyramid · · ragdoll · · restitution · · rounded · · sensors · · sleeping · · slingshot · · softBody · · sprites · · stack · · staticFriction · · stats · · stress · · stress2 · · timescale · · views · · wreckingBall · · where · no change ● extrinsics changed ◆ intrinsics changed ``` ### Contributors ♥︎ Many thanks to the [contributors](https://github.com/liabru/matter-js/compare/0.16.1...0.17.0) of this release, [past contributors](https://github.com/liabru/matter-js/graphs/contributors) as well those involved in the [community](https://github.com/liabru/matter-js/issues) for your input and support. --- ## ▲.● matter.js `0.16.0` Release notes for `0.16.0`. See the release [readme](https://github.com/liabru/matter-js/blob/0.16.0/README.md) for further information. ### Highlights ✺ - Changed external require method for `poly-decomp` ([882e07c](https://github.com/liabru/matter-js/commit/882e07c)) - Improved `Bodies.fromVertices` decomposition quality using `removeDuplicatePoints` ([#639](https://github.com/liabru/matter-js/pull/639)) - Added support for `>x.x.x` and `>=x.x.x` semver ranges in plugins ([0792716](https://github.com/liabru/matter-js/commit/0792716)) - Changed demo example select background colour for Windows ([matter-tools #5](https://github.com/liabru/matter-tools/pull/5)) - Updated demo to use latest [matter-tools](https://github.com/liabru/matter-tools) ([#33e8fe8](https://github.com/liabru/matter-js/commit/33e8fe8)) - Updated SVG and terrain examples to use `fetch` ([5551cd5](https://github.com/liabru/matter-js/commit/5551cd5)) ### Changes ✲ See the release [compare page](https://github.com/liabru/matter-js/compare/0.15.0...0.16.0) and the [changelog](https://github.com/liabru/matter-js/blob/0.16.0/CHANGELOG.md) for a detailed list of changes. ### Comparison ⎄ Differences in behaviour, quality and performance against the previous release `0.15.0`. For more information see [comparison method](https://github.com/liabru/matter-js/pull/794). ```ocaml Output comparison of 41 examples against matter-js@0.15.0 build on last run Similarity 100% Performance +0.00% Overlap +0.00% airFriction · · avalanche · · ballPool · · bridge · · broadphase · · car · · catapult · · chains · · circleStack · · cloth · · collisionFiltering · · compositeManipulation · · compound · · compoundStack · · concave · · constraints · · doublePendulum · · events · · friction · · gravity · · gyro · · manipulation · · mixed · · newtonsCradle · · pyramid · · ragdoll · · raycasting · · restitution · · rounded · · sensors · · sleeping · · slingshot · · softBody · · sprites · · stack · · staticFriction · · stress · · stress2 · · timescale · · views · · wreckingBall · · where · no change ● extrinsics changed ◆ intrinsics changed ``` ### Contributors ♥︎ Many thanks to the [contributors](https://github.com/liabru/matter-js/compare/0.15.0...0.16.0) of this release, [past contributors](https://github.com/liabru/matter-js/graphs/contributors) as well those involved in the [community](https://github.com/liabru/matter-js/issues) for your input and support. --- ## ▲.● matter.js `0.15.0` Release notes for `0.15.0`. See the release [readme](https://github.com/liabru/matter-js/blob/0.15.0/README.md) for further information. ### Highlights ✺ - __Optimised performance up to ~30% boost vs. `0.14.2`__ ([#528](https://github.com/liabru/matter-js/pull/528)) ([#522](https://github.com/liabru/matter-js/pull/522)) ([#553](https://github.com/liabru/matter-js/pull/553)) - Added `Body.setCentre` ([2ec247b](https://github.com/liabru/matter-js/commit/2ec247b)) - Added `Constraint.pointAWorld` and `Constraint.pointBWorld` ([3c32969](https://github.com/liabru/matter-js/commit/3c32969)) - Changed default colour scheme ([d258411](https://github.com/liabru/matter-js/commit/d258411)) ([6dd5ec5](https://github.com/liabru/matter-js/commit/6dd5ec5)) - Fixed issues with decomp require ([0af1645](https://github.com/liabru/matter-js/commit/0af1645)) - Fixed issues with render pixel ratio ([d577477](https://github.com/liabru/matter-js/commit/d577477)) ### Changes ✲ See the release [compare page](https://github.com/liabru/matter-js/compare/0.14.2...0.15.0) and the [changelog](https://github.com/liabru/matter-js/blob/0.15.0/CHANGELOG.md) for a detailed list of all changes. ### Comparison ⎄ Differences in behaviour, quality and performance against the previous release `0.14.2`. For more information see [comparison method](https://github.com/liabru/matter-js/pull/794). ```ocaml Output comparison of 41 examples against matter-js@0.14.2 build on last run Similarity 100% Performance +33.6% Overlap +0.00% airFriction · · avalanche · · ballPool · · bridge · · broadphase · · car · · catapult · · chains · · circleStack · · cloth · · collisionFiltering · · compositeManipulation · · compound · · compoundStack · · concave · · constraints · · doublePendulum · · events · · friction · · gravity · · gyro · · manipulation · · mixed · · newtonsCradle · · pyramid · · ragdoll · · raycasting · · restitution · · rounded · · sensors · · sleeping · · slingshot · · softBody · · sprites · · stack · · staticFriction · · stress · · stress2 · · timescale · · views · · wreckingBall · · where · no change ● extrinsics changed ◆ intrinsics changed ``` ### Contributors ♥︎ Many thanks to the [contributors](https://github.com/liabru/matter-js/compare/0.14.2...0.15.0) of this release, [past contributors](https://github.com/liabru/matter-js/graphs/contributors) as well those involved in the [community](https://github.com/liabru/matter-js/issues) for your input and support.