flame 1.9.1 copy "flame: ^1.9.1" to clipboard
flame: ^1.9.1 copied to clipboard

A minimalist Flutter game engine, provides a nice set of somewhat independent modules you can choose from.

1.9.1 #

  • FIX: Add necessary generics on mixins on FlameGame (#2763). (b1f5ff26)
  • FIX: Correctly refreshes the widget after new mouse detector (#2765). (64330022)
  • FIX: Allow moving to a new parent in the same tick (#2762). (313650ea)

1.9.0 #

Note: This release has breaking changes.

  • REFACTOR: Enable DCM linting (#2667). (27a8fd61)
  • REFACTOR: Fix lint issues across the codebase - Part 2 (#2677). (10e4109c)
  • FIX: Prevent onRemove/onDetach being called for initial Gesture Detector addition (#2653). (d1721464)
  • FIX: Use root game for gestures (#2756). (f5d0cb38)
  • FIX: Add possibility to remove a child and add it to the same parent (#2755). (285d31ab)
  • FIX: Adding scale parameter to RectangleComponent constructors (#2730). (173908d9)
  • FIX: Set CameraComponent.priority to max (#2732). (820ece1c)
  • FIX: Change to FilterQuality.medium instead of high (#2733). (fc19890c)
  • FIX: Avoid creating new Vector2 in globalToLocal and localToGlobal (#2727). (9fb3bf8d)
  • FIX: Ambiguation is not needed in render box anymore (#2711). (b3d78f58)
  • FIX: HasGameReference should default to FlameGame (#2710). (93dcb3a1)
  • FIX: Make debugCoordinatesPrecision into a variable instead of a getter (#2713). (9918c051)
  • FIX: Absolute angle takes into account BodyComponent ancestors too (#2678). (75aee767)
  • FEAT: SpawnComponent (#2709). (83f5ea45)
  • FEAT: Add globalToLocal and localToGlobal methods to viewport, viewfinder and camera (#2720). (00185a3b)
  • FEAT: Add HoverCallbacks (#2706). (d460b846)
  • FEAT: Add onDispose to game.dart called from game_widget.dart (#2659). (2f44e483)
  • FEAT(flame): Add helper methods to create frame data on SpriteSheet (#2754). (47722199)
  • FEAT: Implement Snapshot mixin on PositionComponent (#2695). (c1ee24a2)
  • FEAT: Add TextElementComponent (#2694). (10fb65f6)
  • FEAT: Component visibility (HasVisibility mixin) (#2681). (76405daf)
  • FEAT: Add HasWorldReference mixin (#2746). (9105411d)
  • FEAT: Add pause and isPaused to SpriteAnimationTicker (#2660). (37271f5c)
  • DOCS: Improve documentation around SpriteFontTextFormatter (#2661). (8401c569)
  • DOCS: Improved spellchecking (#2722). (2f973abe)
  • DOCS: Enable CSpell on tests (#2723). (e051298c)
  • DOCS: Improve comments and documentation for text-rendering Nodes (#2662). (96978e24)
  • DOCS: Fix examples for v1.9.0 (#2757). (152fbb61)
  • BREAKING REFACTOR: Rename (Text) Elements, Nodes and Styles for clarity, add docs (#2700). (4b420b79)
  • BREAKING REFACTOR: Extract TextRendererFactory (#2680). (eeb6749f)
  • BREAKING REFACTOR: Make TextElement more usable on its own (#2679). (1a64443c)
  • BREAKING REFACTOR: Simplify text rendering pipeline (#2663). (34f69b95)
  • BREAKING REFACTOR: Kill TextRenderer, Long Live TextRenderer (#2683). (a1cb9a06)
  • BREAKING FIX: Update should be called before render in first tick (#2714). (51932c09)
  • BREAKING FEAT: Move Forge2DGame to use CameraComponent (#2728). (7a3d5126)
  • BREAKING FEAT: Pause game when backgrounded (#2642). (521e56b6)
  • BREAKING FEAT: Add CameraComponent to FlameGame (#2740). (7c2f4000)

Migration instructions #

In this release the old camera system was renamed to oldCamera and replaced by a default World and a CameraComponent which is now named camera.

To migrate from the old system:

  1. Instead of adding the components directly to your game with add, add them to the world, this will make the CameraComponent responsible for rendering them instead of the game directly.

    world.add(yourComponent);
    
  2. (Optional) If you want to add a HUD component, instead of using PositionType, add the component as a child of the viewport.

    cameraComponent.viewport.add(yourHudComponent);
    
  3. (Optional) If you want to have a specificly set up CameraComponent in your game from the start you can pass in a camera to the constructor.

    class MyGame extends FlameGame {
      MyGame() 
          : super(
              camera: CameraComponent.withFixedResolution(
                width: 800,
                height: 600,
              ),
            );
    
    
  4. (Optional) A lot of the time it is no longer necessary to extend FlameGame, you can instead build your game or level by extending the World and pass it in to the FlameGame.

    runApp(
      GameWidget(game: FlameGame(world: MyWorld()),
    );
    
    class MyWorld extends World with TapCallbacks {
      @override
      Future<void> onLoad() async {
        // Load your components
      }
    
      @override
      void onTapDown(TapDownEvent event) {
        print(event.localPosition); // Position of the tap in the world
      }
    }
    

1.8.2 #

Note: This release has breaking changes.

  • PERF: Improve performance of raycasts (#2617). (8e0a7879)
  • FIX: Reset _completeCompleter in ticker (#2636). (a35d3a10)
  • FIX: Viewport should recieve events before the world (#2630). (e852064e)
  • FIX: Use ComponentKeys to keep track of dispatchers (#2629). (ff59aa15)
  • FIX: FlameGame onRemove fix to prevent memory leak (#2602). (dac2ebbf)
  • FIX: Only use pre-set ReadonlySizeProvider for sizing in HudMarginComponent (#2611). (832c0510)
  • FIX: TextBoxConfig dismissDelay to not be ignored (#2607). (1567b389)
  • FEAT: Adding key argument to shape components (#2632). (c542d3c3)
  • FEAT: Add optional world input to CameraComponent.canSee (#2616). (1cad0b23)
  • FEAT: Add a Circle.fromPoints utility method (#2603). (a83f2815)
  • FEAT: Add a midpoint getter to LineSegment (#2605). (1f9f3509)
  • FEAT: Add Rectangle.fromLTWH and Rect.toFlameRectangle utility methods (#2604). (76271cee)
  • DOCS: Add more guidance to collision detection algorithm choices (#2624). (781e8983)
  • BREAKING PERF: Pool CollisionProspects and remove some list creations from the collision detection (#2625). (e430b6cd)
  • BREAKING FEAT: Make world nullable in CameraComponent (#2615). (14f51635)

1.8.1 #

Note: This release has breaking changes.

  • FIX: Adds a check to confirm the component is not loaded (#2579). (985400f2)
  • FIX: Animation ticker readability improvements (#2578). (667a1698)
  • FIX: Remove mustCallSuper from onComponentTypeCheck (#2561). (bcae760c)
  • FIX: Update sdk constraints to >=3.0.0 (#2554). (2f71e06e)
  • FIX: Reduce the Vector2 creations in Anchor (#2550). (5a9434b0)
  • FIX: Fix disappearing text on TextBoxComponent for larger pixelRatios (#2540). (6e1d5466)
  • FEAT: Option to prevent propagating collision events from ShapeHitbox to _hitboxParent (#2594). (a58d7436)
  • FEAT: Adding filterQuality arguments to Parallax load methods (#2596). (ff3d9107)
  • FEAT: Option to use toImageSync in ImageComposition class (#2593). (66d5f97d)
  • FEAT: ComponentKey API (#2566). (b3efb612)
  • FEAT(flame): Set a default negative priority on the world for general use (#2572). (390e9700)
  • FEAT: Add useful methods to Rectangle class (#2562). (4710530b)
  • BREAKING FIX: Convert PositionEvent.canvasPosition to local coordinates (#2598). (87139c85)

1.8.0 #

Note: This release has breaking changes.

  • FIX: Update sdk constraints to >=3.0.0 (#2554). (2f71e06e)
  • FIX: Reduce the Vector2 creations in Anchor (#2550). (5a9434b0)
  • FIX: Fix disappearing text on TextBoxComponent for larger pixelRatios (#2540). (6e1d5466)
  • FIX: Avoid the creation of Vector2 objects in Parallax update (#2536). (3849f07d)
  • FIX: Solve warnings from 3.10.0 analyzer (#2532). (b41622db)
  • FIX: Move errorBuilder and loadingBuilder to constructors (#2526). (55ec0bc3)
  • FEAT: Add onComplete callback to AnimationWidget (#2515). (0b68be8a)
  • FEAT: Add stepEngine to Game (#2516). (1ed2c5a2)
  • FEAT: Customise grid of NineTileBox (#2495). (a25b0a03)
  • FEAT: Accept CollisionType in hitbox constructor (#2509). (89926227)
  • DOCS: Update content types of sphinx code snippets (#2519). (306ad320)
  • BREAKING REFACTOR: Move CameraComponent and events out of experimental (#2505). (87b8a067)
  • BREAKING FEAT: Add SpriteAnimationTicker (#2457). (a50c80cf)

Migration instructions #

In the future (maybe as early as v1.9.0) this camera will be removed, please use the CameraComponent instead.

This is the simplest way of using the CameraComponent:

  1. Add variables for a CameraComponent and a World to your game class

    final world = World();
    late final CameraComponent cameraComponent;
    
  2. In your onLoad method, initialize the cameraComponent and add the world to it.

    @override
    void onLoad() {
      cameraComponent = CameraComponent(world: world);
      addAll([cameraComponent, world]);
    }
    
  3. Instead of adding the root components directly to your game with add, add them to the world.

    world.add(yourComponent);
    
  4. (Optional) If you want to add a HUD component, instead of using PositionType, add the component as a child of the viewport.

    cameraComponent.viewport.add(yourHudComponent);
    

1.7.3 #

  • REFACTOR: Make atlas status to be more readable (#2502). (643793d0)
  • REFACTOR: Add new lint rules (#2477). (dbda37b8)
  • FIX: Reverse invalid polygon definitions (#2503). (c4c516eb)
  • FIX: Fill in mount implementation in HasTappables (#2496). (d51a612f)
  • FIX: Modify size only if changed while auto-resizing (#2498). (aa8d49da)
  • FIX: RecycleQueue cannot extends and implements Iterable at the same time (#2497). (3e5be3d6)
  • FIX: Remove memory leak when creating the image from PictureRecorder (#2493). (a66f2bc0)
  • FEAT: Bump ordered_set version (#2500). (81303ea9)
  • FEAT: Deprecate Component.changeParent (#2478). (bd3e7886)

1.7.2 #

  • FIX: A mistake in auto-resizing disabling logic (#2471). (e7ebf8e5)
  • FIX: It should be possible to re-add ColorEffect (#2469). (6fa9e9d5)
  • FEAT: Add isDragged in DragCallbacks mixin (#2472). (de630a1c)

1.7.1 #

  • FIX: Stop auto-resizing on external size change in sprite based components (#2467). (df236af4)

1.7.0 #

Note: This release has breaking changes.

  • REFACTOR: Remove "items" variable from core Broadphase class. (#2284). (1819c575)
  • REFACTOR: Added ComponentTreeRoot (#2300). (619b9b15)
  • REFACTOR: Simplify how images.dart decodes images (#2293). (b4925423)
  • REFACTOR: Use variable name on toString in component_test.dart (#2377). (f5c0e5e9)
  • REFACTOR: Remove unused variable "tapTimes" from multi_touch_tap_detector_test.dart (#2379). (cd2b2a10)
  • REFACTOR: Component rebalancing is now performed via a global queue (#2352). (1ef51879)
  • REFACTOR: Component adoption now handled via ComponentTreeRoot (#2332). (5ceb5dda)
  • FIX: Auto-resize SpriteComponent on sprite change (#2430). (158460d7)
  • FIX: Update MoveAlongPathEffect (#2422). (295cd724)
  • FIX: Removed component to be deleted from _broadphaseCheckCache (#2282). (236a74ce)
  • FIX: TextBoxComponent rendering for new line (#2413). (9008998e)
  • FIX: Buttons in ButtonComponents should not be final (#2410). (55f66add)
  • FIX: Set size of viewports in onLoad (#2452). (d1ac01f5)
  • FIX: Incorrect JoystickComponent position in landscape mode #2387 (#2389). (f125593a)
  • FIX: RouterComponent replace methods to correctly handle previous/nextRoute (#2296). (2b1f2266)
  • FIX: Use the hitboxParent instead of the parent in the componentTypeCheck (#2335). (7920e2ba)
  • FIX: Materialize list in Component.removeWhere (#2458). (13cce4ae)
  • FIX: TextBoxComponent's boxConfig timePerChar generates "Optimized Out" error #2143 (#2328). (5874f600)
  • FIX: Camera no longer "sticks" to boundary with BoundedPositionBehavior (#2307). (914dc6a7)
  • FEAT: Add reusable vector to the Vector2 extension (#2429). (03d45df5)
  • FEAT: Change HasCollisionDetection to be on Component (#2404). (637c258b)
  • FEAT: Added AlignComponent layout component (#2350). (4f5e56f0)
  • FEAT: Add autoResize for SpriteAnimationComponent and SpriteAnimationGroupComponent (#2453). (dbeba238)
  • FEAT: Adding ImageExtension.resize (#2418). (a3f1601d)
  • FEAT: Add position and anchor params for Sprite and SpriteAnimation Particles (#2370). (181e0b59)
  • FEAT: Add autoResize for SpriteGroupComponent (#2442). (1576bd83)
  • FEAT: Introduce flame_noise, deprecate NoiseEffectController (#2393). (b2fdf06a)
  • FEAT: Added HardwareKeyboardDetector (#2257). (95b1fc0f)
  • FEAT: Allow people to opt-out on repaint boundary (#2341). (b6aeec24)
  • FEAT: Add HasTimeScale mixin (#2431). (d2a8fe01)
  • FEAT: Add DoubleTapCallbacks that receives double-tap events. (#2327). (b5f79d1c)
  • FEAT: Add ability to opt-out flip (#2316). (34c3b6bd)
  • FEAT: Make limit field mutable in the Timer class (#2358). (4e0a8c46)
  • DOCS: Rename caveace asset to cave_ace in our examples (#2304). (e2399f91)
  • DOCS: Update cspell github action and configuration (#2325). (e0a4c07f)
  • DOCS: Fix actual typos that made into our dictionary (#2305). (343b8452)
  • DOCS: Add Flame logo for pub.dev (#2338). (65091f34)
  • DOCS: Refactor documentation for GameWidget (#2344). (655824fc)
  • DOCS: Update funding links (#2420). (8294a2a1)
  • DOCS: Fix old doc code (#2322). (90321658)
  • BREAKING REFACTOR: Use ComponentTreeRoot for component removal (#2317). (75446185)
  • BREAKING FEAT: HasDraggableComponents mixin is no longer needed (#2312). (3faf1149)
  • BREAKING FEAT: The HasTappableComponents mixin is no longer needed (#2450). (b5bdf4ec)

Migration instructions #

If you have components that rely on receiving onGameResize calls before they load, then you can retrieve the game's size in onLoad manually via findGame()!.size.

The HasDraggableComponents mixin is now empty & deprecated. If your game used this mixin overriding its methods onDragStart, onDragUpdate, etc -- then they will no longer work. If you want to receive drag events at the top level of the game, then simply add a DragCallbacks component to the top level of the game.

The HasTappableComponents mixin is now empty & deprecated. If your game used this mixin overriding its methods onTapDown, onTapUp, etc -- then they will no longer work. If you want to receive tap events at the top level of the game, then simply add a TapCallbacks component to the top level of the game.

1.6.0 #

Note: This release has breaking changes.

  • PERF: Avoid Vector2 creation in Sprite.render (#2261). (736733d9)
  • FIX: Only use initialized game for tests and remove setMount from onGameResize (#2246). (2a0f1d4b)
  • FIX: Re-use paint object in ImageParticle (#2210). (7a945d96)
  • FIX: Depend on test: any for flame_test (#2207). (acfd418d)
  • FEAT: Add a canSee method to the CameraComponent (#2270). (2347c8f5)
  • FEAT: Add moveBy to CameraComponent (#2269). (51e54ebe)
  • FEAT: Added computed property CameraComponent.visibleWorldRect (#2267). (f4b0e73f)
  • DOCS: Update example to not create Rect objects (#2254). (a306338b)
  • DOCS: Teh -> the (#2225). (ff7f36d0)
  • BREAKING REFACTOR: The method onLoad() now returns FutureOr<void> (#2228). (d898b539)
  • BREAKING FEAT: Adds new route methods pushReplacement, pushReplacementNamed, and pushReplacementOverlay (#2249). (a2772b4e)

1.5.0 #

Note: This release has breaking changes.

  • REFACTOR: OpacityEffect now uses opacity instead of alpha internally (#2064). (b3b67301)
  • REFACTOR: Game render box cleanup (#1691). (60a5830d)
  • FIX: Event mixins missing @mustCallSuper (#2036). (c26d5da3)
  • FIX: SpeedController advance() should execute after its effect's onStart() (#2173). (7a1e2e8b)
  • FIX: Refresh vertices on size change of RectangleComponent (#2167). (4020d68b)
  • FIX: Fix coordinate system calculation in FixedAspectRationViewport (#2175). (c9c9881c)
  • FIX: SpriteButtonComponent missing @mustCallSuper added (#2001). (45a9d79b)
  • FIX: Focus handling with a scope on the GameWidget (#1725). (d1cd8517)
  • FIX: RemoveEffect should work within SequenceEffect (#2110). (03e1f33d)
  • FIX: #1966 unit test for Particles (#2097). (59bd7ebb)
  • FIX: OpacityEffect custom paint override (#2056). (fe9d4d9b)
  • FIX: #1998 (#2013). (f63711dc)
  • FIX: solid circles and polygons intersection (#2067). (62c5c2e1)
  • FIX: #2017 (#2039). (7f546b0f)
  • FIX: Exception when having multiple calls to dispose() function of a Svg instance (#2085). (a287904e)
  • FIX: Add missing hitbox parameters (#2070). (8aacb555)
  • FIX: Change Vector2.zero() to Vector2(0, -1) in Vector2Extensions.fromRadians() (#2016). (801c683c)
  • FEAT: Add children to World constructor (#2093). (3af416dc)
  • FEAT: Add paint layers to HasPaint and associated component renders (#2073). (9e6bf4fb)
  • FEAT: Add SizeProvider to clip_component and custom_paint_component. (#2100). (bb710646)
  • FEAT: Added HasGameReference mixin (#1828). (12ce270b)
  • FEAT: Added toString method to all the drags events message handlers (#2014). (a34f1df7)
  • FEAT: Add maintainState property to Route (#2161). (576ceaac)
  • FEAT: add onCancelled to ButtonComponent and HudButtonComponent (#2193). (e7f08906)
  • FEAT: onComponentTypeCheck support for ShapeHitbox (#1981). (f840210b)
  • FEAT: Added glow effect using maskFilter (#2129). (bcecd3c1)
  • FEAT: Add support for styles propagating through the text node tree (#1915). (b5780d42)
  • FEAT: Added SpriteFont class (#1992). (a0d7eada)
  • FEAT: Added CameraComponent.withFixedResolution() constructor (#2176). (e289f118)
  • FEAT: Add optional maxDistance to raycast (#2012). (6b78b10f)
  • FEAT: clampLength for Vector2 extension (#2190). (51a896b2)
  • FEAT: Adding onChildrenChanged (#1976). (3d043b86)
  • FEAT: Adding ComponentNotifier API (#1889). (bd7f51f5)
  • FEAT: removed future + isRemoved field for Component (#2080). (9f322785)
  • BREAKING FIX: Correct coordinate system for a circular viewport (#2174). (93dc4325)
  • BREAKING FIX: PolygonComponent no longer modifies _vertices (#2061). (8cd4793a)
  • BREAKING FEAT: Add OpacityProvider (#2062). (0255cc32)

1.4.0 #

Note: This release has breaking changes.

  • REFACTOR: move broadphase-related functionality into separate subdirectory (#1943). (f23acd41)

  • REFACTOR: used simpler and more implicit widgets in GameWidget (#1862). (44d17c64)

  • PERF: SpriteAnimationWidget will re-render only when needed (#1876). (bb678301)

  • FIX: Hitbox children of a CompositeHitbox to return correct parent (#1922). (d518705e)

  • FIX: OpacityEffect rounding error calculation (#1933). (4cfcfa64)

  • FIX: Expose hitboxParent from Hitbox (#1928). (3ba93351)

  • FIX: Raycast from CircleHitbox's center (#1918). (57ca47c8)

  • FEAT: quad tree broadphase support (#1894). (e33d5410)

  • FEAT: Make _ButtonState public for SpriteButtonComponent (#1941). (e80412c5)

  • FEAT: Add possibility for solid hitboxes (#1919). (205ac561)

  • FEAT: Adding callbacks for EffectController (#1926) (#1931). (8dcdf155)

  • FEAT: Added DebugTextFormatter (#1921). (426827d1)

  • FEAT: Add lookAt method for PositionComponent (#1891). (720c3566)

  • FEAT: add applyLifespanToChildren to Particle generate (#1911). (884d5190)

  • FEAT: Add broadphase generics to CollisionDetection (#1908). (f7714122)

  • FEAT: Adding ClipComponent (#1769). (f34d86db)

  • FEAT: Add support for isometric staggered maps (#1895). (96be8408)

  • FEAT: Experimental integer viewport (#1866). (63822de3)

  • FEAT: RecycledQueue now supports modification during iteration (#1884). (01b59493)

  • FEAT: Allow children of ComposedParticle to have varied lifespan (#1879). (6db519ec)

  • FEAT: Add removeWhere to Component (#1878). (abd28f28)

  • FEAT: Added RecycledQueue class (#1864). (9457e38e)

  • FEAT: Possibility to ignore hitboxes for ray casting (#1863). (b22bc643)

  • DOCS: Added Style Guide and Test Writing Guide (#1897). (999caca1)

  • BREAKING FIX: Make all ComponentSet modifications internal (#1877). (f26a066d) Migration instructions: For most methods Component has the corresponding methods directly on it already. For example, instead of using component.children.addAll you should do component.addAll.

  • BREAKING CHORE: Remove functions/classes that were scheduled for removal in v1.3.0 (#1867). (00ab347c) For each deleted function/method/class, the deprecation comment already specifies what functionality should be used instead.

1.3.0 #

Note: This release has breaking changes.

  • REFACTOR: Use new "super"-constructors in ShapeComponents (#1752). (b69e8d85)
  • REFACTOR: Game is now a class, not a mixin (#1751). (5225a4eb)
  • PERF: Use TextElements within the TextComponent (#1802). (7b044430)
  • PERF: Avoid unnecessary copy in AssetsCache.readBinaryFile (#1749). (7e79638d)
  • FIX: ButtonComponent behavior when the engine is paused (#1726). (197e63d6)
  • FIX: Correct flutter constraint (#1731). (c7383843)
  • FIX: World component can now be queried with componentsAtPoint (#1739). (f750d705)
  • FIX: Merge basic and advanced gesture detectors (#1718). (f08f8e12)
  • FIX: Correct key events in GameWidget.controller (#1745). (01ed2ec9)
  • FIX: Camera incorrect follow with zoom and world boundaries. (c1756177)
  • FIX: Add missing paint arguments on shapes (#1727). (e59f3428)
  • FIX: Delay camera update (#1811). (a5598a8f)
  • FIX: Overlays can now be properly added during onLoad (#1759). (9f35b154)
  • FIX: SpriteAnimationWidget can now be update animation safely (#1738). (eb070195)
  • FIX: JoystickComponent drags using the delta Viewport (#1831). (54e40de6)
  • FIX: Specify size for the SpriteWidget (#1760). (82f75fcb)
  • FEAT: New colors to palette.dart (#1783). (85cd60e1)
  • FEAT: add children argument to SpriteComponent.fromImage (#1793). (80a63362)
  • FEAT: Added Decorator class and HasDecorator mixin (#1781). (8d00847c)
  • FEAT: Added TextFormatter classes (#1720). (c44272be)
  • FEAT: Move to Flutter 3.0.0 and Dart 2.17.0 (#1713). (2a41d0d6)
  • FEAT: Added Rotate3DDecorator (#1805). (f05194c8)
  • FEAT: Added Shadow3DDecorator (#1812). (0a41b2da)
  • FEAT: Add tertiary tap detector mixin (#1815). (e9e7b0d5)
  • FEAT: Add Ray2 class to be used in raytracing/casting (#1788). (26196c01)
  • FEAT: Added RouterComponent (#1755). (24092bd7)
  • FEAT: Structured text and text styles (#1830). (bfdc3a29)
  • FEAT: Drag events that dispatch using componentsAtPoint (#1715). (10669c12)
  • FEAT: Added routes that can return a value (#1848). (f1b276e0)
  • FEAT: PositionComponent now has a built-in Decorator (#1846). (8dd52c33)
  • FEAT: add HasAncestor mixin (#1711). (987a44f4)
  • FEAT: Added ability to control overlays via the RouterComponent (#1840). (e2de70c9)
  • FEAT: Add vector projection and inversion (#1787). (d197870f)
  • DOCS: Klondike tutorial, part 4 (#1740). (02d0b71b)
  • BREAKING REFACTOR: Matcher closeToVector() now accepts Vector2 as an argument (#1761). (c5083501)
  • BREAKING PERF: Game.images/assets are now same as Flame.images/assets by default (#1775). (0ccb0e2e)
  • BREAKING FEAT: Raycasting and raytracing (#1785). (ed452dd1)

1.2.1 #

Note: This release has breaking changes.

  • REFACTOR: Game is now a class, not a mixin (#1751). (5225a4eb)
  • REFACTOR: Use new "super"-constructors in ShapeComponents (#1752). (b69e8d85)
  • PERF: Avoid unnecessary copy in AssetsCache.readBinaryFile (#1749). (7e79638d)
  • FIX: Specify size for the SpriteWidget (#1760). (82f75fcb)
  • FIX: SpriteAnimationWidget can now be update animation safely (#1738). (eb070195)
  • FIX: Overlays can now be properly added during onLoad (#1759). (9f35b154)
  • FIX: Camera incorrect follow with zoom and world boundaries. (c1756177)
  • FIX: Correct key events in GameWidget.controller (#1745). (01ed2ec9)
  • FIX: World component can now be queried with componentsAtPoint (#1739). (f750d705)
  • FIX: Correct flutter constraint (#1731). (c7383843)
  • FIX: ButtonComponent behavior when the engine is paused (#1726). (197e63d6)
  • FIX: Add missing paint arguments on shapes (#1727). (e59f3428)
  • FIX: Merge basic and advanced gesture detectors (#1718). (f08f8e12)
  • FEAT: New colors to palette.dart (#1783). (85cd60e1)
  • FEAT: Added TextFormatter classes (#1720). (c44272be)
  • FEAT: Drag events that dispatch using componentsAtPoint (#1715). (10669c12)
  • FEAT: add HasAncestor mixin (#1711). (987a44f4)
  • FEAT: Move to Flutter 3.0.0 and Dart 2.17.0 (#1713). (2a41d0d6)
  • DOCS: Klondike tutorial, part 4 (#1740). (02d0b71b)
  • BREAKING PERF: Game.images/assets are now same as Flame.images/assets by default (#1775). (0ccb0e2e)

1.2.0 #

Note: This release has breaking changes.

  • REFACTOR: Organize Component class (#1608). (069294f4)

  • REFACTOR: Remove unecessary copy operation on Camera (#1708). (94cc115a)

  • REFACTOR: Update and guarantee consistency on mocktail dev dependency version across repo (#1701). (f4a98878)

  • REFACTOR: Add onComplete as optional parameter (#1686). (4ca65f8a)

  • REFACTOR: Added MultiDragListener - common API between HasDraggables and MultiTouchDragDetector (#1668). (801dbba1)

  • REFACTOR: Simplify Component.firstChild, .lastChild, and .findParent (#1673). (84f2f57e)

  • REFACTOR: Replace some usages of fold<> with .sum (#1670). (dd05ecb6)

  • REFACTOR: Deprecate ComponentSet.createDefault() (#1676). (f37e3a20)

  • REFACTOR: Simplify HudButtonComponent (#1647). (30d84b7c)

  • REFACTOR: Component's lifecycle futures moved into LifecycleManager (#1613). (39201c40)

  • REFACTOR: TextRenderer and TextPaint moved to separate files (#1628). (5e1f5966)

  • REFACTOR: Move to package imports (#1625). (843ddc36)

  • REFACTOR: Improve tests (#1609). (f33b3986)

  • FIX: Fix tile flips when using canvas.drawAtlas (#1610). (b4ad498f)

  • FIX: Expose CompositeHitbox (#1589). (78775798)

  • FIX: Anchor equality operator is now more reliable (#1560). (0d6581ef)

  • FIX: Deprecate Anchor.translate() (#1672). (80c648fc)

  • FIX: Avoid leaks when using PictureRecorders (#1643). (d67065e5)

  • FIX: Remove nonVirtual method shouldRemove (#1707). (1efd067e)

  • FIX: Fix flame package example app (#1709). (bd2ef967)

  • FIX: Subscription for events when game changes in GameWidget (#1659). (04f0d5d1)

  • FIX: performance improvements on SpriteBatch APIs (#1637). (4b19a1b2)

  • FIX: Removed warnings using flutter v3 (#1640). (69214827)

  • FIX: ParallaxComponent.update mustCallSuper (#1635). (9474ce74)

  • FIX: Isometric tile map component uses scale when getting block from position (#1569). (0c430786)

  • FIX: Dispose TextBoxComponent image cache properly (#1579). (c0e3257a)

  • FIX: ParentIsA missing mustCallSuper (#1604). (72129019)

  • FIX: Component can now be removed in any lifecycle stage (#1601). (c0a14156)

  • FIX: Export NotifyingVector2 (#1633). (aeaf9999)

  • FIX: RectangleHitbox should shrink to bounds (#1596). (60df3b9f)

  • FIX: Components in uninitialized state can now be safely removed (#1551). (ba617790)

  • FIX: Bug in "tty" TextBoxComponent (#1619). (6cc3e827)

  • FIX: Component.loaded future sometimes failed to complete (#1593). (89ee9b98)

  • FIX: correctly calculating frame length (#1578). (efda45e7)

  • FIX: Optimize AcceleratedParticle and MovingParticle (#1568). (5591c109)

  • FEAT: Method componentsAtPoint now reports the "stacktrace" of points (#1615). (e2398966)

  • FEAT: Allow changing parent from null parent (#1662). (53268b5f)

  • FEAT: Callbacks in HudButtonComponent constructor and ViewportMargin mixin to avoid code duplication (#1685). (f55b2e0d)

  • FEAT: Add more lint rules (#1703). (49252f8e)

  • FEAT: Keep stacktrace when rethrowing an error from GameWidget (#1675). (dd28183b)

  • FEAT: Aligned text in the TextBoxComponent (#1620). (c64aedae)

  • FEAT: Included completed completer in SpriteAnimation (#1564). (71999b19)

  • FEAT: Optional key for Images.load (#1624). (067c34b5)

  • FEAT: Bump to Flutter 2.10.0 (#1617). (beac9013)

  • FEAT: Add isFirstFrame and onStart event to SpriteAnimation (#1492). (701d0706)

  • FEAT: Add FpsComponent and FpsTextComponent (#1595). (4c68c2b0)

  • FEAT: Added FollowBehavior and ability for the new Camera to follow a component (#1561). (b583388c)

  • FEAT: Added componentsAtPoint() iterable (#1518). (b99e3512)

  • FEAT: Added AnchorToEffect and AnchorByEffect (#1556). (eff72794)

  • FEAT: Added utility function solveCubic() (#1696). (31784ca0)

  • FEAT: add FutureOr support on SpriteButton (#1645). (2e82dc95)

  • FEAT: MoveAlongPathEffect can now be applied to any PositionProvider (#1555). (a0ff2d18)

  • FEAT: adding KeyboardListenerComponent (#1594). (c887c361)

  • FEAT: new flame bloc API (#1538). (f98970a9)

  • FEAT: Added the onLongTapDown event (#1587). (ed302d89)

  • FEAT: Add ability to add/remove multiple overlays at once (#1657). (0ac84c00)

  • FEAT: Helpers for whether a PositionComponent is flipped. (#1700). (cf67147e)

  • FEAT: World bounds for a CameraComponent (#1605). (abb497ab)

  • FEAT: Implement tap events based on componentsAtPoint (#1661). (2711ba60)

  • FEAT: add ParentIsA to force parent child relations (#1566). (2cdf3868)

  • FEAT: Adding classes for raw geometric shapes (#1528). (666a2b19)

  • FEAT: Add solveQuadratic() utility function (#1665). (d8bbfc06)

  • FEAT: allow external packages to await for game to be loaded (#1699). (a15eda0b)

  • FEAT: Children as argument to FlameGame (#1680). (db336c03)

  • FEAT: Add range constructor on SpriteAnimationData (#1572). (e42b4958)

  • FEAT: Add helper function for creating golden tests (#1623). (d0faaada)

  • FEAT: Added ability to render spritesheet-based fonts (#1634). (3f287898)

  • BREAKING FIX: FixedResolutionViewport noClip -> clip (#1612). (02be4acd)

  • BREAKING FEAT: Adding GameWidget.controlled (#1650). (7ef6a51e)

  • BREAKING FEAT: remove onTimingsCallback for Flutter 3.0 (#1626). (0761a79d)

  • BREAKING FIX: Game.mouseCursor and Game.overlays can now be safely set during onLoad (#1498). (821d01c3) Migration instructions: The mouseCursor property is now a plain property with a setter, not a ChangeNotifier. Consequently, instead of writing game.mouseCursor.value = ..., one needs to write game.mouseCursor = ... now.

  • BREAKING FEAT: Added anchor for the Viewport (#1611). (c3bb14b7) Migration instructions: The coordinate system of the Viewport now always has the origin in the top-left corner of its bounding box (previously it was in the center) -- similar to the local coordinate system of a PositionComponent.

  • BREAKING FEAT: Add ability to render without loading on image related widgets (#1674). (40a061bc) Migration instructions: It only breaks SpriteButton when you are using future as a sprite or pressedSprite parameter. You should use SpriteButton.future if previously you are using future as a parameter.

  • BREAKING FEAT: Size effects will now work only on components implementing SizeProvider (#1571). (1bfed571) Migration instructions: It only breaks SpriteButton when you are using future as a sprite or pressedSprite parameter. You should use SpriteButton.future if previously you are using future as a parameter.

1.1.1 #

  • REFACTOR: Added classes MoveByEffect and MoveToEffect (#1524). (2171a119)
  • FIX: Invalidate polygon cache on resize (#1529). (11bf75d0)
  • FIX: Bug with anchor parameter in Sprite.render() (#1508). (325df46e)
  • FIX: Make CollisionProspect's a, b have unordered equality (#1519). (5b2471c8)
  • FEAT: able to clear all overlays (#1536). (7b15c9a1)
  • FEAT: Automatic Isometric Grid scaling (#1468). (cae8c0ce)
  • FEAT: Added children parameter to Component constructor (#1525). (f0b31fcf)
  • FEAT: Camera's Viewfinder can now be affected by rotation effects (#1527). (f46cae04)
  • FEAT: Scale (zoom) effects can now be applied to Viewfinder in CameraComponent (#1514). (403b6e60)
  • FEAT: adding HasGameRef.mockGameRef (#1520). (4f389f8b)
  • FEAT: flame tests can now generate golden tests (#1501). (316a0b3b)

1.1.0 #

  • Graduate package to a stable release. See pre-releases prior to this version for changelog entries.

1.1.0-releasecandidate.6 #

  • FIX: Only end collisions where there was a collision (#1471). (e1e87fc4)
  • FIX: debugMode should be inherited from parent when mounted (#1469). (e894d201)
  • FEAT: Added method that returned descendants (#1461). (a41f5376)
  • FEAT: Possibility to mark gesture events as handled (#1465). (4c3960c3)
  • FEAT: adding loaded future to the component (#1466). (6434829b)
  • FEAT: Deprecating Rect methods (#1455). (4ddd90aa)
  • FEAT: Added .anchor property to CameraComponent.Viewfinder (#1458). (d51dc5e1)
  • DOCS: Rect extension docs is out of date (#1451). (7e505722)

1.1.0-releasecandidate.5 #

  • FIX: @mustCallSuper missing on components (#1443). (e01b4b1a)
  • FEAT: Add setter to priority (#1444). (34284686)

1.1.0-releasecandidate.4 #

  • FIX: Setting images.prefix to empty string (#1437). (694102bd)

1.1.0-releasecandidate.3 #

  • REFACTOR: Parent change and component removal logic (#1385). (8b9fa352)
  • FIX: viewfinders behavior under zoom (#1432). (f3cf85b6)
  • FIX: change strokeWidth in Component (#1431). (0e174fe8)
  • FEAT: allowing changing of the images prefix and allowing empty prefixes (#1433). (de4d9416)

1.1.0-releasecandidate.2 #

Note: This release has breaking changes.

  • REFACTOR: Loadable mixin no longer declares onMount and onRemove (#1243). (b1f6a34c)
  • REFACTOR: Organize tests in the game/ folder (#1403). (102a27cc)
  • REFACTOR: Clean up of top-level tests (#1386). (e50003ed)
  • REFACTOR: Resize logic in GameRenderBox (#1308). (17c45c28)
  • REFACTOR: Simplify GameWidgetState.loaderFuture (#1232). (eb30c2e5)
  • REFACTOR: Component.ancestors() is now an iterator (#1242). (ce48d77a)
  • REFACTOR: Add a few more rules to flame_lint, including use_key_in_widget_constructors (#1248). (bac6c8a4)
  • REFACTOR: Removed parameter Component.updateTree({callOwnUpdate}) (#1224). (ed227e7c)
  • REFACTOR: Remove Loadable, optional onLoads (#1333). (05f7a4c3)
  • REFACTOR: Loadable no longer declares onGameResize (#1329). (20776e86)
  • REFACTOR: Use canvas.drawImageNine in NineTileBox (#1314). (d77e5efe)
  • PERF: Allow components to have null children (#1231). (66ad4b08)
  • FIX: flame svg perfomance (#1373). (bce24173)
  • FIX: Fix collision detection comments and typo (#1422). (dfeafdd6)
  • FIX: ParallaxComponent should have static positionType (#1350). (cfa6bd12)
  • FIX: Add missing priority argument for JoystickComponent (#1227). (23b1dd8b)
  • FIX: Step time in SpriteAnimation must be positive (#1387). (08e8eac1)
  • FIX: HudMarginComponent positioning on zoom (#1250). (4f0fb2de)
  • FIX: Call onCollisionEnd on removal of Collidable (#1247). (5ddcc6f7)
  • FIX: Both places should have strictMode = false (#1272). (72161ad8)
  • FIX: remove vector_math dependency (#1361). (56b33da2)
  • FIX: Deprecate pause and resume in GameLoop (#1240). (dc37053f)
  • FIX: Deprecate Images.decodeImageFromPixels (#1318). (1a80130c)
  • FIX: Properly dispose images when cache is cleared (#1312). (825fb0cc)
  • FIX: Fix SpriteAnimationWidget lifecycle (#1212). (86394dd3)
  • FIX: redrawing bug in TextBoxComponent (#1279). (8bef4805)
  • FIX: Add missing paint argument to SpriteComponent.fromImage (#1294). (254a60c8)
  • FIX: black frame when activating overlays (#1093). (85caf463)
  • FIX: prepareComponent should never run again on a prepared component (#1237). (7d3eeb73)
  • FIX: Allow most basic and advanced gesture detectors together (#1208). (5828b6f3)
  • FEAT: Added SpeedEffectController (#1260). (20f521f5)
  • FEAT: Added SineEffectController (#1262). (c888703d)
  • FEAT: Added ZigzagEffectController (#1261). (59adc5f3)
  • FEAT: Add onReleased callback for HudButtonComponent (#1296). (87ee34ca)
  • FEAT: Turn off strictMode for children (#1271). (6936e1d9)
  • FEAT: onCollisionStart for Collidable and HitboxShape (#1251). (9b95686b)
  • FEAT: adding has mounted to component (#1418). (f8f9e045)
  • FEAT: Added NoiseEffectController (#1356). (fad9d1d5)
  • FEAT: exporting cache classes (#1368). (3e058973)
  • FEAT: Update scale events to contain pan info (#1327). (70b96b07)
  • FEAT: Components are now always added in the correct order (#1337). (c753fc46)
  • FEAT: Added transform to Rect (#1360). (1818be41)
  • FEAT: Camera as a component (#1355). (c61a1c18)
  • FEAT: Effect.onComplete callback as an alternative to onFinish() (#1201). (932a8111)
  • FEAT: Add RandomEffectController (#1203). (cdb2650b)
  • FEAT: Component.childrenFactory can be used to set up a global ComponentSet factory (#1193). (223ab758)
  • DOCS: Added documentation for GameLoop class (#1234). (b1d4e587)
  • DOCS: Fix various dartdoc warnings (#1353). (9f096053)
  • BREAKING REFACTOR: Separate ComponentSet from the Component (#1266). (e2655b88)
  • BREAKING FIX: Remove pointerId from Draggable callbacks (#1313). (27adda17)
  • BREAKING FEAT: Use a broadphase to make collision detection more efficient (#1252). (29dd09ca)
  • BREAKING FEAT: Added SequenceEffect (#1218). (7c6ae6de)

1.1.0-releasecandidate.1 #

Note: This release has breaking changes.

  • REFACTOR: Clean up of top-level tests (#1386). (e50003ed)
  • REFACTOR: Remove Loadable, optional onLoads (#1333). (05f7a4c3)
  • REFACTOR: Loadable no longer declares onGameResize (#1329). (20776e86)
  • REFACTOR: Organize tests in the game/ folder (#1403). (102a27cc)
  • REFACTOR: Use canvas.drawImageNine in NineTileBox (#1314). (d77e5efe)
  • REFACTOR: Resize logic in GameRenderBox (#1308). (17c45c28)
  • REFACTOR: Loadable mixin no longer declares onMount and onRemove (#1243). (b1f6a34c)
  • REFACTOR: Removed parameter Component.updateTree({callOwnUpdate}) (#1224). (ed227e7c)
  • REFACTOR: Add a few more rules to flame_lint, including use_key_in_widget_constructors (#1248). (bac6c8a4)
  • REFACTOR: Component.ancestors() is now an iterator (#1242). (ce48d77a)
  • REFACTOR: Simplify GameWidgetState.loaderFuture (#1232). (eb30c2e5)
  • PERF: Allow components to have null children (#1231). (66ad4b08)
  • FIX: prepareComponent should never run again on a prepared component (#1237). (7d3eeb73)
  • FIX: flame svg perfomance (#1373). (bce24173)
  • FIX: Deprecate pause and resume in GameLoop (#1240). (dc37053f)
  • FIX: Deprecate Images.decodeImageFromPixels (#1318). (1a80130c)
  • FIX: Properly dispose images when cache is cleared (#1312). (825fb0cc)
  • FIX: Add missing paint argument to SpriteComponent.fromImage (#1294). (254a60c8)
  • FIX: Add missing priority argument for JoystickComponent (#1227). (23b1dd8b)
  • FIX: remove vector_math dependency (#1361). (56b33da2)
  • FIX: redrawing bug in TextBoxComponent (#1279). (8bef4805)
  • FIX: Fix SpriteAnimationWidget lifecycle (#1212). (86394dd3)
  • FIX: black frame when activating overlays (#1093). (85caf463)
  • FIX: Call onCollisionEnd on removal of Collidable (#1247). (5ddcc6f7)
  • FIX: HudMarginComponent positioning on zoom (#1250). (4f0fb2de)
  • FIX: Both places should have strictMode = false (#1272). (72161ad8)
  • FIX: ParallaxComponent should have static positionType (#1350). (cfa6bd12)
  • FIX: Allow most basic and advanced gesture detectors together (#1208). (5828b6f3)
  • FIX: Step time in SpriteAnimation must be positive (#1387). (08e8eac1)
  • FEAT: Update scale events to contain pan info (#1327). (70b96b07)
  • FEAT: Add RandomEffectController (#1203). (cdb2650b)
  • FEAT: Components are now always added in the correct order (#1337). (c753fc46)
  • FEAT: Effect.onComplete callback as an alternative to onFinish() (#1201). (932a8111)
  • FEAT: exporting cache classes (#1368). (3e058973)
  • FEAT: Added NoiseEffectController (#1356). (fad9d1d5)
  • FEAT: Added SineEffectController (#1262). (c888703d)
  • FEAT: Added SpeedEffectController (#1260). (20f521f5)
  • FEAT: Added ZigzagEffectController (#1261). (59adc5f3)
  • FEAT: Turn off strictMode for children (#1271). (6936e1d9)
  • FEAT: onCollisionStart for Collidable and HitboxShape (#1251). (9b95686b)
  • FEAT: Component.childrenFactory can be used to set up a global ComponentSet factory (#1193). (223ab758)
  • FEAT: Added transform to Rect (#1360). (1818be41)
  • FEAT: Add onReleased callback for HudButtonComponent (#1296). (87ee34ca)
  • DOCS: Fix various dartdoc warnings (#1353). (9f096053)
  • DOCS: Added documentation for GameLoop class (#1234). (b1d4e587)
  • BREAKING REFACTOR: Separate ComponentSet from the Component (#1266). (e2655b88)
  • BREAKING FIX: Remove pointerId from Draggable callbacks (#1313). (27adda17)
  • BREAKING FEAT: Added SequenceEffect (#1218). (7c6ae6de)
2038
likes
0
pub points
98%
popularity

Publisher

verified publisherflame-engine.org

A minimalist Flutter game engine, provides a nice set of somewhat independent modules you can choose from.

Repository (GitHub)
View/report issues

Funding

Consider supporting this project:

opencollective.com
github.com
patreon.com

License

unknown (license)

Dependencies

collection, flutter, meta, ordered_set, vector_math

More

Packages that depend on flame