-
-
Notifications
You must be signed in to change notification settings - Fork 1
[Standalone/Templates] Materialize standalone products as product-owned generated repos instead of packaged renames #62
Copy link
Copy link
Open
Labels
area:installInstallation, setup, first-run flows, environment/bootstrap setup.Installation, setup, first-run flows, environment/bootstrap setup.area:mod-loadingMod discovery, resolution, manifests, negotiation, attach/load behavior.Mod discovery, resolution, manifests, negotiation, attach/load behavior.area:runtimeRuntime behavior, lifecycle, ticking, session behavior, execution flow.Runtime behavior, lifecycle, ticking, session behavior, execution flow.component:bootfreven-boot: launcher, instance bootstrap, boot flows, packaging entrypoints.freven-boot: launcher, instance bootstrap, boot flows, packaging entrypoints.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:docsDocumentation, guides, READMEs, architecture docs, examples docs.Documentation, guides, READMEs, architecture docs, examples docs.component:enginefreven-engine: core engine/runtime/simulation/client-server internals.freven-engine: core engine/runtime/simulation/client-server internals.component:packagingBuild artifacts, zips, release packaging, manifests, distribution layout.Build artifacts, zips, release packaging, manifests, distribution layout.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:cross-transportShared semantic work that must align across builtin/wasm/native/external.Shared semantic work that must align across builtin/wasm/native/external.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:installInstallation, setup, first-run flows, environment/bootstrap setup.Installation, setup, first-run flows, environment/bootstrap setup.area:mod-loadingMod discovery, resolution, manifests, negotiation, attach/load behavior.Mod discovery, resolution, manifests, negotiation, attach/load behavior.area:runtimeRuntime behavior, lifecycle, ticking, session behavior, execution flow.Runtime behavior, lifecycle, ticking, session behavior, execution flow.component:bootfreven-boot: launcher, instance bootstrap, boot flows, packaging entrypoints.freven-boot: launcher, instance bootstrap, boot flows, packaging entrypoints.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:docsDocumentation, guides, READMEs, architecture docs, examples docs.Documentation, guides, READMEs, architecture docs, examples docs.component:enginefreven-engine: core engine/runtime/simulation/client-server internals.freven-engine: core engine/runtime/simulation/client-server internals.component:packagingBuild artifacts, zips, release packaging, manifests, distribution layout.Build artifacts, zips, release packaging, manifests, distribution layout.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:cross-transportShared semantic work that must align across builtin/wasm/native/external.Shared semantic work that must align across builtin/wasm/native/external.type:architectureLong-term structural / contract / system design work, not just isolated implementation.Long-term structural / contract / system design work, not just isolated implementation.
Summary
Follow up the standalone shipped-product profile from #61 by defining and implementing the long-term standalone authoring/export model:
freven-bootremains a generic multi-profile platform/devkit repofreven_boot/freven_client/freven_serverrepo-level bin identity plus packaged renamesCurrent state
After #61, Freven now has a real third shipped profile:
vanilla-producthost-foundationstandalone-game-productThat is the correct short/medium-term base.
In particular,
standalone-game-productis now honest as a shipped standalone custom-game product profile:However, the current standalone product identity is still implemented as:
freven-bootfreven_bootfreven_clientfreven_serverThat is acceptable for the generic multi-profile repo and was the right decision for #61.
But it is not the final long-term standalone product authoring/export model.
Problem / Motivation
Freven is intended to support both of these worlds:
Platform-style flows
Standalone shipped products
That means standalone products should eventually become true product-owned app projects, not only packaged views over a generic platform repo.
If this is not made explicit, the current #61 solution could accidentally harden into the permanent model:
That would be good enough for proof/export, but weaker than the long-term architecture Freven should aim for.
Architectural direction
Keep this true
freven-bootis the generic multi-profile repo.It should remain able to validate and package:
It should not become the permanent home of every future concrete standalone game as if each product should live inside the generic repo.
Move toward this
A future standalone authoring/export flow should materialize a product-owned generated project/repo that owns its own identity end-to-end.
That generated product should own:
The standalone product should read like a real app/product repo from the inside out, not only after packaging.
Target model
At long-term maturity, standalone export should look more like:
Important boundary
This issue is not asking to collapse platform mode and standalone mode into one thing.
Instead, the model should stay layered:
Requirements
Product-owned generated project shape
Define and implement a path where standalone projects can own, at minimum:
Preserve generic repo correctness
The solution must preserve that:
freven-bootremains a generic multi-profile repostandalone-game-productinfreven-bootcan continue to exist as a proof/reference profileTemplate/export flow
There should be a clear path for:
Avoid false gameplay assumptions
The standalone generation/export path must not assume that every standalone product is:
A bundled proof/demo experience may exist, but the generated standalone model must support:
Product identity should be real, not cosmetic
Avoid ending up with a system where:
The generated standalone project should internally read like the product it is.
Non-goals
standalone-game-productfromfreven-bootas a proof/reference profile.Deliverables
At minimum:
Acceptance criteria
This issue is done when Freven has a clear and durable answer to:
Related / Follow-up context