flutter3d_net 0.8.1
flutter3d_net: ^0.8.1 copied to clipboard
Rollback netcode over `sim`: input frames per step, prediction, correction, and the transport behind an interface so a game never names WebRTC or a socket.
0.8.1 #
Any transport here carries flame_multiplayer. NetTransportWire makes
a NetTransport — the relay's WebSocketTransport, a WebRTC channel, the
test loopback — into that package's PeerWire, so its room, rollback play,
turns and ghost run over the relay this package ships. The dependency goes
this way round: flame_multiplayer depends on nothing, and the adapter
lives with the transports it adapts.
One rollback in the repository, not two. NetSession runs on
flame_multiplayer's RollbackSession now, with a Snapshot for its state.
Its constructor, its defaults and the messages on the wire are what they
were, so a peer on an older build still plays against a newer one.
droppedCorrections reads and writes through to the shared session, as it
did as a field.
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.1 #
Released with the rest of the stack at 0.7.1. Nothing in this package changed. The release it resolves against builds from pub.dev again and no longer crashes Metal on the first unlit draw.
Its flutter3d_* dependencies ask for ^0.7.1.
0.7.0 #
- The first publication. The 0.6.0 below was a number this package carried
inside the workspace; it never reached pub.dev. The whole shelf goes out on
one number so that one number names one tree, and
^0.7.0on anyflutter3d_*package resolves against every other.doc/boundary-0.7.0.mdlists the thirteen packages that begin at this release. - Two things the entry below leaves out, both here since the first commit.
diffRunstakes twoDigestTraces and a function per side that answers with the saved state at a step.DigestTrace.divergenceFromHexfinds the first checkpoint that disagrees from the hex digests a.f3drunalready carries, anddiffRunscompares the two JSON trees at that one step and returns aSnapshotDivergence: the step, a dotted path such asentities.7.health, and the two values. It replays nothing itself, because only a genre's own package knows how to step its simulation.WebSocketTransportis theNetTransportover the relay for a platform or a NAT that a WebRTC data channel did not get through. It is built onweb_socket_channeland not ondart:io, so the same class compiles for a browser, and while it is in use every game frame rides the relay. - The relay can be deployed from the package.
deploy/Dockerfilerunsbin/relay.darton port 8790 and is built from the repository root, since the package resolvesflutter3d_siminside the workspace.deploy/flutter3d-net-relay.serviceis a systemd unit for the same process. - No code changed since 0.6.0 was written beyond what the formatter did. The
floor on
flutter3d_simis^0.7.0.
0.6.0 #
net-01indoc/tooling-plan.md.NetSession: input frames per step, prediction by the last frame that arrived, rollback on a disagreeing confirmation, a dropped-correction count.NetTransportas the one interface a real network implements;LoopbackTransportwith a real fixed delay and seeded loss for tests that drive two sessions against each other rather than a mock that cannot lie about timing.net-02's relay (bin/relay.dart): rooms by a short code in the URL path, no accounts, signalling and a WebSocket fallback beside the WebRTC transport influtter3d_net_webrtc.- Plain Dart. Nothing here imports Flutter, and a relay process needs no SDK to run.