flutter3d_game_strategy 0.8.0
flutter3d_game_strategy: ^0.8.0 copied to clipboard
A fourth genre: ground made of samples, units that move as a crowd rather than one at a time, and orders given to a selection instead of to a body.
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, and it asks for vector_math ^2.4.3.
0.7.0 #
- The first publication. The 0.6.0 below was a number carried inside the
workspace and never reached pub.dev: the package sat out that release waiting
for its own acceptance, which
ARCHITECTURE.md§16 records, and it is one of the thirteen packagesdoc/boundary-0.7.0.mdlists as beginning here. 0.7.0 is the number the whole shelf goes out on, so one number names one tree and^0.7.0on anyflutter3d_*package resolves against every other. What the package holds is described under 0.6.0; what follows is what changed since. - A recorded match carries what a replay is verified against.
MatchDemorequireslevelHash,buildStampandcheckpoints, aDigestTrace, beside the map's path, the start and theOrderTape, and takesplatformandrecordedByas optional.MatchDemo.fromJsonthrowsDemoFormatExceptionfor a document without the first three, so a match written by the 0.6.0 in this workspace does not open;formatVersionis still 1. No published version wrote such a file. They are the three fieldsDemoinflutter3d_sim0.7.0 gained, for the same reason: a reader can tell that the map changed since the recording, and a replay can be compared checkpoint by checkpoint.MatchDemo.fileExtensionis.f3drun, the extensionDemouses. flutter3d_gameandflutter3d_bridgeare no longer dependencies. The simulation importsflutter3d_simby name, andbridge.dart, whereStrategyVisualsis, takes what it used fromflutter3d_bridgeout offlutter3d_app. The main library still imports neither the renderer nor Flutter;bridge.dartis the one file that does.- The floors on
flutter3d,flutter3d_appandflutter3d_sim, and the dev floor onflutter3d_cpu, are^0.7.0. The units, the orders, the economy, the fog,BotandMatchare what 0.6.0 describes.
0.6.0 #
-
In the workspace at the set's number, and deliberately not on pub.dev. Everything below is in this checkout and none of it has ever been uploaded. The reason is the API rather than the arithmetic: a stockpile and a delivery count were lists of exactly two, one per side, and a package whose types encode how many sides a game may have cannot be the version somebody builds against. The counting is fixed and the package is waiting for its own acceptance, not for a release.
-
The floors on
flutter3d,flutter3d_bridge,flutter3d_game,flutter3d_simand the dev floor onflutter3d_cpuare^0.6.0, so the day it does go out it names the tree it was built in. -
A fourth genre, and the first one that is not about a protagonist. Units, orders and a step that walks them over a
Heightfieldby descending shared flow fields, shoving overlapping neighbours apart and sitting everybody back on the ground. The shape came out of a measurement rather than a preference: ten thousand agents cost 256 microseconds to descend, 717 to shove everybody against everybody and 19 to write their transforms, so separation is applied to the whole crowd rather than to what a camera can see — the saving is 717 microseconds and the price is a run that stops replaying the same way twice. -
An order costs half a millisecond, because the grid it walks is coarse.
NavGridis baked at two metres instead of the half-metre a shooter bakes for its corridors: the same field costs 8.4 milliseconds on the fine lattice and 0.52 on this one, while descending it barely changes (375 microseconds against 307 for ten thousand agents).Formationfollows from the same arithmetic — a squad walks to one place and takes its slots on arrival, because twenty separate points would be twenty cells, so twenty fields. -
The map stops being only ground. A
Buildingis a footprint and a height rather than a collider, so what it is to the simulation is a patch that stops being walkable; placing one re-bakes the grid, which costs about a millisecond over an eighty-metre map and happens when a player builds rather than sixty times a second. It also moves whoever was standing under it: a unit in a cell the fields can no longer reach used to hold its orders and never walk again, silently, for the rest of the match. -
A side digs, spends and grows.
ResourceNodeis what the ground holds,HarvestJobis the loop a worker runs when nobody is pointing — ten carried, filled at eight a second, out and home again —Stockpileis a side's rather than the map's, andProducerturns 25 of a pile into a unit every four seconds. What a side has left and what a side has ever brought home are two numbers, not one, because a side that spends everything it digs would show nought while out-earning an opponent sitting on a pile. -
Each side has its own map, and the rules read it too.
FogOfWarkeeps explored and visible apart on a lattice of its own — four metres against the navigation grid's two, because a twenty-metre reveal touches about eighty cells at four and three hundred at two — refreshed every sixth step, a tenth of a second at sixty. The policy that sends workers asks it, so a seam nobody has walked past cannot be dug and somebody has to go and look; the drawing half asks the same lattice, so a view shows a side's knowledge rather than the simulation's. -
A side plays itself, and the match it plays is the load test.
Botdrives a side through the handles a player has, on a cadence of thirty steps rather than every one, and reads no clock and rolls no die.Matchsteps the policies before the world, ends at 400 delivered or when the ground and everybody's hands are empty, and answers drawn when neither side got further — two mirrored sides running one policy should finish level, and a match that invented a winner there would hide the bias the mirror exists to find. Above all of it,MapCamerawatches a place overCameraRig,Selectionpicks units out of a ray the application unprojects, andStrategyVisualsis the only file that draws. -
A fight, an economy and fog have since landed on top of that, and a match counts its sides rather than naming two. What is still absent is line of sight over a ridge — sight is a radius, because a ray per cell per source grows with the crowd and with the map — and that absence is a budget rather than an oversight.
-
Ten files of arithmetic under
src/, and one beside them that reaches a renderer.