Skip to content

Releases: evaera/matter

Matter 0.7.0

20 Dec 03:58
Compare
Choose a tag to compare

[0.7.0] 2023-12-19

Added

  • Created a debugger configuration Debugger.componentRefreshFrequency to change the unique component list's refresh frequency.

Changed

  • Change Matter.log to return nothing as expected.
  • Exported Matter object is now read only, which prevents invalid mutations to it.
  • Improve documentation for Matter.useEvent.
  • Systems with both after and priority defined will error.
  • Error message for cycles should be more descriptive.
  • Systems with dependencies should be scheduled after the system with the highest priority in it's "after" list.
  • Improve error message for when a component instance is passed where a component is expected, e.g world:remove(id, componentInstance()).
  • Improve implementation of the debugger's mouse hover feature, which now supports debugging the player's character model.

Fixed

  • Fix the debugger not showing a system's widgets properly when switching from one to another.
  • Fix slider debugger widget returning 0 when not being rendered.

Pull Requests

  • Tidy up analysis noise by @Anaminus in #27
  • Correct comment for _getStorageWithEntity by @noahwillcrow in #26
  • Fix broken link by @samcparker in #34
  • Fix typo in Replication.md by @rimuy in #36
  • Update Reconciliation Page for the new QueryChanged API by @Aloroid in #37
  • Correct typo in "Why ECS" docs in #42
  • Ensure exported matter object is read only in #41
  • Change Matter.log to return nothing as expected in #43
  • Improve docs for Matter.useEvent in #44
  • Update Rojo's version to 7.2.1 to mitigate attribute error by @Nidoxs in #47
  • Cleanup example game's codebase in #48
  • Improve error message when a component instance is accidentally passed instead of a component in #46
  • Debugger Appears Above Ingame UI by @ambergamefam in #49
  • Improve system scheduler logic by @metrowaii in #54
  • Sort component list in World Inspector by @benbrimeyer in #55
  • Prevented systems with undefined dependencies from being scheduled by @metrowaii in #57
  • Allow debugger states views to be toggled like systems by @benbrimeyer in #60
  • Replaced return statement with continue by @Fizzyhex in #61
  • Re-implement Mouse.Target for debugger mouse highlight by @jackTabsCode in #68
  • use ViewportPointToRay in mouse highlight implementation by @jackTabsCode in #74
  • Fix system widgets not appearing sometimes by @jackTabsCode in #75
  • Support functions in dummyHandles to support widget configs by @jackTabsCode in #76
  • Provide a debugger config for component refresh frequency by @jackTabsCode in #77

New Contributors

Full Changelog: v0.6.2...v0.7.0

Matter v0.6.2

23 Jul 02:34
Compare
Choose a tag to compare

[0.6.2] - 2022-07-22

Fixed

  • Debugger no longer interferes with queryChanged in order to display it in the debugger view. Previously, this caused the storage to get reset. This feature may return in the future.

Matter v0.6.1

10 Jul 19:48
Compare
Choose a tag to compare

[0.6.1] - 2022-07-10

Added

  • Added Matter.log, and a logs viewer per-system to the Matter debugger.
  • Added error logging and inspection to the Matter debugger.
  • Added Query inspection to the Matter debugger.

Fixed

  • Fixed bug with server-side debugger when game was in deferred events mode

Full Changelog: v0.6.0...v0.6.1

image
image
image

Matter v0.6.0

09 Jul 00:15
Compare
Choose a tag to compare

[0.6.0] - 2022-07-08

Changed

  • The first time you call queryChanged, all existing entities in the world that match the component are now returned as "new" change records. Previously, nothing was returned.
  • Improved Debugger with highlight selections and tooltips.
  • Matter.useEvent now supports events that have a Connect, connect, or an on method. Additionally, it also supports custom connection objects (returned by custom events), which have a Destroy or a Disconnect method, or are just a cleanup function.

Pull requests

  • Add caution tip for autoInitialize docs by @benbrimeyer in #23
  • Suggest compatible Plasma in debugger docs by @benbrimeyer in #22
  • Support custom events for matter.useEvent through duck typing by @bubshayz in #20

