From e81bc8698740eb04121b0948a99006a71a9f307d Mon Sep 17 00:00:00 2001 From: Lukas Klingsbo Date: Sun, 19 Jul 2026 18:19:27 +0200 Subject: [PATCH 1/3] chore(release): publish packages - flame@1.38.0 - flame_3d@0.3.0 - flame_behaviors@1.4.0 - flame_bloc@1.12.24 - flame_steering_behaviors@0.2.2+6 - flame_test@2.3.0 - flame_tiled@3.1.2 - flame_behavior_tree@0.1.5+5 - flame_gamepads@0.1.2 - flame_isolate@0.6.3+23 - flame_texturepacker@5.1.2 - flame_sprite_fusion@0.2.4+2 - flame_fire_atlas@1.8.18 - flame_audio@2.12.2 - flame_spine@0.3.1+6 - flame_kenney_xml@0.1.3+2 - flame_lottie@0.4.3+23 - flame_markdown@0.2.5+16 - flame_console@0.1.4 - flame_rive@1.11.2 - flame_forge2d@0.19.3+7 - flame_noise@0.3.3+23 - flame_riverpod@5.5.5 - flame_svg@1.12.2 - flame_typled@0.1.2 - flame_network_assets@0.3.4+23 --- CHANGELOG.md | 119 ++++++++++++++++++ doc/flame/examples/pubspec.yaml | 4 +- doc/tutorials/klondike/app/pubspec.yaml | 2 +- doc/tutorials/platformer/app/pubspec.yaml | 2 +- doc/tutorials/space_shooter/app/pubspec.yaml | 2 +- examples/games/crystal_ball/pubspec.yaml | 2 +- examples/games/padracing/pubspec.yaml | 4 +- examples/games/rogue_shooter/pubspec.yaml | 2 +- examples/games/trex/pubspec.yaml | 2 +- examples/pubspec.yaml | 18 +-- packages/flame/CHANGELOG.md | 23 ++++ packages/flame/example/pubspec.yaml | 2 +- packages/flame/pubspec.yaml | 4 +- packages/flame_3d/CHANGELOG.md | 12 ++ packages/flame_3d/example/pubspec.yaml | 6 +- packages/flame_3d/pubspec.yaml | 6 +- packages/flame_audio/CHANGELOG.md | 4 + packages/flame_audio/example/pubspec.yaml | 4 +- packages/flame_audio/pubspec.yaml | 4 +- packages/flame_behavior_tree/CHANGELOG.md | 4 + .../flame_behavior_tree/example/pubspec.yaml | 4 +- packages/flame_behavior_tree/pubspec.yaml | 6 +- packages/flame_behaviors/CHANGELOG.md | 4 + packages/flame_behaviors/example/pubspec.yaml | 4 +- packages/flame_behaviors/pubspec.yaml | 6 +- packages/flame_bloc/CHANGELOG.md | 4 + packages/flame_bloc/example/pubspec.yaml | 4 +- packages/flame_bloc/pubspec.yaml | 6 +- packages/flame_console/CHANGELOG.md | 4 + packages/flame_console/example/pubspec.yaml | 4 +- packages/flame_console/pubspec.yaml | 6 +- packages/flame_devtools/pubspec.yaml | 2 +- packages/flame_fire_atlas/CHANGELOG.md | 4 + .../flame_fire_atlas/example/pubspec.yaml | 4 +- packages/flame_fire_atlas/pubspec.yaml | 4 +- packages/flame_forge2d/CHANGELOG.md | 4 + packages/flame_forge2d/example/pubspec.yaml | 4 +- packages/flame_forge2d/pubspec.yaml | 6 +- packages/flame_gamepads/CHANGELOG.md | 4 + packages/flame_gamepads/example/pubspec.yaml | 4 +- packages/flame_gamepads/pubspec.yaml | 4 +- packages/flame_isolate/CHANGELOG.md | 4 + packages/flame_isolate/example/pubspec.yaml | 4 +- packages/flame_isolate/pubspec.yaml | 6 +- packages/flame_jenny/pubspec.yaml | 2 +- packages/flame_kenney_xml/CHANGELOG.md | 4 + .../flame_kenney_xml/example/pubspec.yaml | 4 +- packages/flame_kenney_xml/pubspec.yaml | 4 +- packages/flame_lottie/CHANGELOG.md | 4 + packages/flame_lottie/example/pubspec.yaml | 4 +- packages/flame_lottie/pubspec.yaml | 6 +- packages/flame_markdown/CHANGELOG.md | 4 + packages/flame_markdown/example/pubspec.yaml | 4 +- packages/flame_markdown/pubspec.yaml | 4 +- packages/flame_network_assets/CHANGELOG.md | 4 + .../flame_network_assets/example/pubspec.yaml | 4 +- packages/flame_network_assets/pubspec.yaml | 4 +- packages/flame_noise/CHANGELOG.md | 4 + packages/flame_noise/pubspec.yaml | 6 +- packages/flame_rive/CHANGELOG.md | 4 + packages/flame_rive/example/pubspec.yaml | 4 +- packages/flame_rive/pubspec.yaml | 6 +- packages/flame_riverpod/CHANGELOG.md | 4 + packages/flame_riverpod/example/pubspec.yaml | 4 +- packages/flame_riverpod/pubspec.yaml | 4 +- packages/flame_spine/CHANGELOG.md | 4 + packages/flame_spine/example/pubspec.yaml | 4 +- packages/flame_spine/pubspec.yaml | 4 +- packages/flame_sprite_fusion/CHANGELOG.md | 4 + .../flame_sprite_fusion/example/pubspec.yaml | 4 +- packages/flame_sprite_fusion/pubspec.yaml | 6 +- .../flame_steering_behaviors/CHANGELOG.md | 4 + .../example/pubspec.yaml | 8 +- .../flame_steering_behaviors/pubspec.yaml | 8 +- packages/flame_studio/pubspec.yaml | 2 +- packages/flame_svg/CHANGELOG.md | 4 + packages/flame_svg/example/pubspec.yaml | 4 +- packages/flame_svg/pubspec.yaml | 4 +- packages/flame_test/CHANGELOG.md | 7 ++ packages/flame_test/example/pubspec.yaml | 4 +- packages/flame_test/pubspec.yaml | 4 +- packages/flame_texturepacker/CHANGELOG.md | 4 + .../flame_texturepacker/example/pubspec.yaml | 4 +- packages/flame_texturepacker/pubspec.yaml | 4 +- packages/flame_tiled/CHANGELOG.md | 4 + packages/flame_tiled/example/pubspec.yaml | 4 +- packages/flame_tiled/pubspec.yaml | 4 +- packages/flame_typled/CHANGELOG.md | 4 + packages/flame_typled/example/pubspec.yaml | 4 +- packages/flame_typled/pubspec.yaml | 4 +- 90 files changed, 392 insertions(+), 139 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c00f20a260b..fe9a62c8ded 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,125 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 2026-07-19 + +### Changes + +--- + +Packages with breaking changes: + + - [`flame` - `v1.38.0`](#flame---v1380) + - [`flame_3d` - `v0.3.0`](#flame_3d---v030) + +Packages with other changes: + + - [`flame_behaviors` - `v1.4.0`](#flame_behaviors---v140) + - [`flame_bloc` - `v1.12.24`](#flame_bloc---v11224) + - [`flame_steering_behaviors` - `v0.2.2+6`](#flame_steering_behaviors---v0226) + - [`flame_test` - `v2.3.0`](#flame_test---v230) + - [`flame_tiled` - `v3.1.2`](#flame_tiled---v312) + - [`flame_behavior_tree` - `v0.1.5+5`](#flame_behavior_tree---v0155) + - [`flame_gamepads` - `v0.1.2`](#flame_gamepads---v012) + - [`flame_isolate` - `v0.6.3+23`](#flame_isolate---v06323) + - [`flame_texturepacker` - `v5.1.2`](#flame_texturepacker---v512) + - [`flame_sprite_fusion` - `v0.2.4+2`](#flame_sprite_fusion---v0242) + - [`flame_fire_atlas` - `v1.8.18`](#flame_fire_atlas---v1818) + - [`flame_audio` - `v2.12.2`](#flame_audio---v2122) + - [`flame_spine` - `v0.3.1+6`](#flame_spine---v0316) + - [`flame_kenney_xml` - `v0.1.3+2`](#flame_kenney_xml---v0132) + - [`flame_lottie` - `v0.4.3+23`](#flame_lottie---v04323) + - [`flame_markdown` - `v0.2.5+16`](#flame_markdown---v02516) + - [`flame_console` - `v0.1.4`](#flame_console---v014) + - [`flame_rive` - `v1.11.2`](#flame_rive---v1112) + - [`flame_forge2d` - `v0.19.3+7`](#flame_forge2d---v01937) + - [`flame_noise` - `v0.3.3+23`](#flame_noise---v03323) + - [`flame_riverpod` - `v5.5.5`](#flame_riverpod---v555) + - [`flame_svg` - `v1.12.2`](#flame_svg---v1122) + - [`flame_typled` - `v0.1.2`](#flame_typled---v012) + - [`flame_network_assets` - `v0.3.4+23`](#flame_network_assets---v03423) + +Packages with dependency updates only: + +> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project. + + - `flame_behavior_tree` - `v0.1.5+5` + - `flame_gamepads` - `v0.1.2` + - `flame_isolate` - `v0.6.3+23` + - `flame_texturepacker` - `v5.1.2` + - `flame_sprite_fusion` - `v0.2.4+2` + - `flame_fire_atlas` - `v1.8.18` + - `flame_audio` - `v2.12.2` + - `flame_spine` - `v0.3.1+6` + - `flame_kenney_xml` - `v0.1.3+2` + - `flame_lottie` - `v0.4.3+23` + - `flame_markdown` - `v0.2.5+16` + - `flame_console` - `v0.1.4` + - `flame_rive` - `v1.11.2` + - `flame_forge2d` - `v0.19.3+7` + - `flame_noise` - `v0.3.3+23` + - `flame_riverpod` - `v5.5.5` + - `flame_svg` - `v1.12.2` + - `flame_typled` - `v0.1.2` + - `flame_network_assets` - `v0.3.4+23` + +--- + +#### `flame` - `v1.38.0` + + - **REFACTOR**: Make GestureDetectorBuilder and detector/callback registering more resilient ([#3900](https://github.com/flame-engine/flame/issues/3900)). ([84b77a02](https://github.com/flame-engine/flame/commit/84b77a0279d826e24a10c48dfc4c4fec3c9f7bd4)) + - **FIX**: Workaround for the TextBoxComponent entering an endless loop ([#3939](https://github.com/flame-engine/flame/issues/3939)). ([0b42aa00](https://github.com/flame-engine/flame/commit/0b42aa000f0280b041991c12d54309feda10ed51)) + - **FIX**: HasWorldReference.onRemove() should call super.onRemove() ([#3920](https://github.com/flame-engine/flame/issues/3920)). ([412702c7](https://github.com/flame-engine/flame/commit/412702c7a8ae2d969db002eb355b3359406929d9)) + - **FIX**: Fix flaky Transform2D random round-trip test tolerance ([#3917](https://github.com/flame-engine/flame/issues/3917)). ([f2fb4079](https://github.com/flame-engine/flame/commit/f2fb4079ee6ab6b44116c4e5d1862df086251054)) + - **FIX**: Guard against double-dispose of TextBoxComponent cached image ([#3909](https://github.com/flame-engine/flame/issues/3909)). ([271288fb](https://github.com/flame-engine/flame/commit/271288fb8bd9bb10348798f9ea1d31b6b3e0a0be)) + - **FIX**: Fix raycasting "pass-through" collision inaccuracies with better modelling ([#3906](https://github.com/flame-engine/flame/issues/3906)). ([6337980d](https://github.com/flame-engine/flame/commit/6337980d09d5a5c8406389a9a7fa0a4a38f6e434)) + - **FIX**: Fix collision prospect checking to be fully reliable ([#3905](https://github.com/flame-engine/flame/issues/3905)). ([d5a21a72](https://github.com/flame-engine/flame/commit/d5a21a72deccf1a7cd31007e6bc3e89e93875a76)) + - **FIX**: Prevent drag updates from reaching removed components ([#3901](https://github.com/flame-engine/flame/issues/3901)). ([3d58c9ac](https://github.com/flame-engine/flame/commit/3d58c9ac5b6cf6d6e85cf59c5a8f9c6d234fe60f)) + - **FEAT**: Add displace extension to Rect ([#3943](https://github.com/flame-engine/flame/issues/3943)). ([d8e4db8b](https://github.com/flame-engine/flame/commit/d8e4db8b97da4c2d793751c73bca373a89c41ee8)) + - **FEAT**: OpacityEffect support on text components ([#3940](https://github.com/flame-engine/flame/issues/3940)). ([749c73a4](https://github.com/flame-engine/flame/commit/749c73a45be5978cca53ce3737fe2d2382289306)) + - **FEAT**: Expose brighten and darken helpers on palette ([#3936](https://github.com/flame-engine/flame/issues/3936)). ([953430e1](https://github.com/flame-engine/flame/commit/953430e177ce5e43f370fdd0f5c199f3e793e30e)) + - **FEAT**: Adding bleed option to SpriteBatch ([#3871](https://github.com/flame-engine/flame/issues/3871)). ([2c4a6d5c](https://github.com/flame-engine/flame/commit/2c4a6d5cf9962acf967a86ebdf6b3e848acdfdb2)) + - **FEAT**: Add regular polygon constructors to PolygonComponent and PolygonHitbox ([#3891](https://github.com/flame-engine/flame/issues/3891)). ([0d91f0f8](https://github.com/flame-engine/flame/commit/0d91f0f8d9350940421bc658623f62a899f1af50)) + - **FEAT**: Implement TertiaryTapCallbacks on new event system ([#3899](https://github.com/flame-engine/flame/issues/3899)). ([933395e2](https://github.com/flame-engine/flame/commit/933395e233bf8a84aff435352054cd357c6acfa2)) + - **FEAT**: Implement LongPressCallbacks on new event system ([#3896](https://github.com/flame-engine/flame/issues/3896)). ([8ee838c4](https://github.com/flame-engine/flame/commit/8ee838c415eb8c18653fe759fdf0086ab421da35)) + - **FEAT**: Implement ScrollCallbacks on new event system ([#3892](https://github.com/flame-engine/flame/issues/3892)). ([d0010032](https://github.com/flame-engine/flame/commit/d0010032d7f94680a1fab1cd5b36dc6c69d6dba9)) + - **BREAKING** **FIX**: Add HoverCallbacks.onHoverCancel for press-while-hovering ([#3912](https://github.com/flame-engine/flame/issues/3912)). ([ab354fb3](https://github.com/flame-engine/flame/commit/ab354fb37b26e4f5d6398b57a3300a9735fdcdef)) + - **BREAKING** **FEAT**: Update scale event with custom recognizer ([#3782](https://github.com/flame-engine/flame/issues/3782)). ([050984b7](https://github.com/flame-engine/flame/commit/050984b72232d5cf83f0b462b293ced80061b87e)) + +#### `flame_3d` - `v0.3.0` + + - **REFACTOR**(flame_3d): Abstract GPU implementation away for future proofing different backends ([#3928](https://github.com/flame-engine/flame/issues/3928)). ([f625173d](https://github.com/flame-engine/flame/commit/f625173d2b3ab2685b7b759c213a675b969af432)) + - **REFACTOR**(flame_3d): Shader generation now supports `#include` ([#3924](https://github.com/flame-engine/flame/issues/3924)). ([2be34f8e](https://github.com/flame-engine/flame/commit/2be34f8e780abcc2737c1dbcdf4b12cbd835352f)) + - **FEAT**(flame_3d): Add experimental `web` support using `webgpu` backend ([#3930](https://github.com/flame-engine/flame/issues/3930)). ([f21c5a8a](https://github.com/flame-engine/flame/commit/f21c5a8a5a08f973bd149aa40f1fc87ec160936b)) + - **FEAT**(flame_3d): Expose mesh information as read-only ([#3927](https://github.com/flame-engine/flame/issues/3927)). ([c5c3e662](https://github.com/flame-engine/flame/commit/c5c3e662dc434ec28882ea1fe284159a85517cf3)) + - **FEAT**(flame_3d): Add `UnlitMaterial` support ([#3914](https://github.com/flame-engine/flame/issues/3914)). ([9c88ff8c](https://github.com/flame-engine/flame/commit/9c88ff8cd9f2e6d351592eecf6156940c0361dd9)) + - **BREAKING** **FIX**(flame_3d): Fix material on `Line3D` ([#3916](https://github.com/flame-engine/flame/issues/3916)). ([f6fc6104](https://github.com/flame-engine/flame/commit/f6fc61042728c89c756077ba32071cec30d9bd8f)) + - **BREAKING** **FEAT**(flame_3d): Introduce `RenderContext` to make `GraphicsDevice` focused ([#3872](https://github.com/flame-engine/flame/issues/3872)). ([4338c624](https://github.com/flame-engine/flame/commit/4338c624da5b17e73a88fcb260dca5af14fc5a7f)) + +#### `flame_behaviors` - `v1.4.0` + + - **FEAT**(flame_behaviors): Add ScreenCollisionBehavior ([#3910](https://github.com/flame-engine/flame/issues/3910)). ([48894135](https://github.com/flame-engine/flame/commit/48894135587218690f7faa7382ba24d45658e235)) + +#### `flame_bloc` - `v1.12.24` + + - **FIX**: Bloc instance was null on initial state ([#3921](https://github.com/flame-engine/flame/issues/3921)). ([8adeea69](https://github.com/flame-engine/flame/commit/8adeea69764002e763a4a9236945c2b8f57a8a3b)) + +#### `flame_steering_behaviors` - `v0.2.2+6` + + - **FEAT**(flame_behaviors): Add ScreenCollisionBehavior ([#3910](https://github.com/flame-engine/flame/issues/3910)). ([48894135](https://github.com/flame-engine/flame/commit/48894135587218690f7faa7382ba24d45658e235)) + +#### `flame_test` - `v2.3.0` + + - **FEAT**: OpacityEffect support on text components ([#3940](https://github.com/flame-engine/flame/issues/3940)). ([749c73a4](https://github.com/flame-engine/flame/commit/749c73a45be5978cca53ce3737fe2d2382289306)) + - **FEAT**: Implement TertiaryTapCallbacks on new event system ([#3899](https://github.com/flame-engine/flame/issues/3899)). ([933395e2](https://github.com/flame-engine/flame/commit/933395e233bf8a84aff435352054cd357c6acfa2)) + - **FEAT**: Implement LongPressCallbacks on new event system ([#3896](https://github.com/flame-engine/flame/issues/3896)). ([8ee838c4](https://github.com/flame-engine/flame/commit/8ee838c415eb8c18653fe759fdf0086ab421da35)) + - **FEAT**: Implement ScrollCallbacks on new event system ([#3892](https://github.com/flame-engine/flame/issues/3892)). ([d0010032](https://github.com/flame-engine/flame/commit/d0010032d7f94680a1fab1cd5b36dc6c69d6dba9)) + +#### `flame_tiled` - `v3.1.2` + + - **FIX**(flame_tiled): Anchor oversized orthogonal tiles at bottom-left of cell ([#3923](https://github.com/flame-engine/flame/issues/3923)). ([4c775db0](https://github.com/flame-engine/flame/commit/4c775db08ffc4357420131251510bdbf71585948)) + + ## 2026-04-01 ### Changes diff --git a/doc/flame/examples/pubspec.yaml b/doc/flame/examples/pubspec.yaml index 374f6c3b4e1..7bad2a6634b 100644 --- a/doc/flame/examples/pubspec.yaml +++ b/doc/flame/examples/pubspec.yaml @@ -9,8 +9,8 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 - flame_rive: ^1.11.1 + flame: ^1.38.0 + flame_rive: ^1.11.2 flutter: sdk: flutter flutter_shaders: diff --git a/doc/tutorials/klondike/app/pubspec.yaml b/doc/tutorials/klondike/app/pubspec.yaml index f4a14c613d4..fd58a4aacc3 100644 --- a/doc/tutorials/klondike/app/pubspec.yaml +++ b/doc/tutorials/klondike/app/pubspec.yaml @@ -8,7 +8,7 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter web: ^1.1.0 diff --git a/doc/tutorials/platformer/app/pubspec.yaml b/doc/tutorials/platformer/app/pubspec.yaml index 24748bb0e72..a39b4ab9170 100644 --- a/doc/tutorials/platformer/app/pubspec.yaml +++ b/doc/tutorials/platformer/app/pubspec.yaml @@ -9,7 +9,7 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter diff --git a/doc/tutorials/space_shooter/app/pubspec.yaml b/doc/tutorials/space_shooter/app/pubspec.yaml index d6913bea703..36079c9ed3c 100644 --- a/doc/tutorials/space_shooter/app/pubspec.yaml +++ b/doc/tutorials/space_shooter/app/pubspec.yaml @@ -10,7 +10,7 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter web: ^1.1.0 diff --git a/examples/games/crystal_ball/pubspec.yaml b/examples/games/crystal_ball/pubspec.yaml index 1f5f9f79feb..029f0a2ba68 100644 --- a/examples/games/crystal_ball/pubspec.yaml +++ b/examples/games/crystal_ball/pubspec.yaml @@ -9,7 +9,7 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter diff --git a/examples/games/padracing/pubspec.yaml b/examples/games/padracing/pubspec.yaml index 3789b82debf..3d193792806 100644 --- a/examples/games/padracing/pubspec.yaml +++ b/examples/games/padracing/pubspec.yaml @@ -9,8 +9,8 @@ environment: dependencies: collection: ^1.17.1 - flame: ^1.37.0 - flame_forge2d: ^0.19.2+6 + flame: ^1.38.0 + flame_forge2d: ^0.19.3+7 flutter: sdk: flutter google_fonts: ^8.0.2 diff --git a/examples/games/rogue_shooter/pubspec.yaml b/examples/games/rogue_shooter/pubspec.yaml index cf736486d26..8c9be32259b 100644 --- a/examples/games/rogue_shooter/pubspec.yaml +++ b/examples/games/rogue_shooter/pubspec.yaml @@ -11,7 +11,7 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter diff --git a/examples/games/trex/pubspec.yaml b/examples/games/trex/pubspec.yaml index 8902f7fbf4b..56993ac6fda 100644 --- a/examples/games/trex/pubspec.yaml +++ b/examples/games/trex/pubspec.yaml @@ -12,7 +12,7 @@ environment: dependencies: collection: ^1.16.0 - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter diff --git a/examples/pubspec.yaml b/examples/pubspec.yaml index 2846447764e..90cfe0a0f3e 100644 --- a/examples/pubspec.yaml +++ b/examples/pubspec.yaml @@ -13,15 +13,15 @@ environment: dependencies: crystal_ball: ^0.1.0 dashbook: ^0.1.16 - flame: ^1.37.0 - flame_audio: ^2.12.1 - flame_forge2d: ^0.19.2+6 - flame_isolate: ^0.6.2+22 - flame_lottie: ^0.4.2+22 - flame_noise: ^0.3.2+22 - flame_spine: ^0.3.0+5 - flame_svg: ^1.12.1 - flame_tiled: ^3.1.1 + flame: ^1.38.0 + flame_audio: ^2.12.2 + flame_forge2d: ^0.19.3+7 + flame_isolate: ^0.6.3+23 + flame_lottie: ^0.4.3+23 + flame_noise: ^0.3.3+23 + flame_spine: ^0.3.1+6 + flame_svg: ^1.12.2 + flame_tiled: ^3.1.2 flutter: sdk: flutter google_fonts: ^8.0.2 diff --git a/packages/flame/CHANGELOG.md b/packages/flame/CHANGELOG.md index 91bede3b0af..299dd25cde1 100644 --- a/packages/flame/CHANGELOG.md +++ b/packages/flame/CHANGELOG.md @@ -1,3 +1,26 @@ +## 1.38.0 + +> Note: This release has breaking changes. + + - **REFACTOR**: Make GestureDetectorBuilder and detector/callback registering more resilient ([#3900](https://github.com/flame-engine/flame/issues/3900)). ([84b77a02](https://github.com/flame-engine/flame/commit/84b77a0279d826e24a10c48dfc4c4fec3c9f7bd4)) + - **FIX**: Workaround for the TextBoxComponent entering an endless loop ([#3939](https://github.com/flame-engine/flame/issues/3939)). ([0b42aa00](https://github.com/flame-engine/flame/commit/0b42aa000f0280b041991c12d54309feda10ed51)) + - **FIX**: HasWorldReference.onRemove() should call super.onRemove() ([#3920](https://github.com/flame-engine/flame/issues/3920)). ([412702c7](https://github.com/flame-engine/flame/commit/412702c7a8ae2d969db002eb355b3359406929d9)) + - **FIX**: Fix flaky Transform2D random round-trip test tolerance ([#3917](https://github.com/flame-engine/flame/issues/3917)). ([f2fb4079](https://github.com/flame-engine/flame/commit/f2fb4079ee6ab6b44116c4e5d1862df086251054)) + - **FIX**: Guard against double-dispose of TextBoxComponent cached image ([#3909](https://github.com/flame-engine/flame/issues/3909)). ([271288fb](https://github.com/flame-engine/flame/commit/271288fb8bd9bb10348798f9ea1d31b6b3e0a0be)) + - **FIX**: Fix raycasting "pass-through" collision inaccuracies with better modelling ([#3906](https://github.com/flame-engine/flame/issues/3906)). ([6337980d](https://github.com/flame-engine/flame/commit/6337980d09d5a5c8406389a9a7fa0a4a38f6e434)) + - **FIX**: Fix collision prospect checking to be fully reliable ([#3905](https://github.com/flame-engine/flame/issues/3905)). ([d5a21a72](https://github.com/flame-engine/flame/commit/d5a21a72deccf1a7cd31007e6bc3e89e93875a76)) + - **FIX**: Prevent drag updates from reaching removed components ([#3901](https://github.com/flame-engine/flame/issues/3901)). ([3d58c9ac](https://github.com/flame-engine/flame/commit/3d58c9ac5b6cf6d6e85cf59c5a8f9c6d234fe60f)) + - **FEAT**: Add displace extension to Rect ([#3943](https://github.com/flame-engine/flame/issues/3943)). ([d8e4db8b](https://github.com/flame-engine/flame/commit/d8e4db8b97da4c2d793751c73bca373a89c41ee8)) + - **FEAT**: OpacityEffect support on text components ([#3940](https://github.com/flame-engine/flame/issues/3940)). ([749c73a4](https://github.com/flame-engine/flame/commit/749c73a45be5978cca53ce3737fe2d2382289306)) + - **FEAT**: Expose brighten and darken helpers on palette ([#3936](https://github.com/flame-engine/flame/issues/3936)). ([953430e1](https://github.com/flame-engine/flame/commit/953430e177ce5e43f370fdd0f5c199f3e793e30e)) + - **FEAT**: Adding bleed option to SpriteBatch ([#3871](https://github.com/flame-engine/flame/issues/3871)). ([2c4a6d5c](https://github.com/flame-engine/flame/commit/2c4a6d5cf9962acf967a86ebdf6b3e848acdfdb2)) + - **FEAT**: Add regular polygon constructors to PolygonComponent and PolygonHitbox ([#3891](https://github.com/flame-engine/flame/issues/3891)). ([0d91f0f8](https://github.com/flame-engine/flame/commit/0d91f0f8d9350940421bc658623f62a899f1af50)) + - **FEAT**: Implement TertiaryTapCallbacks on new event system ([#3899](https://github.com/flame-engine/flame/issues/3899)). ([933395e2](https://github.com/flame-engine/flame/commit/933395e233bf8a84aff435352054cd357c6acfa2)) + - **FEAT**: Implement LongPressCallbacks on new event system ([#3896](https://github.com/flame-engine/flame/issues/3896)). ([8ee838c4](https://github.com/flame-engine/flame/commit/8ee838c415eb8c18653fe759fdf0086ab421da35)) + - **FEAT**: Implement ScrollCallbacks on new event system ([#3892](https://github.com/flame-engine/flame/issues/3892)). ([d0010032](https://github.com/flame-engine/flame/commit/d0010032d7f94680a1fab1cd5b36dc6c69d6dba9)) + - **BREAKING** **FIX**: Add HoverCallbacks.onHoverCancel for press-while-hovering ([#3912](https://github.com/flame-engine/flame/issues/3912)). ([ab354fb3](https://github.com/flame-engine/flame/commit/ab354fb37b26e4f5d6398b57a3300a9735fdcdef)) + - **BREAKING** **FEAT**: Update scale event with custom recognizer ([#3782](https://github.com/flame-engine/flame/issues/3782)). ([050984b7](https://github.com/flame-engine/flame/commit/050984b72232d5cf83f0b462b293ced80061b87e)) + ## 1.37.0 - **FEAT**: Add `bleed` option to `SpriteBatch` to prevent seam artifacts in tilemaps ([#3871](https://github.com/flame-engine/flame/issues/3871)). diff --git a/packages/flame/example/pubspec.yaml b/packages/flame/example/pubspec.yaml index 111311438d2..62f9b78c2b3 100644 --- a/packages/flame/example/pubspec.yaml +++ b/packages/flame/example/pubspec.yaml @@ -9,7 +9,7 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter diff --git a/packages/flame/pubspec.yaml b/packages/flame/pubspec.yaml index c14563e69d6..1dd3ab5ab82 100644 --- a/packages/flame/pubspec.yaml +++ b/packages/flame/pubspec.yaml @@ -1,7 +1,7 @@ name: flame resolution: workspace description: A minimalist Flutter game engine, provides a nice set of somewhat independent modules you can choose from. -version: 1.37.0 +version: 1.38.0 homepage: https://github.com/flame-engine/flame funding: - https://opencollective.com/blue-fire @@ -30,7 +30,7 @@ dev_dependencies: canvas_test: ^0.2.0 dartdoc: ^9.0.0 flame_lint: ^1.4.3 - flame_test: ^2.2.4 + flame_test: ^2.3.0 flutter_test: sdk: flutter mocktail: ^1.0.4 diff --git a/packages/flame_3d/CHANGELOG.md b/packages/flame_3d/CHANGELOG.md index 525f928a72e..83504081c2c 100644 --- a/packages/flame_3d/CHANGELOG.md +++ b/packages/flame_3d/CHANGELOG.md @@ -1,3 +1,15 @@ +## 0.3.0 + +> Note: This release has breaking changes. + + - **REFACTOR**(flame_3d): Abstract GPU implementation away for future proofing different backends ([#3928](https://github.com/flame-engine/flame/issues/3928)). ([f625173d](https://github.com/flame-engine/flame/commit/f625173d2b3ab2685b7b759c213a675b969af432)) + - **REFACTOR**(flame_3d): Shader generation now supports `#include` ([#3924](https://github.com/flame-engine/flame/issues/3924)). ([2be34f8e](https://github.com/flame-engine/flame/commit/2be34f8e780abcc2737c1dbcdf4b12cbd835352f)) + - **FEAT**(flame_3d): Add experimental `web` support using `webgpu` backend ([#3930](https://github.com/flame-engine/flame/issues/3930)). ([f21c5a8a](https://github.com/flame-engine/flame/commit/f21c5a8a5a08f973bd149aa40f1fc87ec160936b)) + - **FEAT**(flame_3d): Expose mesh information as read-only ([#3927](https://github.com/flame-engine/flame/issues/3927)). ([c5c3e662](https://github.com/flame-engine/flame/commit/c5c3e662dc434ec28882ea1fe284159a85517cf3)) + - **FEAT**(flame_3d): Add `UnlitMaterial` support ([#3914](https://github.com/flame-engine/flame/issues/3914)). ([9c88ff8c](https://github.com/flame-engine/flame/commit/9c88ff8cd9f2e6d351592eecf6156940c0361dd9)) + - **BREAKING** **FIX**(flame_3d): Fix material on `Line3D` ([#3916](https://github.com/flame-engine/flame/issues/3916)). ([f6fc6104](https://github.com/flame-engine/flame/commit/f6fc61042728c89c756077ba32071cec30d9bd8f)) + - **BREAKING** **FEAT**(flame_3d): Introduce `RenderContext` to make `GraphicsDevice` focused ([#3872](https://github.com/flame-engine/flame/issues/3872)). ([4338c624](https://github.com/flame-engine/flame/commit/4338c624da5b17e73a88fcb260dca5af14fc5a7f)) + ## 0.2.0 > Note: This release has breaking changes. diff --git a/packages/flame_3d/example/pubspec.yaml b/packages/flame_3d/example/pubspec.yaml index fe194f84a05..6c276e26abc 100644 --- a/packages/flame_3d/example/pubspec.yaml +++ b/packages/flame_3d/example/pubspec.yaml @@ -8,9 +8,9 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 - flame_3d: ^0.2.0 - flame_console: ^0.1.3 + flame: ^1.38.0 + flame_3d: ^0.3.0 + flame_console: ^0.1.4 flutter: sdk: flutter diff --git a/packages/flame_3d/pubspec.yaml b/packages/flame_3d/pubspec.yaml index a695c3de034..5abf9a17c05 100644 --- a/packages/flame_3d/pubspec.yaml +++ b/packages/flame_3d/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_3d resolution: workspace description: Experimental 3D support for the Flame Engine -version: 0.2.0 +version: 0.3.0 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_3d funding: - https://opencollective.com/blue-fire @@ -14,7 +14,7 @@ environment: dependencies: collection: ^1.19.1 - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter flutter_gpu: @@ -25,7 +25,7 @@ dependencies: dev_dependencies: flame_lint: ^1.4.3 - flame_test: ^2.2.4 + flame_test: ^2.3.0 flutter_test: sdk: flutter diff --git a/packages/flame_audio/CHANGELOG.md b/packages/flame_audio/CHANGELOG.md index 0d36a5fa53b..e42b1f54d90 100644 --- a/packages/flame_audio/CHANGELOG.md +++ b/packages/flame_audio/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.12.2 + + - Update a dependency to the latest release. + ## 2.12.1 - Update a dependency to the latest release. diff --git a/packages/flame_audio/example/pubspec.yaml b/packages/flame_audio/example/pubspec.yaml index a4bcf1b466e..9ed8fde351c 100644 --- a/packages/flame_audio/example/pubspec.yaml +++ b/packages/flame_audio/example/pubspec.yaml @@ -10,8 +10,8 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 - flame_audio: ^2.12.1 + flame: ^1.38.0 + flame_audio: ^2.12.2 flutter: sdk: flutter diff --git a/packages/flame_audio/pubspec.yaml b/packages/flame_audio/pubspec.yaml index f8adff33dd9..9ea5e156e37 100644 --- a/packages/flame_audio/pubspec.yaml +++ b/packages/flame_audio/pubspec.yaml @@ -2,7 +2,7 @@ name: flame_audio resolution: workspace description: | Audio support for the Flame game engine, basically a thin wrapper around the audioplayers package. -version: 2.12.1 +version: 2.12.2 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_audio funding: - https://opencollective.com/blue-fire @@ -18,7 +18,7 @@ environment: dependencies: audioplayers: ^6.2.0 - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter synchronized: ^3.1.0 diff --git a/packages/flame_behavior_tree/CHANGELOG.md b/packages/flame_behavior_tree/CHANGELOG.md index 6e9cb495096..9b47eed5161 100644 --- a/packages/flame_behavior_tree/CHANGELOG.md +++ b/packages/flame_behavior_tree/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.5+5 + + - Update a dependency to the latest release. + ## 0.1.4+4 - Update a dependency to the latest release. diff --git a/packages/flame_behavior_tree/example/pubspec.yaml b/packages/flame_behavior_tree/example/pubspec.yaml index f6c67e02634..7f894bbc289 100644 --- a/packages/flame_behavior_tree/example/pubspec.yaml +++ b/packages/flame_behavior_tree/example/pubspec.yaml @@ -12,8 +12,8 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 - flame_behavior_tree: ^0.1.4+4 + flame: ^1.38.0 + flame_behavior_tree: ^0.1.5+5 flutter: sdk: flutter diff --git a/packages/flame_behavior_tree/pubspec.yaml b/packages/flame_behavior_tree/pubspec.yaml index f5e41a77834..9df27cdfdf2 100644 --- a/packages/flame_behavior_tree/pubspec.yaml +++ b/packages/flame_behavior_tree/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_behavior_tree resolution: workspace description: A bridge package that integrates behavior_tree package with flame. -version: 0.1.4+4 +version: 0.1.5+5 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_behavior_tree funding: - https://opencollective.com/blue-fire @@ -16,13 +16,13 @@ environment: dependencies: behavior_tree: ^0.1.5+1 - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter dev_dependencies: flame_lint: ^1.4.3 - flame_test: ^2.2.4 + flame_test: ^2.3.0 flutter_test: sdk: flutter mocktail: ^1.0.4 diff --git a/packages/flame_behaviors/CHANGELOG.md b/packages/flame_behaviors/CHANGELOG.md index fa5c629ccbd..cc42a8b6134 100644 --- a/packages/flame_behaviors/CHANGELOG.md +++ b/packages/flame_behaviors/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.4.0 + + - **FEAT**(flame_behaviors): Add ScreenCollisionBehavior ([#3910](https://github.com/flame-engine/flame/issues/3910)). ([48894135](https://github.com/flame-engine/flame/commit/48894135587218690f7faa7382ba24d45658e235)) + ## 1.3.5 - Update a dependency to the latest release. diff --git a/packages/flame_behaviors/example/pubspec.yaml b/packages/flame_behaviors/example/pubspec.yaml index 050aa1606d1..026d1e37821 100644 --- a/packages/flame_behaviors/example/pubspec.yaml +++ b/packages/flame_behaviors/example/pubspec.yaml @@ -8,8 +8,8 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 - flame_behaviors: ^1.3.5 + flame: ^1.38.0 + flame_behaviors: ^1.4.0 flutter: sdk: flutter diff --git a/packages/flame_behaviors/pubspec.yaml b/packages/flame_behaviors/pubspec.yaml index a8819fdab87..b06432eedf6 100644 --- a/packages/flame_behaviors/pubspec.yaml +++ b/packages/flame_behaviors/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_behaviors resolution: workspace description: Flame Behaviors applies separation of concerns to game logic in the form of Entities and Behaviors, originally built by Very Good Ventures. -version: 1.3.5 +version: 1.4.0 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_behaviors environment: @@ -9,13 +9,13 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter dev_dependencies: flame_lint: ^1.4.3 - flame_test: ^2.2.4 + flame_test: ^2.3.0 flutter_test: sdk: flutter mocktail: ^1.0.4 \ No newline at end of file diff --git a/packages/flame_bloc/CHANGELOG.md b/packages/flame_bloc/CHANGELOG.md index 2db892f26dd..cd0377cea08 100644 --- a/packages/flame_bloc/CHANGELOG.md +++ b/packages/flame_bloc/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.12.24 + + - **FIX**: Bloc instance was null on initial state ([#3921](https://github.com/flame-engine/flame/issues/3921)). ([8adeea69](https://github.com/flame-engine/flame/commit/8adeea69764002e763a4a9236945c2b8f57a8a3b)) + ## 1.12.23 - Update a dependency to the latest release. diff --git a/packages/flame_bloc/example/pubspec.yaml b/packages/flame_bloc/example/pubspec.yaml index 61f8fb866f8..c6d79c349d3 100644 --- a/packages/flame_bloc/example/pubspec.yaml +++ b/packages/flame_bloc/example/pubspec.yaml @@ -12,8 +12,8 @@ environment: dependencies: equatable: ^2.0.5 - flame: ^1.37.0 - flame_bloc: ^1.12.23 + flame: ^1.38.0 + flame_bloc: ^1.12.24 flutter: sdk: flutter flutter_bloc: ^8.1.2 diff --git a/packages/flame_bloc/pubspec.yaml b/packages/flame_bloc/pubspec.yaml index bd026867320..d451cb23d74 100644 --- a/packages/flame_bloc/pubspec.yaml +++ b/packages/flame_bloc/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_bloc resolution: workspace description: Integration for the Bloc state management library to Flame games. -version: 1.12.23 +version: 1.12.24 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_bloc funding: - https://opencollective.com/blue-fire @@ -17,7 +17,7 @@ environment: dependencies: bloc: ">=8.1.1 <10.0.0" - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter flutter_bloc: ">=8.1.2 <10.0.0" @@ -26,7 +26,7 @@ dependencies: dev_dependencies: dartdoc: ^9.0.0 flame_lint: ^1.4.3 - flame_test: ^2.2.4 + flame_test: ^2.3.0 flutter_test: sdk: flutter mocktail: ^1.0.4 diff --git a/packages/flame_console/CHANGELOG.md b/packages/flame_console/CHANGELOG.md index 930a013a6b6..eb4cdf6eec6 100644 --- a/packages/flame_console/CHANGELOG.md +++ b/packages/flame_console/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.4 + + - Update a dependency to the latest release. + ## 0.1.3 - **FEAT**: Update terminui on flame_console ([#3863](https://github.com/flame-engine/flame/issues/3863)). ([6f823cb6](https://github.com/flame-engine/flame/commit/6f823cb6fa88814c518bc095594017b1f34d2054)) diff --git a/packages/flame_console/example/pubspec.yaml b/packages/flame_console/example/pubspec.yaml index ba5584ecb40..8315bec0af9 100644 --- a/packages/flame_console/example/pubspec.yaml +++ b/packages/flame_console/example/pubspec.yaml @@ -10,8 +10,8 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 - flame_console: ^0.1.3 + flame: ^1.38.0 + flame_console: ^0.1.4 flutter: sdk: flutter diff --git a/packages/flame_console/pubspec.yaml b/packages/flame_console/pubspec.yaml index a630796c833..b1987f4c2b2 100644 --- a/packages/flame_console/pubspec.yaml +++ b/packages/flame_console/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_console resolution: workspace description: "An extensible and customizable console to help debug Flame games." -version: 0.1.3 +version: 0.1.4 repository: https://github.com/flame-engine/flame/tree/main/packages/flame_console funding: - https://opencollective.com/blue-fire @@ -18,13 +18,13 @@ environment: dependencies: args: ^2.5.0 - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter terminui: ^0.3.0 dev_dependencies: flame_lint: ^1.4.3 - flame_test: ^2.2.4 + flame_test: ^2.3.0 flutter_test: sdk: flutter diff --git a/packages/flame_devtools/pubspec.yaml b/packages/flame_devtools/pubspec.yaml index 0ee61670771..15ccc9de969 100644 --- a/packages/flame_devtools/pubspec.yaml +++ b/packages/flame_devtools/pubspec.yaml @@ -11,7 +11,7 @@ dependencies: animated_tree_view: ^2.3.0 devtools_app_shared: ^0.3.1 devtools_extensions: ^0.3.1 - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter flutter_riverpod: ^3.0.3 diff --git a/packages/flame_fire_atlas/CHANGELOG.md b/packages/flame_fire_atlas/CHANGELOG.md index e3ee01c4b95..d089647bf74 100644 --- a/packages/flame_fire_atlas/CHANGELOG.md +++ b/packages/flame_fire_atlas/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.8.18 + + - Update a dependency to the latest release. + ## 1.8.17 - Update a dependency to the latest release. diff --git a/packages/flame_fire_atlas/example/pubspec.yaml b/packages/flame_fire_atlas/example/pubspec.yaml index 476730e1593..4a95c1a035b 100644 --- a/packages/flame_fire_atlas/example/pubspec.yaml +++ b/packages/flame_fire_atlas/example/pubspec.yaml @@ -10,8 +10,8 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 - flame_fire_atlas: ^1.8.17 + flame: ^1.38.0 + flame_fire_atlas: ^1.8.18 flutter: sdk: flutter diff --git a/packages/flame_fire_atlas/pubspec.yaml b/packages/flame_fire_atlas/pubspec.yaml index 216583171fe..4686c5e06cd 100644 --- a/packages/flame_fire_atlas/pubspec.yaml +++ b/packages/flame_fire_atlas/pubspec.yaml @@ -2,7 +2,7 @@ name: flame_fire_atlas resolution: workspace description: Easy to use texture atlases for the flame engine created with the fire atlas editor -version: 1.8.17 +version: 1.8.18 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_fire_atlas funding: - https://opencollective.com/blue-fire @@ -18,7 +18,7 @@ environment: dependencies: archive: ^4.0.2 - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter diff --git a/packages/flame_forge2d/CHANGELOG.md b/packages/flame_forge2d/CHANGELOG.md index ab66b0c728f..95844f0401b 100644 --- a/packages/flame_forge2d/CHANGELOG.md +++ b/packages/flame_forge2d/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.19.3+7 + + - Update a dependency to the latest release. + ## 0.19.2+6 - Update a dependency to the latest release. diff --git a/packages/flame_forge2d/example/pubspec.yaml b/packages/flame_forge2d/example/pubspec.yaml index 58c1d6b7985..a321e83f637 100644 --- a/packages/flame_forge2d/example/pubspec.yaml +++ b/packages/flame_forge2d/example/pubspec.yaml @@ -11,8 +11,8 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 - flame_forge2d: ^0.19.2+6 + flame: ^1.38.0 + flame_forge2d: ^0.19.3+7 flutter: sdk: flutter diff --git a/packages/flame_forge2d/pubspec.yaml b/packages/flame_forge2d/pubspec.yaml index 066501e3479..3fa2730f6bd 100644 --- a/packages/flame_forge2d/pubspec.yaml +++ b/packages/flame_forge2d/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_forge2d resolution: workspace description: Forge2D (Box2D) support for the Flame game engine. This uses the forge2d package and provides wrappers and components to be used inside Flame. -version: 0.19.2+6 +version: 0.19.3+7 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_forge2d funding: - https://opencollective.com/blue-fire @@ -17,7 +17,7 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter forge2d: ^0.14.2 @@ -25,7 +25,7 @@ dependencies: dev_dependencies: dartdoc: ^9.0.0 flame_lint: ^1.4.3 - flame_test: ^2.2.4 + flame_test: ^2.3.0 flutter_test: sdk: flutter mocktail: ^1.0.4 diff --git a/packages/flame_gamepads/CHANGELOG.md b/packages/flame_gamepads/CHANGELOG.md index 69ec05da64c..57f464c3f24 100644 --- a/packages/flame_gamepads/CHANGELOG.md +++ b/packages/flame_gamepads/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.2 + + - Update a dependency to the latest release. + ## 0.1.1 - **FIX**: Rename flame_gamepads library file to match package name ([#3888](https://github.com/flame-engine/flame/issues/3888)). ([2fea504a](https://github.com/flame-engine/flame/commit/2fea504a338711d85c7d5591eae44df75786e516)) diff --git a/packages/flame_gamepads/example/pubspec.yaml b/packages/flame_gamepads/example/pubspec.yaml index 1f799b680e0..70ff59a38a7 100644 --- a/packages/flame_gamepads/example/pubspec.yaml +++ b/packages/flame_gamepads/example/pubspec.yaml @@ -8,8 +8,8 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 - flame_gamepads: ^0.1.1 + flame: ^1.38.0 + flame_gamepads: ^0.1.2 flutter: sdk: flutter gamepads: ^0.1.10 diff --git a/packages/flame_gamepads/pubspec.yaml b/packages/flame_gamepads/pubspec.yaml index 40bf718e2a8..5ee9dcc28cc 100644 --- a/packages/flame_gamepads/pubspec.yaml +++ b/packages/flame_gamepads/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_gamepads resolution: workspace description: Flame bindings to work with gamepads package -version: 0.1.1 +version: 0.1.2 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_gamepads funding: - https://opencollective.com/blue-fire @@ -16,7 +16,7 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter gamepads: ^0.1.10 diff --git a/packages/flame_isolate/CHANGELOG.md b/packages/flame_isolate/CHANGELOG.md index 3d4d4eb306e..66693decec8 100644 --- a/packages/flame_isolate/CHANGELOG.md +++ b/packages/flame_isolate/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.3+23 + + - Update a dependency to the latest release. + ## 0.6.2+22 - Update a dependency to the latest release. diff --git a/packages/flame_isolate/example/pubspec.yaml b/packages/flame_isolate/example/pubspec.yaml index ba9ecef5ec8..4b27ce2a41c 100755 --- a/packages/flame_isolate/example/pubspec.yaml +++ b/packages/flame_isolate/example/pubspec.yaml @@ -12,8 +12,8 @@ environment: dependencies: collection: ^1.18.0 - flame: ^1.37.0 - flame_isolate: ^0.6.2+22 + flame: ^1.38.0 + flame_isolate: ^0.6.3+23 flutter: sdk: flutter quiver: ^3.2.1 diff --git a/packages/flame_isolate/pubspec.yaml b/packages/flame_isolate/pubspec.yaml index aaada13280f..c86a31e5089 100644 --- a/packages/flame_isolate/pubspec.yaml +++ b/packages/flame_isolate/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_isolate resolution: workspace description: Flame wrapper for integral_isolates making multi-threading easy in Flame -version: 0.6.2+22 +version: 0.6.3+23 repository: https://github.com/flame-engine/flame/blob/main/packages/flame_isolate topics: - flame @@ -12,14 +12,14 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter integral_isolates: ^0.5.1 dev_dependencies: flame_lint: ^1.4.3 - flame_test: ^2.2.4 + flame_test: ^2.3.0 flutter_test: sdk: flutter test: any diff --git a/packages/flame_jenny/pubspec.yaml b/packages/flame_jenny/pubspec.yaml index c1af2ebf3b7..e00f63cba1c 100644 --- a/packages/flame_jenny/pubspec.yaml +++ b/packages/flame_jenny/pubspec.yaml @@ -17,7 +17,7 @@ environment: dependencies: collection: ^1.17.1 - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter jenny: ^1.5.1 diff --git a/packages/flame_kenney_xml/CHANGELOG.md b/packages/flame_kenney_xml/CHANGELOG.md index 114d1f183f3..b3a4489843b 100644 --- a/packages/flame_kenney_xml/CHANGELOG.md +++ b/packages/flame_kenney_xml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.3+2 + + - Update a dependency to the latest release. + ## 0.1.2+1 - Update a dependency to the latest release. diff --git a/packages/flame_kenney_xml/example/pubspec.yaml b/packages/flame_kenney_xml/example/pubspec.yaml index 09646494779..57baf43d42f 100644 --- a/packages/flame_kenney_xml/example/pubspec.yaml +++ b/packages/flame_kenney_xml/example/pubspec.yaml @@ -10,8 +10,8 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 - flame_kenney_xml: ^0.1.2+1 + flame: ^1.38.0 + flame_kenney_xml: ^0.1.3+2 flutter: sdk: flutter diff --git a/packages/flame_kenney_xml/pubspec.yaml b/packages/flame_kenney_xml/pubspec.yaml index e3a97d52653..bfe97944722 100644 --- a/packages/flame_kenney_xml/pubspec.yaml +++ b/packages/flame_kenney_xml/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_kenney_xml resolution: workspace description: "Support for Kenney XML spritesheets for the Flame game engine. This package parses XML files produced by Kenney." -version: 0.1.2+1 +version: 0.1.3+2 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_kenney_xml funding: - https://opencollective.com/blue-fire @@ -18,7 +18,7 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter xml: ^6.5.0 diff --git a/packages/flame_lottie/CHANGELOG.md b/packages/flame_lottie/CHANGELOG.md index b55b60ef12b..7497a2a5d28 100644 --- a/packages/flame_lottie/CHANGELOG.md +++ b/packages/flame_lottie/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.3+23 + + - Update a dependency to the latest release. + ## 0.4.2+22 - Update a dependency to the latest release. diff --git a/packages/flame_lottie/example/pubspec.yaml b/packages/flame_lottie/example/pubspec.yaml index d2ebbfe406a..9e43bbab8a8 100644 --- a/packages/flame_lottie/example/pubspec.yaml +++ b/packages/flame_lottie/example/pubspec.yaml @@ -8,8 +8,8 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 - flame_lottie: ^0.4.2+22 + flame: ^1.38.0 + flame_lottie: ^0.4.3+23 flutter: sdk: flutter lottie: diff --git a/packages/flame_lottie/pubspec.yaml b/packages/flame_lottie/pubspec.yaml index 87d6a63c2e6..d7e750a4340 100644 --- a/packages/flame_lottie/pubspec.yaml +++ b/packages/flame_lottie/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_lottie resolution: workspace description: Flame wrapper for Lottie by AirBnB. This package implements a bridge between Lottie and Flame, allowing to load and display Lottie animations. -version: 0.4.2+22 +version: 0.4.3+23 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_lottie funding: - https://opencollective.com/blue-fire @@ -17,13 +17,13 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter lottie: ^3.1.2 dev_dependencies: flame_lint: ^1.4.3 - flame_test: ^2.2.4 + flame_test: ^2.3.0 flutter_test: sdk: flutter diff --git a/packages/flame_markdown/CHANGELOG.md b/packages/flame_markdown/CHANGELOG.md index 8ee640cc58b..b7390c31b6a 100644 --- a/packages/flame_markdown/CHANGELOG.md +++ b/packages/flame_markdown/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.5+16 + + - Update a dependency to the latest release. + ## 0.2.4+15 - Update a dependency to the latest release. diff --git a/packages/flame_markdown/example/pubspec.yaml b/packages/flame_markdown/example/pubspec.yaml index 747af5a679a..a56ed1245c9 100644 --- a/packages/flame_markdown/example/pubspec.yaml +++ b/packages/flame_markdown/example/pubspec.yaml @@ -8,8 +8,8 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 - flame_markdown: ^0.2.4+15 + flame: ^1.38.0 + flame_markdown: ^0.2.5+16 flutter: sdk: flutter markdown: ^7.3.0 diff --git a/packages/flame_markdown/pubspec.yaml b/packages/flame_markdown/pubspec.yaml index 03ec77401af..315b6c87987 100644 --- a/packages/flame_markdown/pubspec.yaml +++ b/packages/flame_markdown/pubspec.yaml @@ -2,7 +2,7 @@ name: flame_markdown resolution: workspace description: | Markdown support for the Flame game engine, bridging the markdown package into Flame's text rendering pipeline. -version: 0.2.4+15 +version: 0.2.5+16 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_markdown funding: - https://opencollective.com/blue-fire @@ -17,7 +17,7 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter markdown: ^7.1.1 diff --git a/packages/flame_network_assets/CHANGELOG.md b/packages/flame_network_assets/CHANGELOG.md index ff9db76519a..6706555d54b 100644 --- a/packages/flame_network_assets/CHANGELOG.md +++ b/packages/flame_network_assets/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.4+23 + + - Update a dependency to the latest release. + ## 0.3.3+22 - Update a dependency to the latest release. diff --git a/packages/flame_network_assets/example/pubspec.yaml b/packages/flame_network_assets/example/pubspec.yaml index 27b0a3e5fb4..09ee940c3e4 100644 --- a/packages/flame_network_assets/example/pubspec.yaml +++ b/packages/flame_network_assets/example/pubspec.yaml @@ -9,8 +9,8 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 - flame_network_assets: ^0.3.3+22 + flame: ^1.38.0 + flame_network_assets: ^0.3.4+23 flutter: sdk: flutter diff --git a/packages/flame_network_assets/pubspec.yaml b/packages/flame_network_assets/pubspec.yaml index 5746aa7ae4c..444a2929f3d 100644 --- a/packages/flame_network_assets/pubspec.yaml +++ b/packages/flame_network_assets/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_network_assets resolution: workspace description: Network assets support for Flame. -version: 0.3.3+22 +version: 0.3.4+23 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_network_assets funding: - https://opencollective.com/blue-fire @@ -18,7 +18,7 @@ environment: dependencies: dev: ^1.0.0 - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter http: ^1.2.1 diff --git a/packages/flame_noise/CHANGELOG.md b/packages/flame_noise/CHANGELOG.md index 7f25d407dd1..8352b424e99 100644 --- a/packages/flame_noise/CHANGELOG.md +++ b/packages/flame_noise/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.3+23 + + - Update a dependency to the latest release. + ## 0.3.2+22 - Update a dependency to the latest release. diff --git a/packages/flame_noise/pubspec.yaml b/packages/flame_noise/pubspec.yaml index 6a53ded9af3..db815ee9962 100644 --- a/packages/flame_noise/pubspec.yaml +++ b/packages/flame_noise/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_noise resolution: workspace description: Integrate the fast_noise package into Flame -version: 0.3.2+22 +version: 0.3.3+23 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_noise funding: - https://opencollective.com/blue-fire @@ -17,12 +17,12 @@ environment: dependencies: fast_noise: ^2.0.0 - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter dev_dependencies: dartdoc: ^9.0.0 flame_lint: ^1.4.3 - flame_test: ^2.2.4 + flame_test: ^2.3.0 test: any \ No newline at end of file diff --git a/packages/flame_rive/CHANGELOG.md b/packages/flame_rive/CHANGELOG.md index 4857c27dff8..d487cd0b7fc 100644 --- a/packages/flame_rive/CHANGELOG.md +++ b/packages/flame_rive/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.11.2 + + - Update a dependency to the latest release. + ## 1.11.1 - Update a dependency to the latest release. diff --git a/packages/flame_rive/example/pubspec.yaml b/packages/flame_rive/example/pubspec.yaml index 19f9cb9852e..1ac288e3c2e 100644 --- a/packages/flame_rive/example/pubspec.yaml +++ b/packages/flame_rive/example/pubspec.yaml @@ -8,8 +8,8 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 - flame_rive: ^1.11.1 + flame: ^1.38.0 + flame_rive: ^1.11.2 flutter: sdk: flutter rive: ^0.14.0 diff --git a/packages/flame_rive/pubspec.yaml b/packages/flame_rive/pubspec.yaml index 273d08d9a04..d555b7c88dc 100644 --- a/packages/flame_rive/pubspec.yaml +++ b/packages/flame_rive/pubspec.yaml @@ -2,7 +2,7 @@ name: flame_rive resolution: workspace description: Rive support for the Flame game engine. This uses the rive package and provides wrappers and components to be used inside Flame. homepage: https://github.com/flame-engine/flame -version: 1.11.1 +version: 1.11.2 funding: - https://opencollective.com/blue-fire - https://github.com/sponsors/bluefireteam @@ -17,7 +17,7 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter rive: ^0.14.6 @@ -25,6 +25,6 @@ dependencies: dev_dependencies: dartdoc: ^9.0.0 flame_lint: ^1.4.3 - flame_test: ^2.2.4 + flame_test: ^2.3.0 flutter_test: sdk: flutter diff --git a/packages/flame_riverpod/CHANGELOG.md b/packages/flame_riverpod/CHANGELOG.md index 571def532e2..2b53e8afbab 100644 --- a/packages/flame_riverpod/CHANGELOG.md +++ b/packages/flame_riverpod/CHANGELOG.md @@ -1,3 +1,7 @@ +## 5.5.5 + + - Update a dependency to the latest release. + ## 5.5.4 - Update a dependency to the latest release. diff --git a/packages/flame_riverpod/example/pubspec.yaml b/packages/flame_riverpod/example/pubspec.yaml index 32a8fb5e9e3..4bfb4d7bdc4 100644 --- a/packages/flame_riverpod/example/pubspec.yaml +++ b/packages/flame_riverpod/example/pubspec.yaml @@ -6,8 +6,8 @@ version: 1.0.0+1 environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 - flame_riverpod: ^5.5.4 + flame: ^1.38.0 + flame_riverpod: ^5.5.5 flutter: sdk: flutter flutter_riverpod: ^3.0.3 diff --git a/packages/flame_riverpod/pubspec.yaml b/packages/flame_riverpod/pubspec.yaml index bf188c43d2d..658d29f05d0 100644 --- a/packages/flame_riverpod/pubspec.yaml +++ b/packages/flame_riverpod/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_riverpod resolution: workspace description: Helpers for using Riverpod - a reactive caching and data-binding framework, in conjunction with Flame. -version: 5.5.4 +version: 5.5.5 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_riverpod funding: - https://opencollective.com/blue-fire @@ -16,7 +16,7 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter flutter_riverpod: ^3.0.3 diff --git a/packages/flame_spine/CHANGELOG.md b/packages/flame_spine/CHANGELOG.md index fce0a95fa5e..8853f74f940 100644 --- a/packages/flame_spine/CHANGELOG.md +++ b/packages/flame_spine/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.1+6 + + - Update a dependency to the latest release. + ## 0.3.0+5 - Update a dependency to the latest release. diff --git a/packages/flame_spine/example/pubspec.yaml b/packages/flame_spine/example/pubspec.yaml index bf7441d359b..9efed93deca 100644 --- a/packages/flame_spine/example/pubspec.yaml +++ b/packages/flame_spine/example/pubspec.yaml @@ -8,8 +8,8 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 - flame_spine: ^0.3.0+5 + flame: ^1.38.0 + flame_spine: ^0.3.1+6 flutter: sdk: flutter diff --git a/packages/flame_spine/pubspec.yaml b/packages/flame_spine/pubspec.yaml index 7421eb669ca..3c45d34cc23 100644 --- a/packages/flame_spine/pubspec.yaml +++ b/packages/flame_spine/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_spine resolution: workspace description: Spine support for the Flame game engine. This uses the spine_flutter package and provides wrappers and components to be used inside Flame. -version: 0.3.0+5 +version: 0.3.1+6 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_spine funding: - https://opencollective.com/blue-fire @@ -17,7 +17,7 @@ environment: dependencies: collection: ^1.17.1 - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter spine_flutter: ^4.3.0 diff --git a/packages/flame_sprite_fusion/CHANGELOG.md b/packages/flame_sprite_fusion/CHANGELOG.md index 857b0eaca2d..7831a74c107 100644 --- a/packages/flame_sprite_fusion/CHANGELOG.md +++ b/packages/flame_sprite_fusion/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.4+2 + + - Update a dependency to the latest release. + ## 0.2.3+1 - Update a dependency to the latest release. diff --git a/packages/flame_sprite_fusion/example/pubspec.yaml b/packages/flame_sprite_fusion/example/pubspec.yaml index baf590d3745..3bc788311cf 100644 --- a/packages/flame_sprite_fusion/example/pubspec.yaml +++ b/packages/flame_sprite_fusion/example/pubspec.yaml @@ -10,8 +10,8 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 - flame_sprite_fusion: ^0.2.3+1 + flame: ^1.38.0 + flame_sprite_fusion: ^0.2.4+2 flutter: sdk: flutter diff --git a/packages/flame_sprite_fusion/pubspec.yaml b/packages/flame_sprite_fusion/pubspec.yaml index 4e8c960c714..ff6bfd6ffdc 100644 --- a/packages/flame_sprite_fusion/pubspec.yaml +++ b/packages/flame_sprite_fusion/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_sprite_fusion resolution: workspace description: "Sprite Fusion support for the Flame game engine. This package parses and renders tilemaps exported from Sprite Fusion tool." -version: 0.2.3+1 +version: 0.2.4+2 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_sprite_fusion funding: - https://opencollective.com/blue-fire @@ -17,12 +17,12 @@ environment: dependencies: collection: ^1.19.1 - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter dev_dependencies: flame_lint: ^1.4.3 - flame_test: ^2.2.4 + flame_test: ^2.3.0 flutter_test: sdk: flutter diff --git a/packages/flame_steering_behaviors/CHANGELOG.md b/packages/flame_steering_behaviors/CHANGELOG.md index 2f9b95a63da..949ed7a177b 100644 --- a/packages/flame_steering_behaviors/CHANGELOG.md +++ b/packages/flame_steering_behaviors/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.2+6 + + - **FEAT**(flame_behaviors): Add ScreenCollisionBehavior ([#3910](https://github.com/flame-engine/flame/issues/3910)). ([48894135](https://github.com/flame-engine/flame/commit/48894135587218690f7faa7382ba24d45658e235)) + ## 0.2.1+5 - Update a dependency to the latest release. diff --git a/packages/flame_steering_behaviors/example/pubspec.yaml b/packages/flame_steering_behaviors/example/pubspec.yaml index cd0c5f5f035..2c35da1a66d 100644 --- a/packages/flame_steering_behaviors/example/pubspec.yaml +++ b/packages/flame_steering_behaviors/example/pubspec.yaml @@ -8,15 +8,15 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 - flame_behaviors: ^1.3.5 - flame_steering_behaviors: ^0.2.1+5 + flame: ^1.38.0 + flame_behaviors: ^1.4.0 + flame_steering_behaviors: ^0.2.2+6 flutter: sdk: flutter dev_dependencies: flame_lint: ^1.4.3 - flame_test: ^2.2.4 + flame_test: ^2.3.0 flutter_test: sdk: flutter mocktail: ^1.0.4 diff --git a/packages/flame_steering_behaviors/pubspec.yaml b/packages/flame_steering_behaviors/pubspec.yaml index 458f4ffd4e8..488fb2964a6 100644 --- a/packages/flame_steering_behaviors/pubspec.yaml +++ b/packages/flame_steering_behaviors/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_steering_behaviors resolution: workspace description: Flame Steering Behaviors brings steering algorithms to the behavior pattern, originally built by Very Good Ventures. -version: 0.2.1+5 +version: 0.2.2+6 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_steering_behaviors environment: @@ -9,14 +9,14 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 - flame_behaviors: ^1.3.5 + flame: ^1.38.0 + flame_behaviors: ^1.4.0 flutter: sdk: flutter dev_dependencies: flame_lint: ^1.4.3 - flame_test: ^2.2.4 + flame_test: ^2.3.0 flutter_test: sdk: flutter mocktail: ^1.0.4 diff --git a/packages/flame_studio/pubspec.yaml b/packages/flame_studio/pubspec.yaml index 10d831f8e05..de64606db59 100644 --- a/packages/flame_studio/pubspec.yaml +++ b/packages/flame_studio/pubspec.yaml @@ -15,7 +15,7 @@ environment: dependencies: collection: ^1.17.1 - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter flutter_riverpod: ^3.0.3 diff --git a/packages/flame_svg/CHANGELOG.md b/packages/flame_svg/CHANGELOG.md index 2bf609b17fe..ae0ed1a1b94 100644 --- a/packages/flame_svg/CHANGELOG.md +++ b/packages/flame_svg/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.12.2 + + - Update a dependency to the latest release. + ## 1.12.1 - Update a dependency to the latest release. diff --git a/packages/flame_svg/example/pubspec.yaml b/packages/flame_svg/example/pubspec.yaml index 14900742a8b..776e1dc831f 100644 --- a/packages/flame_svg/example/pubspec.yaml +++ b/packages/flame_svg/example/pubspec.yaml @@ -10,8 +10,8 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 - flame_svg: ^1.12.1 + flame: ^1.38.0 + flame_svg: ^1.12.2 flutter: sdk: flutter diff --git a/packages/flame_svg/pubspec.yaml b/packages/flame_svg/pubspec.yaml index eaf1cd26301..818da5aa63c 100644 --- a/packages/flame_svg/pubspec.yaml +++ b/packages/flame_svg/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_svg resolution: workspace description: Package to add SVG rendering support for the Flame game engine -version: 1.12.1 +version: 1.12.2 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_svg funding: - https://opencollective.com/blue-fire @@ -17,7 +17,7 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter flutter_svg: ^2.0.5 diff --git a/packages/flame_test/CHANGELOG.md b/packages/flame_test/CHANGELOG.md index bcf0c9ccee7..574403d57be 100644 --- a/packages/flame_test/CHANGELOG.md +++ b/packages/flame_test/CHANGELOG.md @@ -1,3 +1,10 @@ +## 2.3.0 + + - **FEAT**: OpacityEffect support on text components ([#3940](https://github.com/flame-engine/flame/issues/3940)). ([749c73a4](https://github.com/flame-engine/flame/commit/749c73a45be5978cca53ce3737fe2d2382289306)) + - **FEAT**: Implement TertiaryTapCallbacks on new event system ([#3899](https://github.com/flame-engine/flame/issues/3899)). ([933395e2](https://github.com/flame-engine/flame/commit/933395e233bf8a84aff435352054cd357c6acfa2)) + - **FEAT**: Implement LongPressCallbacks on new event system ([#3896](https://github.com/flame-engine/flame/issues/3896)). ([8ee838c4](https://github.com/flame-engine/flame/commit/8ee838c415eb8c18653fe759fdf0086ab421da35)) + - **FEAT**: Implement ScrollCallbacks on new event system ([#3892](https://github.com/flame-engine/flame/issues/3892)). ([d0010032](https://github.com/flame-engine/flame/commit/d0010032d7f94680a1fab1cd5b36dc6c69d6dba9)) + ## 2.2.4 - **FIX**: Remove async from flame test helpers ([#3860](https://github.com/flame-engine/flame/issues/3860)). ([4e63e93e](https://github.com/flame-engine/flame/commit/4e63e93eb78d5e6e3c48e0cc02577bf2581b0e87)) diff --git a/packages/flame_test/example/pubspec.yaml b/packages/flame_test/example/pubspec.yaml index e49d0ebf252..ebffbc5e55f 100644 --- a/packages/flame_test/example/pubspec.yaml +++ b/packages/flame_test/example/pubspec.yaml @@ -9,13 +9,13 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter dev_dependencies: flame_lint: ^1.4.3 - flame_test: ^2.2.4 + flame_test: ^2.3.0 flutter_test: sdk: flutter test: any diff --git a/packages/flame_test/pubspec.yaml b/packages/flame_test/pubspec.yaml index 69aa3bd3f67..dc8467a1262 100644 --- a/packages/flame_test/pubspec.yaml +++ b/packages/flame_test/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_test resolution: workspace description: A package with classes to help testing applications using Flame -version: 2.2.4 +version: 2.3.0 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_test funding: - https://opencollective.com/blue-fire @@ -17,7 +17,7 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter flutter_test: diff --git a/packages/flame_texturepacker/CHANGELOG.md b/packages/flame_texturepacker/CHANGELOG.md index 011ac558fa5..cf4b7111cfd 100644 --- a/packages/flame_texturepacker/CHANGELOG.md +++ b/packages/flame_texturepacker/CHANGELOG.md @@ -1,3 +1,7 @@ +## 5.1.2 + + - Update a dependency to the latest release. + ## 5.1.1 - **REFACTOR**: [flame_texturepacker] Update package support filed and handle more sprite index patterns ([#3858](https://github.com/flame-engine/flame/issues/3858)). ([bb535013](https://github.com/flame-engine/flame/commit/bb5350133be424d65923a14f10eadfb21a3166e9)) diff --git a/packages/flame_texturepacker/example/pubspec.yaml b/packages/flame_texturepacker/example/pubspec.yaml index 0fbc66a0c21..732b046bc54 100644 --- a/packages/flame_texturepacker/example/pubspec.yaml +++ b/packages/flame_texturepacker/example/pubspec.yaml @@ -9,8 +9,8 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 - flame_texturepacker: ^5.1.1 + flame: ^1.38.0 + flame_texturepacker: ^5.1.2 flutter: sdk: flutter diff --git a/packages/flame_texturepacker/pubspec.yaml b/packages/flame_texturepacker/pubspec.yaml index 08eedf4f60f..a3359444fd6 100644 --- a/packages/flame_texturepacker/pubspec.yaml +++ b/packages/flame_texturepacker/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_texturepacker resolution: workspace description: A simple plugin for the Flame Engine to import spritesheets generated by the TexturePacker tool. -version: 5.1.1 +version: 5.1.2 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_texturepacker funding: - https://opencollective.com/blue-fire @@ -18,7 +18,7 @@ environment: dependencies: collection: ^1.17.1 cross_file: ^0.3.4+2 - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter diff --git a/packages/flame_tiled/CHANGELOG.md b/packages/flame_tiled/CHANGELOG.md index 809154d825f..ef2d9fba935 100644 --- a/packages/flame_tiled/CHANGELOG.md +++ b/packages/flame_tiled/CHANGELOG.md @@ -1,3 +1,7 @@ +## 3.1.2 + + - **FIX**(flame_tiled): Anchor oversized orthogonal tiles at bottom-left of cell ([#3923](https://github.com/flame-engine/flame/issues/3923)). ([4c775db0](https://github.com/flame-engine/flame/commit/4c775db08ffc4357420131251510bdbf71585948)) + ## 3.1.1 - Update a dependency to the latest release. diff --git a/packages/flame_tiled/example/pubspec.yaml b/packages/flame_tiled/example/pubspec.yaml index 460535db7e4..295f45c38a1 100644 --- a/packages/flame_tiled/example/pubspec.yaml +++ b/packages/flame_tiled/example/pubspec.yaml @@ -8,8 +8,8 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 - flame_tiled: ^3.1.1 + flame: ^1.38.0 + flame_tiled: ^3.1.2 flutter: sdk: flutter diff --git a/packages/flame_tiled/pubspec.yaml b/packages/flame_tiled/pubspec.yaml index 20d4c0e5135..ec022c2d4a6 100644 --- a/packages/flame_tiled/pubspec.yaml +++ b/packages/flame_tiled/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_tiled resolution: workspace description: Tiled support for the Flame game engine. This uses the tiled package and provides wrappers and components to be used inside Flame. -version: 3.1.1 +version: 3.1.2 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_tiled funding: - https://opencollective.com/blue-fire @@ -18,7 +18,7 @@ environment: dependencies: collection: ^1.17.1 - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter meta: ^1.12.0 diff --git a/packages/flame_typled/CHANGELOG.md b/packages/flame_typled/CHANGELOG.md index ded7a29aa7b..024bb3a981f 100644 --- a/packages/flame_typled/CHANGELOG.md +++ b/packages/flame_typled/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.2 + + - Update a dependency to the latest release. + ## 0.1.1 - **FEAT**: Introduce flame_typled ([#3862](https://github.com/flame-engine/flame/issues/3862)). ([8986b840](https://github.com/flame-engine/flame/commit/8986b84013d3e7354e96e9fa49aa381c850b134b)) diff --git a/packages/flame_typled/example/pubspec.yaml b/packages/flame_typled/example/pubspec.yaml index 7538ad7792a..28f6ca52f4b 100644 --- a/packages/flame_typled/example/pubspec.yaml +++ b/packages/flame_typled/example/pubspec.yaml @@ -10,8 +10,8 @@ environment: sdk: ">=3.11.0 <4.0.0" dependencies: - flame: ^1.37.0 - flame_typled: ^0.1.1 + flame: ^1.38.0 + flame_typled: ^0.1.2 flutter: sdk: flutter diff --git a/packages/flame_typled/pubspec.yaml b/packages/flame_typled/pubspec.yaml index da3e3499f09..cecf755fc74 100644 --- a/packages/flame_typled/pubspec.yaml +++ b/packages/flame_typled/pubspec.yaml @@ -1,7 +1,7 @@ name: flame_typled resolution: workspace description: Typled sprite atlas support for the Flame Engine -version: 0.1.1 +version: 0.1.2 homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_typled funding: - https://opencollective.com/blue-fire @@ -17,7 +17,7 @@ environment: flutter: ">=3.41.0" dependencies: - flame: ^1.37.0 + flame: ^1.38.0 flutter: sdk: flutter typled: ^0.0.5 From 9af3ee2ebb0ba19924827b258aa032e1ac730995 Mon Sep 17 00:00:00 2001 From: Lukas Klingsbo Date: Wed, 22 Jul 2026 00:27:03 +0200 Subject: [PATCH 2/3] chore: Add benchmarks covering the component tree hot paths --- packages/flame/benchmark/README.md | 54 +++++ .../children_traversal_benchmark.dart | 197 ++++++++++++++++++ packages/flame/benchmark/common.dart | 17 ++ .../benchmark/component_churn_benchmark.dart | 111 ++++++++++ packages/flame/benchmark/main.dart | 20 +- .../benchmark/priority_change_benchmark.dart | 129 ++++++++++++ .../render_components_benchmark.dart | 6 +- .../flame/benchmark/type_query_benchmark.dart | 90 ++++++++ .../update_components_benchmark.dart | 12 +- 9 files changed, 629 insertions(+), 7 deletions(-) create mode 100644 packages/flame/benchmark/README.md create mode 100644 packages/flame/benchmark/children_traversal_benchmark.dart create mode 100644 packages/flame/benchmark/common.dart create mode 100644 packages/flame/benchmark/component_churn_benchmark.dart create mode 100644 packages/flame/benchmark/priority_change_benchmark.dart create mode 100644 packages/flame/benchmark/type_query_benchmark.dart diff --git a/packages/flame/benchmark/README.md b/packages/flame/benchmark/README.md new file mode 100644 index 00000000000..6ee8eaf9724 --- /dev/null +++ b/packages/flame/benchmark/README.md @@ -0,0 +1,54 @@ +# Flame benchmarks + +Micro-benchmarks for the hot paths of the Flame Component System. Use them to +detect regressions and to measure the effect of optimizations to the engine +internals (children containers, lifecycle processing, traversal, hit testing, +collision detection). + +## Running + +Run the whole suite: + +```console +flutter test benchmark/main.dart +``` + +Each file also has its own `main`, so a single suite can be run in isolation: + +```console +flutter test benchmark/priority_change_benchmark.dart +``` + +The `flutter test` runner executes in JIT mode with asserts enabled, which is +fine for comparing before/after numbers on the same machine. For +release-representative numbers, run on a device instead: + +```console +flutter run --release -t benchmark/main.dart -d +``` + +Note that `flutter test` prints `No tests ran` at the end; that is expected, +the benchmark results are printed above it. + +## Suites + +| File | Measures | +| --- | --- | +| `children_traversal_benchmark.dart` | Pure update-pass and render-pass overhead (container iteration, recursion) over wide, nested, and deep trees of no-op components, plus a barrier-dense tree where a fraction of parents override `updateTree`. | +| `component_churn_benchmark.dart` | Steady-state add/remove churn (bullets/particles) at 1k and 10k populations, and bulk add/remove cycles (level loads) through the lifecycle queue. | +| `priority_change_benchmark.dart` | Reordering costs: single-child priority changes across many parents, and the y-sort pattern where a whole container reorders every tick. | +| `type_query_benchmark.dart` | Maintenance and read cost of the `register()`/`query()` type-query caches under mixed-type churn. | +| `update_components_benchmark.dart` | End-to-end update pass with game-like logic and inputs on a two-level tree. | +| `render_components_benchmark.dart` | Render pass over a randomized tree onto a mock canvas. | +| `components_at_point_benchmark.dart` | Pointer hit testing (`componentsAtPoint`) with and without the hit-test cache. | +| `collision_detection_benchmark.dart` | The collision detection system with flat and nested hitbox hierarchies. | + +## Writing benchmarks + +- Mount the game with `mountGame` from `common.dart`. A `FlameGame` that is + never resized, loaded, and mounted skips `onLoad` and bypasses the lifecycle + queue entirely, silently benchmarking the wrong code path. +- Seed every `Random`, and precompute random sequences in `setup` when `run` + needs them, so that each `run` invocation performs identical work. +- Keep per-run work small enough that the harness gets many samples within its + measurement window (aim for well under ~100ms per `run`). diff --git a/packages/flame/benchmark/children_traversal_benchmark.dart b/packages/flame/benchmark/children_traversal_benchmark.dart new file mode 100644 index 00000000000..b8f7badff1d --- /dev/null +++ b/packages/flame/benchmark/children_traversal_benchmark.dart @@ -0,0 +1,197 @@ +import 'dart:ui'; + +import 'package:benchmark_harness/benchmark_harness.dart'; +import 'package:canvas_test/canvas_test.dart'; +import 'package:flame/components.dart'; +import 'package:flame/game.dart'; + +import 'common.dart'; + +const _dt = 1.0 / 60; + +/// These benchmarks measure the pure engine cost of the update and render +/// passes: iterating the children containers, the `updateTree`/`renderTree` +/// recursion, and the per-tick lifecycle-queue check. All components are +/// plain [Component]s with no-op [Component.update] and [Component.render], +/// so any time measured here is framework overhead rather than game logic. +/// +/// The tree shapes stress different aspects of the traversal: +/// - wide: one container holding many children (container iteration cost), +/// - nested: many small containers (iterator setup cost per parent), +/// - deep: a long parent chain (recursion depth cost), +/// - barrier: a nested tree where a fraction of the parents override +/// `updateTree` (via [HasTimeScale]). This is the realistic case for +/// evaluating flattened traversal designs, since components like +/// `SequenceEffect`, `Route`, and `HasTimeScale` users manage their own +/// subtree traversal and cannot be inlined into a flat list. +/// +/// Each run performs roughly one million component visits, so the reported +/// times are comparable across shapes and between the two passes. +abstract class _TraversalBenchmark extends AsyncBenchmarkBase { + _TraversalBenchmark( + super.name, { + required this.ticks, + required this.renderPass, + }); + + final int ticks; + final bool renderPass; + late final FlameGame _game; + late final Canvas _canvas; + + /// Builds the component tree under [world] and returns the total number of + /// components added. + int buildTree(World world); + + @override + Future setup() async { + _canvas = MockCanvas(); + _game = FlameGame(); + await mountGame(_game); + buildTree(_game.world); + await _game.ready(); + } + + @override + Future run() async { + if (renderPass) { + for (var i = 0; i < ticks; i++) { + _game.render(_canvas); + } + } else { + for (var i = 0; i < ticks; i++) { + _game.update(_dt); + } + } + } +} + +/// 10k components in a single children container. +class WideTreeBenchmark extends _TraversalBenchmark { + static const _amountChildren = 10000; + + WideTreeBenchmark({required super.renderPass}) + : super( + '${renderPass ? 'Render' : 'Update'} wide tree (10k x 1)', + ticks: 100, + ); + + static Future main() async { + await WideTreeBenchmark(renderPass: false).report(); + await WideTreeBenchmark(renderPass: true).report(); + } + + @override + int buildTree(World world) { + world.addAll(List.generate(_amountChildren, (_) => Component())); + return _amountChildren; + } +} + +/// 1k parents with 10 children each: many small children containers. +class NestedTreeBenchmark extends _TraversalBenchmark { + static const _amountParents = 1000; + static const _amountChildren = 10; + + NestedTreeBenchmark({required super.renderPass}) + : super( + '${renderPass ? 'Render' : 'Update'} nested tree (1k x 10)', + ticks: 90, + ); + + static Future main() async { + await NestedTreeBenchmark(renderPass: false).report(); + await NestedTreeBenchmark(renderPass: true).report(); + } + + @override + int buildTree(World world) { + world.addAll( + List.generate( + _amountParents, + (_) => Component( + children: List.generate(_amountChildren, (_) => Component()), + ), + ), + ); + return _amountParents * (_amountChildren + 1); + } +} + +/// A chain 100 levels deep where every level also holds 9 leaf children. +class DeepTreeBenchmark extends _TraversalBenchmark { + static const _depth = 100; + static const _leavesPerLevel = 9; + + DeepTreeBenchmark({required super.renderPass}) + : super( + '${renderPass ? 'Render' : 'Update'} deep tree (100 levels)', + ticks: 1000, + ); + + static Future main() async { + await DeepTreeBenchmark(renderPass: false).report(); + await DeepTreeBenchmark(renderPass: true).report(); + } + + @override + int buildTree(World world) { + // Build the chain bottom-up so each level is created with its children. + Component? next; + for (var level = 0; level < _depth; level++) { + next = Component( + children: [ + ...List.generate(_leavesPerLevel, (_) => Component()), + if (next != null) next, + ], + ); + } + world.add(next!); + return _depth * (_leavesPerLevel + 1); + } +} + +/// Same shape as the nested tree, but every 10th parent overrides +/// `updateTree` through [HasTimeScale] (with the time scale left at 1.0, so +/// the traversal work stays identical and only the override indirection is +/// measured). +class BarrierTreeUpdateBenchmark extends _TraversalBenchmark { + static const _amountParents = 1000; + static const _amountChildren = 10; + static const _barrierInterval = 10; + + BarrierTreeUpdateBenchmark() + : super( + 'Update barrier tree (1k x 10, 10% time-scaled)', + ticks: 90, + renderPass: false, + ); + + static Future main() async { + await BarrierTreeUpdateBenchmark().report(); + } + + @override + int buildTree(World world) { + world.addAll( + List.generate(_amountParents, (i) { + final children = List.generate(_amountChildren, (_) => Component()); + return i % _barrierInterval == 0 + ? _TimeScaledParent(children: children) + : Component(children: children); + }), + ); + return _amountParents * (_amountChildren + 1); + } +} + +class _TimeScaledParent extends Component with HasTimeScale { + _TimeScaledParent({super.children}); +} + +Future main() async { + await WideTreeBenchmark.main(); + await NestedTreeBenchmark.main(); + await DeepTreeBenchmark.main(); + await BarrierTreeUpdateBenchmark.main(); +} diff --git a/packages/flame/benchmark/common.dart b/packages/flame/benchmark/common.dart new file mode 100644 index 00000000000..9ba11ce0387 --- /dev/null +++ b/packages/flame/benchmark/common.dart @@ -0,0 +1,17 @@ +import 'package:flame/game.dart'; + +/// Brings a [FlameGame] to a fully loaded and mounted state without a +/// [GameWidget], mirroring what `flame_test`'s `initializeGame` does. +/// +/// Without this, `hasLayout` stays false: components are placed directly into +/// the children containers without ever loading or mounting, `onLoad` never +/// runs, and lifecycle events bypass the queue. Benchmarks would then measure +/// a very different code path than a real game. +Future mountGame(FlameGame game, {Vector2? size}) async { + game.onGameResize(size ?? Vector2(800, 600)); + // ignore: invalid_use_of_internal_member + await game.load(); + // ignore: invalid_use_of_internal_member + game.mount(); + game.update(0); +} diff --git a/packages/flame/benchmark/component_churn_benchmark.dart b/packages/flame/benchmark/component_churn_benchmark.dart new file mode 100644 index 00000000000..267a40d060d --- /dev/null +++ b/packages/flame/benchmark/component_churn_benchmark.dart @@ -0,0 +1,111 @@ +import 'dart:collection'; + +import 'package:benchmark_harness/benchmark_harness.dart'; +import 'package:flame/components.dart'; +import 'package:flame/game.dart'; + +import 'common.dart'; + +const _dt = 1.0 / 60; + +/// Measures the steady-state add/remove churn typical of bullets, particles +/// and spawners: every tick a batch of components is added, an older batch is +/// removed, and the game updates. This exercises the full lifecycle pipeline +/// (enqueueing, [FlameGame.processLifecycleEvents], loading, mounting, +/// unmounting) plus the children-container add/remove operations, amid a +/// stable population of live components. +/// +/// The benchmark runs at two population sizes: removal cost inside one large +/// sibling container scales differently per container implementation (for +/// example, a sorted list pays a linear scan and memmove per removal, while a +/// tree pays a logarithmic lookup), so a container replacement must be +/// evaluated at both sizes. +class ComponentChurnBenchmark extends AsyncBenchmarkBase { + static const _batchSize = 100; + static const _liveBatches = 5; + static const _amountTicks = 60; + + final int staticPopulation; + late final FlameGame _game; + final Queue> _batches = Queue(); + + ComponentChurnBenchmark({required this.staticPopulation}) + : super( + 'Lifecycle churn ' + '(100 per tick, ${staticPopulation ~/ 1000}k population)', + ); + + static Future main() async { + await ComponentChurnBenchmark(staticPopulation: 1000).report(); + await ComponentChurnBenchmark(staticPopulation: 10000).report(); + } + + List _newBatch() { + return List.generate(_batchSize, (_) => Component()); + } + + @override + Future setup() async { + _game = FlameGame(); + await mountGame(_game); + await _game.world.addAll( + List.generate(staticPopulation, (_) => Component()), + ); + for (var i = 0; i < _liveBatches; i++) { + final batch = _newBatch(); + _batches.addLast(batch); + await _game.world.addAll(batch); + } + await _game.ready(); + } + + @override + Future run() async { + for (var i = 0; i < _amountTicks; i++) { + _game.world.removeAll(_batches.removeFirst()); + final batch = _newBatch(); + _batches.addLast(batch); + await _game.world.addAll(batch); + _game.update(_dt); + } + } +} + +/// Measures bulk mounting and unmounting: 1000 components are added and +/// processed in one tick, then all removed and processed in the next. This +/// stresses [FlameGame.processLifecycleEvents] with a long event queue, as +/// happens on level loads and level teardowns. +class MassAddRemoveBenchmark extends AsyncBenchmarkBase { + static const _amountComponents = 1000; + static const _amountCycles = 5; + + late final FlameGame _game; + + MassAddRemoveBenchmark() : super('Mass add/remove (1k per cycle)'); + + static Future main() async { + await MassAddRemoveBenchmark().report(); + } + + @override + Future setup() async { + _game = FlameGame(); + await mountGame(_game); + } + + @override + Future run() async { + for (var i = 0; i < _amountCycles; i++) { + final components = List.generate(_amountComponents, (_) => Component()); + await _game.world.addAll(components); + _game.update(_dt); + _game.world.removeAll(components); + _game.update(_dt); + } + } +} + +Future main() async { + await ComponentChurnBenchmark.main(); + await MassAddRemoveBenchmark.main(); +} diff --git a/packages/flame/benchmark/main.dart b/packages/flame/benchmark/main.dart index 61eb9b073e1..723946a20f9 100644 --- a/packages/flame/benchmark/main.dart +++ b/packages/flame/benchmark/main.dart @@ -1,7 +1,19 @@ -import 'render_components_benchmark.dart'; -import 'update_components_benchmark.dart'; +import 'children_traversal_benchmark.dart' as children_traversal; +import 'collision_detection_benchmark.dart' as collision_detection; +import 'component_churn_benchmark.dart' as component_churn; +import 'components_at_point_benchmark.dart' as components_at_point; +import 'priority_change_benchmark.dart' as priority_change; +import 'render_components_benchmark.dart' as render_components; +import 'type_query_benchmark.dart' as type_query; +import 'update_components_benchmark.dart' as update_components; Future main() async { - await RenderComponentsBenchmark.main(); - await UpdateComponentsBenchmark.main(); + await children_traversal.main(); + await component_churn.main(); + await priority_change.main(); + await type_query.main(); + await update_components.main(); + await render_components.main(); + await components_at_point.main(); + await collision_detection.main(); } diff --git a/packages/flame/benchmark/priority_change_benchmark.dart b/packages/flame/benchmark/priority_change_benchmark.dart new file mode 100644 index 00000000000..8e79199cdae --- /dev/null +++ b/packages/flame/benchmark/priority_change_benchmark.dart @@ -0,0 +1,129 @@ +import 'dart:math'; + +import 'package:benchmark_harness/benchmark_harness.dart'; +import 'package:flame/components.dart'; +import 'package:flame/game.dart'; + +import 'common.dart'; + +const _dt = 1.0 / 60; +const _randomSeed = 69420; + +/// Measures the cost of changing the priority of a single child in many +/// sibling containers: every tick, one child per parent gets a new priority +/// and the next update processes the resulting reorder events. Today each +/// changed parent pays a full rebalance of all its children, so this +/// benchmark captures the "one bullet changes z-order" worst case. +/// +/// All priority values and child picks are precomputed in [setup] and replayed +/// identically on every run, so results are comparable across engine versions. +class SiblingPriorityChangeBenchmark extends AsyncBenchmarkBase { + static const _amountParents = 100; + static const _amountChildren = 50; + static const _amountTicks = 50; + + late final FlameGame _game; + late final List> _children; + late final List> _changes; + + SiblingPriorityChangeBenchmark() + : super('Priority change (1 child per parent)'); + + static Future main() async { + await SiblingPriorityChangeBenchmark().report(); + } + + @override + Future setup() async { + final random = Random(_randomSeed); + _game = FlameGame(); + await mountGame(_game); + final parents = List.generate( + _amountParents, + (_) => Component( + children: List.generate( + _amountChildren, + (i) => Component(priority: i), + ), + ), + ); + await _game.world.addAll(parents); + await _game.ready(); + _children = [ + for (final parent in parents) parent.children.toList(growable: false), + ]; + + // For every tick, one (childIndex, newPriority) pair per parent. + _changes = List.generate(_amountTicks, (_) { + return List.generate(_amountParents, (_) { + return ( + random.nextInt(_amountChildren), + random.nextInt(_amountChildren * 20), + ); + }); + }); + } + + @override + Future run() async { + for (final tickChanges in _changes) { + for (var parent = 0; parent < _amountParents; parent++) { + final (childIndex, newPriority) = tickChanges[parent]; + _children[parent][childIndex].priority = newPriority; + } + _game.update(_dt); + } + } +} + +/// Measures the y-sort pattern: every child of a single large container gets +/// a new priority every tick (as when sorting sprites by their y coordinate +/// while they move), followed by an update that reorders the whole container. +class YSortPriorityBenchmark extends AsyncBenchmarkBase { + static const _amountChildren = 1000; + static const _amountTicks = 30; + + late final FlameGame _game; + late final List _children; + late final List> _priorities; + + YSortPriorityBenchmark() : super('Priority change (y-sort, all children)'); + + static Future main() async { + await YSortPriorityBenchmark().report(); + } + + @override + Future setup() async { + final random = Random(_randomSeed); + _game = FlameGame(); + await mountGame(_game); + await _game.world.addAll( + List.generate(_amountChildren, (i) => Component(priority: i)), + ); + await _game.ready(); + _children = _game.world.children.toList(growable: false); + + // A fresh permutation of priorities for every tick, so almost every child + // actually changes value (identical consecutive values are skipped by the + // priority setter). + _priorities = List.generate(_amountTicks, (_) { + return List.generate(_amountChildren, (i) => i)..shuffle(random); + }); + } + + @override + Future run() async { + for (final tickPriorities in _priorities) { + for (var i = 0; i < _children.length; i++) { + _children[i].priority = tickPriorities[i]; + } + _game.update(_dt); + } + } +} + +Future main() async { + await SiblingPriorityChangeBenchmark.main(); + await YSortPriorityBenchmark.main(); +} diff --git a/packages/flame/benchmark/render_components_benchmark.dart b/packages/flame/benchmark/render_components_benchmark.dart index 5406b4966cc..66a9b0fe08f 100644 --- a/packages/flame/benchmark/render_components_benchmark.dart +++ b/packages/flame/benchmark/render_components_benchmark.dart @@ -7,6 +7,8 @@ import 'package:canvas_test/canvas_test.dart'; import 'package:flame/components.dart'; import 'package:flame/game.dart'; +import 'common.dart'; + const _amountComponents = 500; const _amountTicks = 2; const _depthMultiplier = 0.25; @@ -29,7 +31,7 @@ class RenderComponentsBenchmark extends AsyncBenchmarkBase { _canvas = MockCanvas(); _game = FlameGame(); - _game.onGameResize(Vector2.all(100.0)); + await mountGame(_game, size: Vector2.all(100.0)); await _game.addAll( List.generate( @@ -75,3 +77,5 @@ class _BenchmarkComponent extends PositionComponent { } } } + +Future main() => RenderComponentsBenchmark.main(); diff --git a/packages/flame/benchmark/type_query_benchmark.dart b/packages/flame/benchmark/type_query_benchmark.dart new file mode 100644 index 00000000000..b235dc18bc3 --- /dev/null +++ b/packages/flame/benchmark/type_query_benchmark.dart @@ -0,0 +1,90 @@ +import 'dart:collection'; + +import 'package:benchmark_harness/benchmark_harness.dart'; +import 'package:flame/components.dart'; +import 'package:flame/game.dart'; + +import 'common.dart'; + +const _dt = 1.0 / 60; + +/// Measures the per-type query caches of the children container +/// (`children.register()` / `children.query()`), which Flame uses +/// internally for hitboxes (`GestureHitboxes`), post-processing +/// (`CameraComponent`), and layout (`LinearLayoutComponent`). +/// +/// Every add and remove has to update all registered caches, so this +/// benchmark churns a mixed-type population in a container with two +/// registered queries while reading one query per tick. A children-container +/// replacement must keep both the cache-maintenance and the query-read cost +/// at least this fast. +class TypeQueryChurnBenchmark extends AsyncBenchmarkBase { + static const _amountStatic = 1000; + static const _batchSize = 50; + static const _liveBatches = 5; + static const _amountTicks = 60; + static const _markedInterval = 5; + + late final FlameGame _game; + final Queue> _batches = Queue(); + + TypeQueryChurnBenchmark() : super('Type-query churn (2 registered queries)'); + + static Future main() async { + await TypeQueryChurnBenchmark().report(); + } + + List _newBatch() { + return List.generate( + _batchSize, + (i) => i % _markedInterval == 0 ? _MarkedComponent() : _PlainComponent(), + ); + } + + @override + Future setup() async { + _game = FlameGame(); + await mountGame(_game); + _game.world.children.register<_MarkedComponent>(); + _game.world.children.register<_PlainComponent>(); + await _game.world.addAll( + List.generate( + _amountStatic, + (i) => + i % _markedInterval == 0 ? _MarkedComponent() : _PlainComponent(), + ), + ); + for (var i = 0; i < _liveBatches; i++) { + final batch = _newBatch(); + _batches.addLast(batch); + await _game.world.addAll(batch); + } + await _game.ready(); + } + + @override + Future run() async { + var visited = 0; + for (var i = 0; i < _amountTicks; i++) { + _game.world.removeAll(_batches.removeFirst()); + final batch = _newBatch(); + _batches.addLast(batch); + await _game.world.addAll(batch); + for (final marked in _game.world.children.query<_MarkedComponent>()) { + visited += marked.marker; + } + _game.update(_dt); + } + assert(visited > 0); + } +} + +class _MarkedComponent extends Component { + final int marker = 1; +} + +class _PlainComponent extends Component {} + +Future main() async { + await TypeQueryChurnBenchmark.main(); +} diff --git a/packages/flame/benchmark/update_components_benchmark.dart b/packages/flame/benchmark/update_components_benchmark.dart index bfa704d075d..83a5c749dd9 100644 --- a/packages/flame/benchmark/update_components_benchmark.dart +++ b/packages/flame/benchmark/update_components_benchmark.dart @@ -4,9 +4,11 @@ import 'package:benchmark_harness/benchmark_harness.dart'; import 'package:flame/components.dart'; import 'package:flame/game.dart'; +import 'common.dart'; + const _amountComponents = 1000; -const _amountTicks = 2000; -const _amountInputs = 500; +const _amountTicks = 500; +const _amountInputs = 125; const _amountChildren = 10; class UpdateComponentsBenchmark extends AsyncBenchmarkBase { @@ -28,6 +30,10 @@ class UpdateComponentsBenchmark extends AsyncBenchmarkBase { @override Future setup() async { _game = FlameGame(); + // Mount the game properly so that the components load and mount for real: + // without this, onLoad never runs and the child components are never + // created, making the benchmark measure a tree 11x smaller than intended. + await mountGame(_game); await _game.addAll( List.generate(_amountComponents, _BenchmarkComponent.new), ); @@ -103,3 +109,5 @@ class _BenchmarkComponent extends PositionComponent { @override String toString() => '[Component $id]'; } + +Future main() => UpdateComponentsBenchmark.main(); From fc5868a383745f644435105fdd3b013e66208f1f Mon Sep 17 00:00:00 2001 From: Lukas Klingsbo Date: Wed, 22 Jul 2026 09:29:24 +0200 Subject: [PATCH 3/3] chore: Appease markdown-lint and cspell --- packages/flame/benchmark/README.md | 33 +++++++++++++------ .../benchmark/component_churn_benchmark.dart | 10 +++--- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/packages/flame/benchmark/README.md b/packages/flame/benchmark/README.md index 6ee8eaf9724..16c4521fa2b 100644 --- a/packages/flame/benchmark/README.md +++ b/packages/flame/benchmark/README.md @@ -5,6 +5,7 @@ detect regressions and to measure the effect of optimizations to the engine internals (children containers, lifecycle processing, traversal, hit testing, collision detection). + ## Running Run the whole suite: @@ -30,18 +31,30 @@ flutter run --release -t benchmark/main.dart -d Note that `flutter test` prints `No tests ran` at the end; that is expected, the benchmark results are printed above it. + ## Suites -| File | Measures | -| --- | --- | -| `children_traversal_benchmark.dart` | Pure update-pass and render-pass overhead (container iteration, recursion) over wide, nested, and deep trees of no-op components, plus a barrier-dense tree where a fraction of parents override `updateTree`. | -| `component_churn_benchmark.dart` | Steady-state add/remove churn (bullets/particles) at 1k and 10k populations, and bulk add/remove cycles (level loads) through the lifecycle queue. | -| `priority_change_benchmark.dart` | Reordering costs: single-child priority changes across many parents, and the y-sort pattern where a whole container reorders every tick. | -| `type_query_benchmark.dart` | Maintenance and read cost of the `register()`/`query()` type-query caches under mixed-type churn. | -| `update_components_benchmark.dart` | End-to-end update pass with game-like logic and inputs on a two-level tree. | -| `render_components_benchmark.dart` | Render pass over a randomized tree onto a mock canvas. | -| `components_at_point_benchmark.dart` | Pointer hit testing (`componentsAtPoint`) with and without the hit-test cache. | -| `collision_detection_benchmark.dart` | The collision detection system with flat and nested hitbox hierarchies. | +- `children_traversal_benchmark.dart`: pure update-pass and render-pass + overhead (container iteration, recursion) over wide, nested, and deep trees + of no-op components, plus a barrier-dense tree where a fraction of the + parents override `updateTree`. +- `component_churn_benchmark.dart`: steady-state add/remove churn + (bullets/particles) at 1k and 10k populations, and bulk add/remove cycles + (level loads) through the lifecycle queue. +- `priority_change_benchmark.dart`: reordering costs: single-child priority + changes across many parents, and the y-sort pattern where a whole container + reorders every tick. +- `type_query_benchmark.dart`: maintenance and read cost of the + `register()`/`query()` type-query caches under mixed-type churn. +- `update_components_benchmark.dart`: end-to-end update pass with game-like + logic and inputs on a two-level tree. +- `render_components_benchmark.dart`: render pass over a randomized tree onto + a mock canvas. +- `components_at_point_benchmark.dart`: pointer hit testing + (`componentsAtPoint`) with and without the hit-test cache. +- `collision_detection_benchmark.dart`: the collision detection system with + flat and nested hitbox hierarchies. + ## Writing benchmarks diff --git a/packages/flame/benchmark/component_churn_benchmark.dart b/packages/flame/benchmark/component_churn_benchmark.dart index 267a40d060d..3d71659a5ab 100644 --- a/packages/flame/benchmark/component_churn_benchmark.dart +++ b/packages/flame/benchmark/component_churn_benchmark.dart @@ -12,14 +12,14 @@ const _dt = 1.0 / 60; /// and spawners: every tick a batch of components is added, an older batch is /// removed, and the game updates. This exercises the full lifecycle pipeline /// (enqueueing, [FlameGame.processLifecycleEvents], loading, mounting, -/// unmounting) plus the children-container add/remove operations, amid a +/// unmounting) plus the children-container add and remove operations, amid a /// stable population of live components. /// /// The benchmark runs at two population sizes: removal cost inside one large /// sibling container scales differently per container implementation (for -/// example, a sorted list pays a linear scan and memmove per removal, while a -/// tree pays a logarithmic lookup), so a container replacement must be -/// evaluated at both sizes. +/// example, a sorted list shifts elements on every removal, while a tree does +/// a logarithmic lookup), so a container replacement must be evaluated at +/// both sizes. class ComponentChurnBenchmark extends AsyncBenchmarkBase { static const _batchSize = 100; static const _liveBatches = 5; @@ -74,7 +74,7 @@ class ComponentChurnBenchmark extends AsyncBenchmarkBase { /// Measures bulk mounting and unmounting: 1000 components are added and /// processed in one tick, then all removed and processed in the next. This /// stresses [FlameGame.processLifecycleEvents] with a long event queue, as -/// happens on level loads and level teardowns. +/// happens when levels are loaded and torn down. class MassAddRemoveBenchmark extends AsyncBenchmarkBase { static const _amountComponents = 1000; static const _amountCycles = 5;