flutter3d_app
What any Flutter application on flutter3d is assembled from, as one import.
import 'package:flutter3d_app/flutter3d_app.dart';
final device = await openDevice(width: 1280, height: 720);
What is in it
openDevice / presentFrame |
Which backend a build draws through, and the runtime fallback to the software rasteriser when Impeller will not start. |
SceneSurface |
The widget that hands a frame to Flutter. Its settings are a function called per frame, not an object, so anything derived from where the camera ended up is derived after it got there. |
WidgetSurface |
A live Flutter widget drawn onto a quad in the scene. |
LevelLoader |
A level document turned into mesh nodes, lights, probes and a collision world. Problems come back as LoadedLevel.issues rather than exceptions: a missing wall texture leaves the surface flat and says so. |
Storage / BinaryStorage |
A document kept where each platform keeps such things, behind one interface. |
Universal, and that is the rule for what goes in
The modeller, the level editor, the lessons and every game use this package.
Nothing in it knows what a run, a binding or a monster is: that is
flutter3d_game, which stands on this package. A name only
a game would want does not belong here, however convenient one barrel would be.
What is deliberately not behind it: flutter3d, flutter3d_sim,
flutter3d_game and a genre package. Import them by name, so the choice is
visible in the pubspec. See
Assembling an application for the
full pattern, worked through with apps/flutter3d_demo_dungeon as the example.
Part of flutter3d, an independent
implementation of a 3D engine for Flutter — not a fork or a binding of
another engine, and not affiliated with the Flutter team. Three switchable
rendering backends: Impeller via Flutter GPU, WebGL2, and a software
rasteriser. glTF, OBJ and .f3d loading, six lighting models, shadows, bloom,
skinning, animation, BVH culling and picking; a deterministic fixed-step game
layer with collision, navigation, positional audio, and gamepad and touch
input. Three example games — shooter, platformer, racing — each built on its
genre package: flutter3d_game_shooter,
flutter3d_game_platformer,
flutter3d_game_racing. A new game starts from the
editor's scaffold, which writes one from a template: flutter3d.pleion.dev/first-project/.
Documentation: flutter3d.pleion.dev.
Libraries
- flutter3d_app
- What any Flutter application on flutter3d is assembled from, in one import.
- native
- The parts of this package that need a filesystem.