New Contributors

  • @benbrimeyer made their first contribution in #23
  • @bubshayz made their first contribution in #20

Full Changelog: v0.5.3...v0.6.0

Matter v0.5.3

05 Jul 07:21
Compare
Choose a tag to compare

[0.5.3] - 2022-07-05

image

Added

  • Added performance information to debugger
  • Add World inspector to debugger

Fixed

  • Fix confusing error when a system yields inside a plasma context

Full Changelog: v0.5.2...v0.5.3

Matter v0.5.2

02 Jul 03:12
Compare
Choose a tag to compare

[0.5.2] - 2022-07-01

Fixed

  • Fixed debugger panel not scrolling.
  • In the debugger panel, the module name is now used when function is not named.

Pull requests

  • Respect anonymous function names and functions defined in the system field. by @4igz in #19

New Contributors

  • @4igz made their first contribution in #19

Full Changelog: v0.5.1...v0.5.2

Matter v0.5.1

30 Jun 19:55
Compare
Choose a tag to compare

[0.5.1] - 2022-06030

Fixed

  • Fix custom debugger widgets not using the Plasma instance the user passed in.

Matter v0.5.0

30 Jun 09:22
Compare
Choose a tag to compare

[0.5.0] - 2022-06-30

This release adds the Matter debugger, which can be used to visually debug systems with UI widgets.

image

Added

  • Added Matter debugger.

Changed

  • Middleware now receive event name as a second parameter

Matter v0.4.0

25 Jun 08:10
Compare
Choose a tag to compare

[0.4.0] - 2022-06-25

Changed

  • Modifying the World while inside World:query can no longer cause iterator invalidation. All operations to World while inside a query are now safe. 🎉
    • If you aren't using Loop, you must call World:optimizeQueries periodically (e.g., every frame)
  • If a system stops calling queryChanged, its internal storage will now be cleaned up. It is no longer a requirement that a system calls queryChanged forever.
  • Matter.merge (an undocumented function) now only accepts two parameters.

Fixed

  • replaceSystem now correctly works when other systems reference a system being reloaded in their after table
  • If spawnAt is called with an entity ID that already exists, it now errors as expected.

Matter v0.3.0

23 Jun 01:24
Compare
Choose a tag to compare

[0.3.0] - 2022-06-22

This release adds support for saving and restoring World state, hot reloading, and client replication.

Saving and restoring World state

World now has an __iter metamethod which allows iteration over all entities in the World. This can be used to serialize the data however you want.

World now also has a method called spawnAt, which lets you spawn an entity with a specific entity ID. This can be used to restore all entities from a save file and ensure they still have the same ID on the other end.

Hot reloading

Hot reloading is now officially supported in Matter. The Matter example game supports hot reloading automatically. Check it out

ywXqBncg.mp4

Client replication

The Matter example game has been updated to support client replication.

Most of this was possible before this release, but it makes use of the ability to iterate over a World to send the initial payload to a client when they connect.

Added

  • Added World:spawnAt to spawn a new entity with a specified ID.
  • Added World:__iter to allow iteration over all entities in the world the world from a for loop.
  • Added Loop:evictSystem(system), which removes a previously-scheduled system from the Loop. Evicting a system also cleans up any storage from hooks. This is intended to be used for hot reloading. Dynamically loading and unloading systems for gameplay logic is not recommended.
  • Added Loop:replaceSystem(before, after), which replaces an older version of a system with a newer version of the system. Internal system storage (which is used by hooks) will be moved to be associated with the new system. This is intended to be used for hot reloading.
  • The Matter example game has been updated and adds support for both replication and hot reloading.

Changed

  • The first entity ID is now 1 instead of 0
  • Events that have no systems scheduled to run on them are no longer skipped upon calling Loop:begin.

Fixed

  • Old event listeners created by useEvent were not properly disconnected when the passed event changed after having been already created. The event parameter passed to useEvent is not intended to be dynamically changed, so an warning has been added when this happens.

Pull requests since the last release

New Contributors

Full Changelog: v0.2.0...v0.3.0