-
-
Notifications
You must be signed in to change notification settings - Fork 1
[Feature] Add efficient batched runtime block mutations for simulation-style mods #54
Copy link
Copy link
Open
Open
Copy link
Labels
area:guest-runtimeRuntime-loaded guest execution model, host/runtime behavior, guest session semantics.Runtime-loaded guest execution model, host/runtime behavior, guest session semantics.area:runtimeRuntime behavior, lifecycle, ticking, session behavior, execution flow.Runtime behavior, lifecycle, ticking, session behavior, execution flow.area:worldgenWorld generation providers, terrain generation, generation budgets, async worldgen execution.World generation providers, terrain generation, generation budgets, async worldgen execution.component:devkitDevkit-level / cross-repo work: manifests, integration glue, release shell, repo-wide coordination.Devkit-level / cross-repo work: manifests, integration glue, release shell, repo-wide coordination.component:enginefreven-engine: core engine/runtime/simulation/client-server internals.freven-engine: core engine/runtime/simulation/client-server internals.component:sdkPublic SDK / author-facing crates, examples, ergonomics, contracts exposed to modders.Public SDK / author-facing crates, examples, ergonomics, contracts exposed to modders.priority:p1High priority. Important and near-term.High priority. Important and near-term.status:confirmedConfirmed bug/request. Reproduced, accepted, or clearly valid.Confirmed bug/request. Reproduced, accepted, or clearly valid.transport:wasmSpecific to the WASM guest transport/backend.Specific to the WASM guest transport/backend.type:architectureLong-term structural / contract / system design work, not just isolated implementation.Long-term structural / contract / system design work, not just isolated implementation.
Milestone
Metadata
Metadata
Assignees
Labels
area:guest-runtimeRuntime-loaded guest execution model, host/runtime behavior, guest session semantics.Runtime-loaded guest execution model, host/runtime behavior, guest session semantics.area:runtimeRuntime behavior, lifecycle, ticking, session behavior, execution flow.Runtime behavior, lifecycle, ticking, session behavior, execution flow.area:worldgenWorld generation providers, terrain generation, generation budgets, async worldgen execution.World generation providers, terrain generation, generation budgets, async worldgen execution.component:devkitDevkit-level / cross-repo work: manifests, integration glue, release shell, repo-wide coordination.Devkit-level / cross-repo work: manifests, integration glue, release shell, repo-wide coordination.component:enginefreven-engine: core engine/runtime/simulation/client-server internals.freven-engine: core engine/runtime/simulation/client-server internals.component:sdkPublic SDK / author-facing crates, examples, ergonomics, contracts exposed to modders.Public SDK / author-facing crates, examples, ergonomics, contracts exposed to modders.priority:p1High priority. Important and near-term.High priority. Important and near-term.status:confirmedConfirmed bug/request. Reproduced, accepted, or clearly valid.Confirmed bug/request. Reproduced, accepted, or clearly valid.transport:wasmSpecific to the WASM guest transport/backend.Specific to the WASM guest transport/backend.type:architectureLong-term structural / contract / system design work, not just isolated implementation.Long-term structural / contract / system design work, not just isolated implementation.
Problem / Motivation
Simulation-style mods currently need to emit many individual SetBlock mutations from lifecycle callbacks.
This is awkward and fragile for mods such as:
In testing a 64x64 Conway Life-style Wasm mod, large repeated SetBlock batches caused tick instability unless mutation output was heavily capped.
Proposed solution
Add an efficient batched runtime block mutation api.
Possible shapes:
Alternatives considered
Current workaround:
This works, but makes simulation mods less responsive and harder to reason about.