Support secondary taps (right click) on new callbacks system. In order to follow through with our [event system migration](https://docs.google.com/document/d/1nBUup9QCPioVwWL1zs79z1hWF882tAYfNywFMdye2Qc), we need to make sure the new system is equipped to support all use cases; also changes the existing TapCallbacks to be primary-only. I noticed that we don't support "secondary taps" (i.e. right clicks), so I am adding this. I honestly really dislike the fact that this is considered a completely different event from the left click, instead of just a property on the click event. But I kept this structure to replicate what Flutter does, so this is more familiar for users. I think that is worth the slight verbosity of having yet another detector. Also, it plays well this way with Flutter because that underlying events are a bit different (for example, the secondary ones don't support `pointId`). Note: this is a slight breaking change because the existing detector works for BOTH left and right click, but there is NO WAY of distinguishing them because the `buttons` property is not propagated in the Flutter end (massive oversight I believe - might put a PR later). Since this provides the secondary as a solution, it also removes secondary clicks from triggering the primary. I think this is more versatile than having tap detector=`(primary OR secondary)` and secondary=`(secondary only)`. I don't think this should affect basically any users because (1) desktop only and (2) this acceptance of right clicks was probably a bug anyway (for example, on the example it would rotate the square and also open the context menu, which is jarring). However I am happy to add an option or pursue a different approach, I believe this is the best path forward, IMO.
A Flutter-based game engine.
Documentation
The full documentation for Flame can be found on docs.flame-engine.org.
To change the version of the documentation, use the version selector noted with version: in the
top of the page.
Note: The documentation that resides in the main branch is newer than the released documentation on the docs website.
Other useful links:
- The official Flame site.
- Examples of most features which can be tried out from your
browser.
- To access the code for each example, press the
< >button in the top right corner.
- To access the code for each example, press the
- Tutorials - Some simple tutorials to get started.
- API Reference - The generated dartdoc API reference.
- awesome-flame - A curated list of Tutorials, Games, Libraries and Articles.
Help
There is a Flame community on Blue Fire's Discord server where you can ask any of your Flame related questions.
If you are more comfortable with StackOverflow, you can also create a question there. Add the Flame tag, to make sure that anyone following the tag can help out.
Features
The goal of the Flame Engine is to provide a complete set of out-of-the-way solutions for common problems that games developed with Flutter might share.
Some of the key features provided are:
- A game loop.
- A component/object system (FCS).
- Effects and particles.
- Collision detection.
- Gesture and input handling.
- Images, animations, sprites, and sprite sheets.
- General utilities to make development easier.
On top of those features, you can augment Flame with bridge packages. Through these libraries, you will be able to access bindings to other packages, including custom Flame components and helpers, in order to make integrations seamless.
Flame officially provides bridge libraries to the following packages:
- flame_audio for AudioPlayers: Play multiple audio files simultaneously.
- flame_bloc for Bloc: A predictable state management library.
- flame_fire_atlas for FireAtlas: Create texture atlases for games.
- flame_forge2d for Forge2D: A Box2D physics engine.
- flame_isolate - Makes it easy to use Flutter Isolates in a Flame game.
- flame_lint - Our set of linting (
analysis_options.yaml) rules. - flame_lottie - Support for Lottie animation in Flame.
- flame_network_assets - Helpers to load game assets from network.
- flame_oxygen for Oxygen: A lightweight Entity Component System (ECS) framework.
- flame_rive for Rive: Create interactive animations.
- flame_svg for flutter_svg: Draw SVG files in Flutter.
- flame_tiled for Tiled: 2D tile map level editor.
Sponsors
The Flame Engine's top sponsors:
Do you or your company want to sponsor Flame? Check out our OpenCollective page, which is also mentioned in the section below, or contact us on Discord.
Support
The simplest way to show us your support is by giving the project a star! ⭐
You can also support us monetarily by donating through OpenCollective:
Through GitHub Sponsors:
Or by becoming a patron on Patreon:
You can also show on your repository that your game is made with Flame by using one of the following badges:
[](https://flame-engine.org)
[](https://flame-engine.org)
[](https://flame-engine.org)
Contributing
Have you found a bug or have a suggestion of how to enhance Flame? Open an issue and we will take a look at it as soon as possible.
Do you want to contribute with a PR? PRs are always welcome, just make sure to create it from the correct branch (main) and follow the checklist which will appear when you open the PR.
Also, before you start, make sure to read our Contributing Guide.
For bigger changes, or if in doubt, make sure to talk about your contribution to the team. Either via an issue, GitHub discussion, or reach out to the team either using the Discord server.
Credits
- The Blue Fire team, who are continuously working on maintaining and improving Flame and its ecosystem.
- All the friendly contributors and people who are helping out in the community.
