flutter3d_game 0.8.0
flutter3d_game: ^0.8.0 copied to clipboard
What a game on flutter3d adds to an application: touch, keyboard, mouse and gamepad input, the run being played, the screens that are not the game, and the actors and fixtures a simulation moves, drawn.
0.8.0 #
Moves with the stack to 0.8.0, whose flutter3d_hardware changes
PassEncoder.bindTexture to return bool and makes every backend forget its
bindings at bindPipeline. Nothing in this package changed.
Its flutter3d_* dependencies ask for ^0.8.0.
0.7.2 #
Two triggers on one action answer with the harder press. The value was
whichever trigger PadInput read last, so 1.0 on the left and 0.2 on the right
gave a throttle of 0.2. Letting one go also withdrew the value the other had
just written, and for that frame the action fell back to its held 1.0. The
action now takes the largest magnitude among the controls pressing it, and is
withdrawn only when none is.
0.7.1 #
A restart chosen while the next level was loading stays a restart.
RunSession.advance loaded the next level on top of it and saved that.
TouchButton releases the action it pressed, not whatever it holds at
pointer-up, so a relaid-out button list no longer leaves an action held for
good. PadInput tracks analogue state per control, so two triggers bound to
one action stop cancelling each other.
Its flutter3d_* dependencies ask for ^0.7.1, and it asks for vector_math ^2.4.3, vm_service ^15.3.0.
0.7.0 #
Breaking. Everything a game adds to an application is here, and
flutter3d_sim is no longer re-exported. flutter3d_session,
flutter3d_screens and flutter3d_bridge are marked discontinued on pub.dev
the day this is published, the last two with this package as their
replacement; doc/boundary-0.7.0.md has the whole list.
- From
flutter3d_session:RunSession,RunTimelineand its service extensions, the demo timeline and the bug-report tape, the settings overlay and panel, rebinding,SaveFile/SettingsFile/DemoFile, volumes, credits,AutomapView,DragLook,TapToRestart,clockTextandconfigureForTouch.package:flutter3d_game/testing.dartholdscreditGaps. At 0.6.0 everything in that list after the bug-report tape wasflutter3d_screens, which was folded into the session first and followed it here. - From
flutter3d_bridge:ActorVisuals,FixtureVisualsandSoundOcclusion. Loading a level into a scene,LevelLoaderand what it stands on, went toflutter3d_app. - To
flutter3d_app:Issue,IssueSinkandIssueLog, which storage reports through. This package depends onflutter3d_app, and a file that used one of the three imports it. - Breaking. A file that steps a simulation imports
flutter3d_simby name. The lineexport 'package:flutter3d_sim/flutter3d_sim.dart'is gone from this library, soLevel,GameLoop,InputStateand every other simulation type stop arriving through it.flutter3d_simis still a dependency here at^0.7.0; a package that uses its types adds it to its own pubspec. RunTimeline: a running game paused, stepped and rewound from outside. New since 0.6.0.pause,resume,stepOnce,preview(secondsAgo),releaseAtandreleaseAtStep(step)over aRewindBuffer, with each action kept as a sealedTimelineCommand:TimelinePaused,TimelineResumed,TimelineSteppedorTimelineBranched.registerTimelineExtensionsputs a timeline on the VM service asext.flutter3d.timeline.pause,resume,stepOnce,preview,releaseAtStep,historyandstatus, withframeTimesandbugReportwhen the caller supplies them. That is the channel a tool attached to a running game already has.rewindBufferFromDemoreplays a wholeDemoonce into a buffer that reaches every step of it, andbugReportTapeanswers the state and the tape of the last seconds aRewindBufferkept, or null before its first keyframe.LevelWalk,OpenKindandopenRegistryFor, out of the game example'smain.dart: a body that walks a level, turns where it is dragged and carries a camera at eye height, and a registry that accepts every type a level names before a game has taught it any.- A level names a model by either kind of path.
FixtureVisualsandActorVisualsload through the engine'sloadModelByPath: a model a level names underassets_src/is read from the.f3dthe build hook converted it into, and any other path from the bundle exactly as before, so a project that has rundart run flutter3d_build:initand one that has not both load through the same two classes. - What it depends on.
flutter3d_app,flutter3d,flutter3d_sim,flutter3d_audioandflutter3d_particlesat^0.7.0,flutter_blocfor the settings cubit, andpad_inputandpointer_lockat^0.4.0. None of them is re-exported. The input devices, the bindings, the touch controls andGameConfigare what 0.6.0 had.
0.6.0 #
- A floor, and no code — the same shape as 0.5.1 and for the same reason.
The input devices, the fixed step and the interpolation are byte for byte
0.5.1's. What moved is the promise about the package this one re-exports
whole:
flutter3d_simis required at^0.6.0, so a caller reaching a simulation type through this name reaches a version that has it rather than whatever the resolver picked. pad_inputandpointer_lockstay at^0.4.0. They are on a line of their own, their 0.4.1 is a documentation patch, and a floor that demanded it would be claiming this package needs something it does not.
0.5.1 #
- A floor, and no code. Nothing in this package changed; what changed is
what it promises about the package it re-exports.
flutter3d_simis now required at 0.5.2 or above, because that is whereHeightfieldarrived and, through it,flutter3d_physics0.5.1 with the collision shape a body stands on. A caller reaching those names through this one was reaching whatever the resolver happened to pick, which for a^0.5.0floor could be a version without either — and the symptom is a compile error in somebody else's package.
0.5.0 #
Breaking. A stick use carries what it does, and an issue is an object.
PadStickUseis open, and its interpreter opened with it. It was an enum switched over in one method, so a game could not say its stick leans the ship. A use now is what it does with a deflection —routeagainst a narrowPadStickTarget,letGofor whatever it writes — and the three built in are instances rather than cases. There is no switch left to break.IssueSinktakes anIssue. A bare string could not grow a severity or a source without breaking every sink anybody had written.
0.4.1 #
- The simulation moved out, and nothing that imports this package changes a
line. The fixed step, the entity store, the level format, saves, demos, the
rewind buffer, actors, navigation and the maths are
flutter3d_simnow — a plain Dart package with no Flutter in it, so a server can replay a run through the same simulation the player ran. This package keeps the eight files that reached Flutter — the touch stick and button, keyboard and mouse, the gamepad route, theMediaQueryread and the diagnostics sink — and re-exportsflutter3d_simandflutter3d_physicswhole.
0.4.0 #
- A touch control lets go when it leaves. The button and the stick press
into a shared
InputState, and unmounting while pressed is a normal path — settings opening over the control, a level transition. Each now releases its held action or zeroes its axis indisposeinstead of leaving the runner jumping into the next screen.
0.3.0 #
Playingno longer askskIsWeb, and both answers it used to give about a browser were wrong. Capture is asked ofpointer_lock, which can now hold a pointer in a desktop browser and says so — and which says no on Windows and Linux, where the old platform list claimed a capture that does not exist and then turned off drag-look, leaving a camera that could not move at all. Touch is asked ofdefaultTargetPlatform, which reports a mobile browser asandroidoriOS, so a phone opening a web build finally gets the on-screen controls it has always had natively.InputTaperecords a run as transitions plus axes, one entry per fixed step, and replays it exactly. A tape of intents, not of poses.StepSystems: a game adds a rule to a genre's step without forking it. Phases are named by the genre, announced unconditionally, and run in a defined order — never in whatever order a hash map returns.InputStateexposes this step's presses, releases and analogue readings, which is what a recorder needs and cannot ask for by name.
0.2.0 #
- An ECS whose every component serialises, and one snapshot mechanism serving the save, the network packet and the determinism test.
- Actors with a flow field to walk it, mechanisms composed through signals, and movers that carry what stands on them.
- A pad and a touch layer that arrive as the same actions a key does, and
GameActionopened from an enum to a value class so a genre can invent its own. WorldStep: the order the world is stepped in, as named phases the game calls, because two genres want their actors on different sides of the index.
0.1.0 #
- A fixed timestep with an accumulator that reports the steps it had to drop, and interpolation at draw time.
- Device-independent input: actions, bindings, and a keyboard — all arriving as the same thing.
- Levels as documents — brushes, entities, lights, materials — with a validator that reports a coordinate rather than "the file is broken".