OctoShaper - First Unity Procedural Graph Keep Hold After Asset Store Launch 2026
![]()
If you are searching octoshaper unity after its mid-August 2026 Asset Store launch, the useful question is not whether node graphs look tidy in a trailer. The useful question is a pipeline decision: can you author one scatter or modular-structure graph in the editor, run the same logic at runtime with GenerateSync / GenerateAsync, override parameters from gameplay code without string-chaos, and is a buy-once Unity-native tool better than Blender Geometry Nodes exports or another custom C# spawner?
OctoShaper is a node-based procedural generation tool for Unity: one graph model for editor and play mode, realtime preview, procedural prefabs, sync or async execution, and an indie-friendly one-time purchase (no subscription). The official product page and runtime generation docs are the authoritative pins; the itch Asset Store announcement marks the beta-to-store moment. An announcement is a ceiling. This tutorial is a floor test on one disposable scene.
This article turns the launch into a 90-150 minute O1-O6 keep/hold lab. You will install OctoShaper into a throwaway project, build a minimal scatter/structure graph, preview in-editor, drive ProceduralGraphExecutor with parameter overrides, compare sync vs async, optional procedural prefab, write honest limits vs Blender GN / Houdini / hand scripts, and save octoshaper_v1_keep_hold_receipt_v1.json. You will not rebuild your whole level pipeline tonight.
Non-repetition: this is not World Machine terrain spike, a terrain DCC keep/hold. It is not UE 5.8 procedural vegetation editor, an Unreal experiment. This URL owns one intent: is OctoShaper worth adopting for Unity editor+runtime procedural graphs after Asset Store launch, tested on one evening with honest hold criteria?
| Audience | Start here | Done when |
|---|---|---|
| Beginner Unity indie | Glossary, O1-O3 | One graph places props you can see |
| Gameplay / tech artist | O1-O6, sync/async, params | Receipt records executor pattern + limits |
| Studio lead / company | CapEx four-liner | Buy-once cost vs custom tool debt |
| Creator | Monday ritual + share clip | Before/after of parameter tweak regenerating |
Time estimate: 90-150 minutes. Add 30 minutes if Asset Store import or package resolution fights you.
Default recommendation: keep OctoShaper for Unity-native scatter/modular variation and runtime regen if O1-O4 pass. Hold replacing Blender GN or a battle-tested custom spawner until O5 proves the graph covers your real content types without editor-only assumptions, and until buy-once pricing fits the team.
What OctoShaper actually ships
From the product and docs surfaces:
- Node graphs for structures, growth/branching, scattering/sampling, and runtime variation.
- One graph model for editor authoring and play-mode execution.
- Realtime visual feedback while editing parameters.
- Unity-native - stay in-engine instead of revolving around a separate DCC for day-to-day iteration.
- Procedural prefabs - package graph-driven setups for reuse across scenes.
- Sync and async execution -
GenerateSync(),GenerateAsync(), and mode-awareGenerate(). ProceduralGraphExecutor- component API withGenerateOnEnable, parameter overrides by name or Guid, clear/reset helpers.- Direct bootstrap -
OctoShaperRuntime.CreateExecutionContext/CreateExecutorwhen you want ElementSet output without default scene instancing. - Commercial model: one-time purchase, lifetime license, no subscription (indie-friendly positioning). Verify current Asset Store / itch price at checkout.
- Roadmap honesty: mesh generation, Godot support, 2D textures, and more are future interests - do not buy for features that are not shipping today.
Monday ritual - one graph, six gates, one decision
| Minute | Action | Evidence | Keep or hold |
|---|---|---|---|
| 0-20 | Throwaway Unity project; import OctoShaper; note version | Session header | Hold if package fails resolve |
| 20-50 | Author minimal scatter or modular-kit graph; preview live | Screenshot | O1 passes if visible variation |
| 50-75 | Wire ProceduralGraphExecutor; disable Generate On Enable; GenerateSync |
Play-mode result | O2 |
| 75-100 | Parameter overrides from code (Count, Radius, etc.) |
Regen on button | O3 |
| 100-120 | Async path once; note hitch vs sync | Timing note | O4 |
| 120-150 | Prefab optional; Blender GN honesty; CapEx + receipt | Decision | O5-O6 |
If you only have 90 minutes, stop after O3. A graph that regenerates from named parameters is a real evaluation.
Company CapEx four-liner
- Scope - one seat evaluates on a disposable scene; no level-wide migration tonight.
- Cost - one-time Asset Store / itch purchase (verify price); no subscription - compare to engineer-weeks of a custom graph tool.
- Trap - buying for roadmap items (Godot, mesh gen) that are not in v1.0.0; or assuming async means "free" on the main thread.
- Owner - one engineer owns graph style guide, parameter-name wrappers, sync/async policy, and the Blender GN boundary.
Rough buy-vs-build math (fill real numbers):
Custom spawner maintenance: [N] hours/month × [$]/]
OctoShaper one-time: [$P]
Break-even months ≈ P / (N × COP) (if Octo removes that maintenance)
If N < 2 hours/month and graphs stay tiny, hold may win.
If three designers already ask for "knobs without code," buy-once usually wins.
Do not count hypothetical "we might need Houdini later" as a reason to reject a $tens tool that unblocks this quarter's scatter pass.
Prerequisites
- [ ] Unity version matching the Asset Store listing (confirm at install).
- [ ] A disposable 3D scene with a few prefab props to scatter or a modular kit.
- [ ] Access to runtime docs while you work.
- [ ] VCS so generated scene content is revertible.
- [ ] Optional: an existing Blender GN or C# spawner for A/B honesty.
Beginner glossary
- Procedural graph: a node network that generates content from rules and parameters.
- ProceduralGraphExecutor: Unity component that runs a graph in play mode / on demand.
- Parameter override: runtime value that replaces an authored graph parameter for one generation.
- GenerateSync / GenerateAsync: immediate vs awaited execution paths.
- ElementSet: OctoShaper's main output collection of generated elements.
- Procedural prefab: imported asset that regenerates from graph inputs.
O1-O6 - the evening smoke in detail
O1 - Minimal graph with live preview
Create a new ProceduralGraph aimed at something tiny: scatter 10-30 props on a plane, or a short modular fence/kit. Expose two parameters you care about (Count, Radius or Width). Tweak them in the editor and confirm the preview updates without a full scene reload.
Check: can a designer understand the graph without reading your Discord lore? Are parameter names human-readable?
Pass O1 when a parameter drag visibly changes the result.
Scatter acceptance tests (run before calling O1 done):
| Test | Pass if |
|---|---|
| Count = 0 | No props (or documented empty ElementSet) |
| Count = 1 | Exactly one instance, known seed/placement |
| Count = 25 | No overlapping stack that reads as a bug (or overlaps are intentional) |
| Radius min → max | Spread visibly changes without NaN / empty scene |
| Undo parameter | Preview returns to prior look |
If Count = 0 still spawns junk, fix the graph before wiring runtime - you will otherwise debug "executor bugs" that are authoring bugs.
O2 - ProceduralGraphExecutor + GenerateSync
Add ProceduralGraphExecutor, assign the graph, set GenerateOnEnable = false, then call GenerateSync() from a small driver after setting overrides:
using CuriousTrove.OctoShaper;
using UnityEngine;
public sealed class OctoSmokeDriver : MonoBehaviour
{
[SerializeField] private ProceduralGraphExecutor executor;
private void Start()
{
executor.GenerateOnEnable = false;
executor.ExecuteAsAsync = false;
executor.SetParameterOverride("Count", 12);
executor.SetParameterOverride("Radius", 4.5f);
executor.GenerateSync();
}
}
Check: play mode produces the expected instances; stopping play cleans up or leaves known residue you documented.
Pass O2 when sync generation works from code with Generate On Enable off. This is the backlink magnet: a copyable executor driver vs announcement SERP.
O3 - Named parameter overrides + regen
Add a button or key that changes Count and calls Generate() / GenerateSync() again. Prefer wrapping parameter names in constants:
static class OctoParams
{
public const string Count = "Count";
public const string Radius = "Radius";
}
Use TrySetParameterOverride when a missing name should not throw.
Check: second generation replaces or accumulates as you intend (document which); no silent no-op because a renamed parameter broke strings.
Pass O3 when regen from gameplay-shaped code is reliable.
O4 - Sync vs async honesty
Run the same graph once with GenerateSync and once with await GenerateAsync() (set ExecuteAsAsync appropriately). Note hitch length and whether async actually helps your frame budget.
| Mode | Prefer when | Risk |
|---|---|---|
| Sync | Deterministic boot / small graphs | Main-thread hitch |
| Async | Larger graphs during gameplay | Complexity; still not "free CPU" |
| Generate() | Respect current executor mode | Easy to misunderstand mode flags |
Pass O4 when you wrote which mode you will allow in shipping builds.
Executor mode matrix (paste into the receipt):
| Flag / call | Boot strap | Gameplay regen | Cinematic bake |
|---|---|---|---|
| Generate On Enable | Usually off | Off | Optional on |
| GenerateSync | OK for tiny | Risky if hitch > 4ms | OK offline |
| GenerateAsync | Optional | Preferred for large | Rarely needed |
| ClearParameterOverrides | After tests | When resetting difficulty tiers | Before final bake |
Measure hitch with the Unity Profiler once - "feels fine" is not a gate.
O5 - Prefab path + Blender GN / custom-script honesty
Optional: create a procedural prefab from the graph and drop it in a second scene. Confirm it regenerates as documented.
Then fill the honesty table:
| Need | Prefer OctoShaper | Prefer keep current |
|---|---|---|
| Stay in Unity for day-to-day iteration | Yes | DCC-first art pipeline already staffed |
| Runtime regen from gameplay params | Yes | Offline bake only |
| Buy-once small-team tool | Yes | Already deep in Houdini/Blender GN |
| Custom one-off spawner already 100 LOC | Only if graphs grow | Keep the script |
| Terrain-scale world gen | Maybe later - prove O1-O4 first | World Machine / dedicated terrain tools |
For offline terrain and DCC-heavy work, keep World Machine and Blender→Unity export discipline in the stack. OctoShaper is not a Meshy replacement either - AI mesh imports stay on their own keep/holds like Meshy 7.
Pass O5 when the boundary is written for your studio.
O6 - Decision and share note
OctoShaper Asset Store smoke (YYYY-MM-DD)
Unity: [version] OctoShaper: [v1.0.0]
O1 live preview graph: pass/fail
O2 GenerateSync executor: pass/fail
O3 param regen: pass/fail
O4 sync/async choice: sync / async / both-gated
O5 vs GN/scripts: keep Octo / hold / hybrid
Decision: adopt scatter / adopt runtime / hold
Pass O6 when the note and receipt exist with a named owner. Capture a 5-second clip of a parameter change regenerating content.
Practical guidance the docs want you to remember
From the official runtime guidance, treat these as ship rules:
- Turn Generate On Enable off when gameplay must apply overrides first.
- Prefer your own parameter wrappers over scattered string literals.
- If runtime fails oddly, check whether graph code was regenerated, whether main output is an ElementSet, and whether the graph assumed editor-only data.
- Choose the surface deliberately: component executor vs direct
OctoShaperRuntimebootstrap vs procedural prefab.
Who should hold
- Teams mid-milestone with a working custom spawner - do not rip it out this week.
- DCC-only art pipelines that never need runtime regen - Blender GN may remain primary.
- Anyone buying for roadmap Godot/mesh features - evaluate shipping v1 only.
- Huge open-world streaming until you prove async + budgeting on your content density.
Common mistakes
- Leaving Generate On Enable on while also setting overrides in
Start(race / double generate). - Scattering magic parameter strings across ten scripts.
- Assuming async removes hitch cost entirely.
- Building a 200-node graph on night one instead of a 10-node scatter.
- Treating OctoShaper as a Houdini replacement for film-scale pipelines.
Failure modes cheat sheet
| Symptom | Likely cause | First fix |
|---|---|---|
| Double spawn on play | Generate On Enable + Start generate | Disable auto-run |
| Override silent fail | Renamed parameter | TrySet + log; wrap constants |
| Preview ≠ play | Editor-only assets in graph | Regenerate; strip editor paths |
| Long hitch | Huge sync graph | Async + loading UX; simplify |
| Empty ElementSet | Graph logic / Count = 0 path | O1 acceptance tests |
| Prefab "dead" | Wrong surface (normal vs procedural prefab) | Re-read prefab docs |
Ship the cheat sheet next to the receipt so week-two on-call is not archaeology.
Troubleshooting order
- Nothing generates - graph assigned? Generate called? Generate On Enable confusion?
- Overrides ignored - wrong parameter name; use TrySet and log failures.
- Editor preview ≠ play mode - editor-only assumptions; regenerate graph code.
- Hitch on sync - shrink graph or move to async with clear loading UX.
- Import / asset issues - isolate with 3D model import Blender→Unity if props themselves fail, not the graph.
- Prefab confusion - confirm you wanted a procedural prefab vs a normal prefab of generated instances.
What teams should do next Monday
Solo indie
- Finish O1-O3 on a greybox scatter.
- Adopt for one biome dressing pass if O4-O5 pass.
Small studio
- One engineer owns parameter-name constants and sync/async policy.
- Designers edit graphs; programmers own executors - write that contract down.
Company
- CapEx: one-time license vs custom tool maintenance.
- Require the smoke receipt before any "replace all spawners" ticket.
Creator
- Post a parameter-slider → regen clip. For broader tooling context, see 25 free tech-art tools and 20 free cross-engine prototype starters.
Graph style guide (copy into the tech bible)
| Rule | Why |
|---|---|
| Max ~15 nodes for first production graph | Readable in review |
| Every exposed param has a noun name | Runtime overrides stay stable |
| No editor-only texture paths in runtime graphs | Play mode parity |
| One graph = one job (scatter or structure) | Avoid mega-graphs |
| Document sync/async per graph | Hitch budgets |
| Regen must be idempotent or explicitly additive | Designers need predictability |
What not to put in an OctoShaper graph (yet)
- Full open-world streaming / paging logic - prove scatter first.
- One-off boss encounters better done as hand-placed prefabs.
- Anything that requires secret server-side seeds you cannot store in a client graph.
- Film-scale destruction sims - wrong tool class.
- "Temporary" debug nodes left enabled in shipping builds - treat graph review like code review.
If a designer asks for a graph that is really a quest script, redirect to gameplay code. OctoShaper wins at content variation, not at narrative state machines. Write that boundary into the tech bible so the next spike does not reopen the same debate under a new graph name.
Key takeaways
- OctoShaper is a Unity-native node procedural tool now on the Asset Store (product, announcement).
- One graph model serves editor preview and runtime generation.
- Drive play mode with
ProceduralGraphExecutorand explicitGenerateSync/GenerateAsync. - Disable Generate On Enable when overrides must apply first (runtime docs).
- Wrap parameter names - do not scatter string literals.
- Sync vs async is a hitch decision, not a fashion choice.
- Procedural prefabs and direct
OctoShaperRuntimebootstrap are alternate surfaces - pick one per system. - Buy-once / no subscription - verify price; do not pay for roadmap vapor.
- Hold replacing Blender GN or tiny custom spawners until O5 honesty passes.
- Start with a tiny scatter graph, not a world generator.
- Check ElementSet output and regenerated graph code when runtime fails oddly.
- A parameter-regen receipt is the cite-worthy artifact.
FAQ - OctoShaper Unity
What is OctoShaper?
OctoShaper is a node-based procedural generation tool for Unity that lets you author graphs in the editor and run the same logic at runtime for structures, scattering, growth, and live variation.
Is OctoShaper subscription-based?
No. The product is positioned as a one-time purchase with a lifetime license. Confirm current pricing on the Asset Store or itch.
Can the same graph run in play mode?
Yes. That is a core claim - editor authoring plus runtime execution via ProceduralGraphExecutor or direct runtime bootstrap APIs.
What is the difference between GenerateSync and GenerateAsync?
GenerateSync runs immediately on the calling path. GenerateAsync is the awaited path for responsive gameplay. Generate() follows the executor's current mode flags. Measure hitch cost on your graph.
Should I use Generate On Enable?
Only when idle auto-run is what you want. For gameplay-driven overrides, turn it off, set parameters, then generate explicitly.
How does OctoShaper compare to Blender Geometry Nodes?
Blender GN is DCC-side authoring with export into Unity. OctoShaper keeps day-to-day iteration and runtime regen inside Unity. Many teams will hybridize - do not force a false either/or.
Does OctoShaper replace Houdini?
No. Treat it as an indie-friendly Unity-native graph tool for game-sized scatter/structure problems, not a film-scale DCC.
What should I check if runtime generation fails?
Regenerate graph code, confirm the main output is an ElementSet, and remove editor-only assumptions - per the official runtime guidance.
Related reading
- Reactive Bones - First Unity Secondary Motion Keep Hold for Indies 2026
- How to Try World Machine Terrain - First Mac/Linux Spike Keep Hold 2026
- Blender to Unity and Godot Export Pipeline - Clean Art Handoff Checklist
- How to Try Meshy 7 Image to 3D - First Indie Alignment Smoke 2026
- 25 Free Tech-Art Tools and Shader-Graph Libraries
- 20 Free Cross-Engine Prototype Starter Projects
- 3D Model Import Issues - Blender to Unity Fix