NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #1108 most downloaded on pub.dev
A minimalist Flutter game engine, provides a nice set of somewhat independent modules you can choose from.
Last release 3 days ago
01 Oct 2026
Ships fairly regularly
a new release about every 5 weeks
Nearly every release is documented
notes for 57 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
9 years old
150 releases · first in 2017
FIX: flame svg perfomance (#1373).
Note: This release has breaking changes.
prepareComponent should never run again on a prepared component (#1237). (7d3eeb73)SpriteComponent.fromImage (#1294). (254a60c8)priority argument for JoystickComponent (#1227). (23b1dd8b)strictMode = false (#1272). (72161ad8)ParallaxComponent should have static positionType (#1350). (cfa6bd12)strictMode for children (#1271). (6936e1d9)onCollisionStart for Collidable and HitboxShape (#1251). (9b95686b)Component.childrenFactory can be used to set up a global ComponentSet factory (#1193). (223ab758)transform to Rect (#1360). (1818be41)One column per quarter.
FIX: Update sdk constraints to >=3.0.0 (#2554).
ButtonComponent backed by two PositionComponentsSpriteButtonComponent backed by two SpritesEffectControllers and make them able to run back in timeupdateTree to follow the renderTree conventionParallax.load with different loading timesHitboxCircle when component is flippedColorEffectMoveAlongPathEffect can now be absolute, and can auto-orient the object along the pathScaleEffect.by now applies multiplicatively instead of additivelyisHud replaced with PositionTypedrawAtlas in SpriteBatch, but added flag useAtlas to activate itForcing portrait and landscape mode is now supported on web
HudMarginComponent when using a viewportHudMarginComponent when using a viewportFixedResolutionViewportAdded StandardEffectController class
StandardEffectController classEffect class to use EffectController, added Transform2DEffect classTimerComponent exampleGameWidget had rebuildsrunOnCreation attribute in favor of the paused attribute on FlameGameCustomPainterComponentRotateEffect, based on Transform2DEffectMoveEffect, based on Transform2DEffectonGameResize margin bug in HudMarginComponentPositionComponent.size now returns a NotifyingVector2TimerComponentHitbox mixin to HasHitboxesRemoveEffect and SimpleEffectControllerRectangleComponent, CircleComponent and PolygonComponentPositionComponentrandomColor method in the Color extension.render() is now optionalsuper.render calls that are no longer neededTextPaint to use TextStyle (material) instead of TextPaintConfigShapes in ShapeComponent transform with components position, size and angleHitboxShape takes parents ancestors transformations into consideration (not scaling)JoystickComponentFlameTester to GameTesterFlameTester to be specific for T extends FlameGameTimerComponentpreRender() and postRender() in ComponentFlameTester everywhere where it makes sense in the testsIsometricTileMapPositionComponent's flipHorizontallyAroundCenter and flipVerticallyAroundCenterPositionComponents can be done from onLoad instead of the constructorHasTappableComponents to HasTappablesHasDraggableComponents to HasDraggablesHasHoverableComponents to HasHoverableisSizeEffect backed by the new effects engineScaleEffect backed by the new effects engineOpacityEffect backed by the new effects engineOrderedSet to 4.1.0OrderedSet to 5.0.0Changed onHoverEnter and onHoverLeave to return bool (breaking change)
changePriority no longer breaks game loop iteration@mustCallSuper on Component.renderSpriteSheet.createAnimationVariable method to allow animations with different stepTime for each spriteJoystickComponent so that it can't go to the wrong direction on the wrong sideonDoubleTapDown with info and onDoubleTapCancelonHoverEnter and onHoverLeave to return bool (breaking change)Fix issue with Draggables not being removed from draggables list
Draggables not being removed from draggables list>= 2.5.0.PositionComponent.toRect() now works for flipped/rotated components.Flame.bundle actually configurableCamera as a parameter to FlameGameQueryableOrderedSet's strictMode is configurable so it is no longer necessary to call register before querySpriteWidgetonRemove was called during resizingonAttach and onDetach to GameReset effects after they are done so that they can be repeated
MarginHudComponent, used when components need to have a margin to the viewport edgeJoystickComponentSpriteAnimationWidget.assetSpriteWidget.assetSpriteButton.assetNineTileBox.assetTextBoxComponentBaseGame.remove and BaseGame.removeAll helpers for removing componentsBaseComponent.remove and BaseComponent.removeAll helpers for removing childrenCamera.cameraSpeed to Camera.speedaddShape to addHitbox in Hitbox mixinpaint usage on componentsOpacityEffectColorEffectSpriteAnimationComponentSpriteGroupComponentSpriteComponent is srcSize instead of spritesheet sizeScaleEffect to SizeEffectscale on PositionComponentScaleEffect that works on scale instead of sizeNotifyingVector2Transform2DtestRandom() and testWidgetsRandom()FPSCounter from BaseGamePositionComponent to work with Transform2D: the component now works more reliably
when nestedrenderFlipX, renderFlipY removed and replaced with methods
flipHorizontally() and flipVertically()..angleTo removed as it was not working properly.PositionComponent now displays an indicator for the anchor position.Camera docs to showcase usage with Game classworldBounds being set to null in Camera.viewport from BaseGame, use camera.viewport insteadMockCanvas is now strongly typed and matches numeric coordinates up to a toleranceloadAllImages to Images, which loads all images from the prefixed pathKeyboardHandler and HasKeyboardHandlerComponents)FocusNode on the game widget and improved keyboard handling in the game.GameWidget regionTextBoxComponent waits for cache to be filled on onLoadTextBoxComponent can have customizable pixelRatioContainsAtLeastMockCanvas to facilitate testing with MockCanvasdrawImage for MockCanvasGame is now a ComponentComponentEffect is now a ComponentHasGameRef can now operate independently from GameinitialDelay and peakDelay for effects to handle time before and after an effectcomponent.onMount now runs every time a component gets a new parentFix camera not ending up in the correct position on long jumps
JoystickPlayer a PositionComponentcamera.shake(amount: x) to camera.shake(duration: x)SpriteAnimationComponent docs to use Future.waitpostRender method that will run after each components render methodTapable to TappableSpriteAnimationComponent docs to use Future.waitpostRender method that will run after each components render methodHasTapableComponents to HasTappableComponentsprepareCanvas to preRenderintensity to Camera.shakeFixedResolutionViewport to use matrix transformations for CanvasFix link to code in example stories
Particle API to Vector2game.size to take zoom into considerationcamera.followComponent when zoom != 1anchor for ShapeComponent constructorShapeComponentSpriteAnimation support to parallaxParallax alignment for images with different width and heightImageComposition image bounds validationRenderObject widget performanceMatrix4 extensionsCamera.apply is done with matrix transformationsCamera zooming is taking current relativeOffset into accountisHud = true and Camera is modifiedCamera zoom behavior with offset/anchorReplace deprecated analysis option lines-of-executable-code with source-lines-of-code
Fix input bug with other anchors than center
Shape so that the position is now a latePaletteEntry.paint to be a method instead of a getterBasicPalettesize and position in PositionComponent finalsnapTo and onPositionUpdate method to the CamerafollowVector2 method to the CameragameRef laterenderPoint method to CanvasmoveToTarget as an extension method to Vector2Rename points to intersectionPoints for collision detection
Moving device related methods (like fullScreen) from util.dart to device.dart
fullScreen) from util.dart to device.dartutil.dart to extensions/canvas.dartComposition to ImageComposition to prevent confusion with the composition componentrotation and anchor arguments to ImageComposition.addImage extensionsColor extensionsSpriteAnimationComponent.shouldRemove use Component.shouldRemovetoImage method for the Sprite classdt instead of t in all update methodsUse Offset type directly in JoystickAction.update calculations
Offset type directly in JoystickAction.update calculationsparseAnchor in examples/widgets to throw an exception instead of returning null when it cannot parse an anchor namefind instead of globstar pattern in scripts/lint.sh as the later isn't enabled by default in bashTimer callback doesn't fire for non-repeating timers, also fixing bug with Particle lifespanParallaxComponent parts and refactor how the delta velocity worksTimer and fix a bug where progress was not reported correctlySpriteBatch class to be more elegant and to support Vector2.SpriteBatch classSpriteBatch classSpriteBatch on the Game classwidgets.md documentationinitialDimensions and removeGestureRecognizer to avoid confusionSpriteComponent and SpriteAnimationComponent constructorsComposition, allows for composing multiple images into a single image.PositionComponentgame argument on GameWidget is now requiredOption for overlays to be already visible on the GameWidget
Set loop member variable when constructing SpriteAnimationComponent from SpriteAnimationData
Add TextBoxConfig options; margins and growingBox
Improve IsometricTileMap and Spritesheet classes
Updated tutorial documentation to indicate use of new version
SpriteAnimationGroupComponentRemoving all deprecated methods
resize method on components to onGameResizeResizable have a gameSize property instead of sizeNothing published for this version
Nothing published for this version
Nothing published for this version
Fixing Game Render Box for flutter >= 1.25
Update audioplayers to latest version (now assets will not be added to prefixes automatically)
assets will not be added to prefixes automatically)Fix spriteAsWidget deprecation message
lineHeight property to TextConfigImproved the accuracy of the FPSCounter by using Flutter's internal frame timings.
FPSCounter by using Flutter's internal frame timings.Improving Flame image auto cache
Deprecate flare API in favor of the package flame_flare
flame_tiledupdate and render methodsflame_flareOutsourcing SVG support to an external package
Upgrade tiled and flutter_svg dependencies
Fix Box2DComponent render priority
Fixing BaseGame tap detectors issues
Adding AssetsCache.readBinaryFile
Fix text component bug with anchor being applied twice
Adding method to load image bases on base64 data url.
Note: This release has breaking changes.
Note: This release has breaking changes.
Published to pub.dev: https://pub.dev/packages/flame_forge2d/versions/0.20.0
Packages with other changes:
FIX: Use correct Forge2DWorld in onRemove (#3713).
Nothing published for this version
BREAKING FIX: Use 32bit Vector2 in Flame to be compatible with shaders and forge2d (#3515).
FIX: Expose event dispatcher classes (#3532).
DOCS: Add AI assist badge to readme(s) (#3226).
REFACTOR: Modernize switch; use switch-expressions and no break; (#3133).
FIX: Use camera argument name in Forge2DGame (#3115).
Fixing compilations errors regarding changes on box2_flame
box2_flameTweaking text box rendering to reduce pixelated text (thanks, @kurtome)
Added backgroundColor method for overriding the game background (thanks @wolfenrain)
FIX: Null gravity override by Forge2dGame (#3092).
FIX: BodyComponent fixtures should test with global point (#3042).
Added Bgm class for easy looping background music management.
Bgm class for easy looping background music management.Improve our mixin structure (breaking change)
Exposing tile objects on TiledComponent (thanks @renatoferreira656)
FEAT: Allow for bodyDef and fixtureDefs to be prepared earlier (#2768).
REFACTOR: Enable DCM linting (#2667).
Forge2DGame to use CameraComponent (#2728). (7a3d5126)Adding Flame.util.spriteAsWidget
FIX: Update sdk constraints to >=3.0.0 (#2554).
FIX: Update sdk constraints to >=3.0.0 (#2554).
Adding destroyOnFinish flag for AnimationComponent
destroyOnFinish flag for AnimationComponentDOCS: Update funding links (#2420).
HasTappableComponents mixin is no longer needed (#2450). (b5bdf4ec)FIX: renderChain should allow open-ended chain drawing (#1804).
Your coding agent can read these notes before it upgrades. Set up the MCP server →