New Stride.Templates.AssetPacks package (nuget.org only, fetched on demand)
ships Building blocks / Animated models / Materials / Particles. GameStudio
offers them as checkboxes when creating a game; dotnet new and the stride
CLI instantiate them into an existing game.
- migrate 15 tracked solutions; update .slnf paths, workflows, build
files, repo-root markers, ios/android runners, .vscode, docs
- Stride.slnx: drop vestigial x86/x64/Mixed Platforms (solution is
all-managed) and build with Platform=Any CPU; GameStudio listed first
so it stays the default startup project
- Stride.VisualStudio.slnx: Package project first (default startup)
- samples: drop dead AppStore/Testing/Windows configs (no per-platform
exec projects remain, only .Game + .Windows)
List or instantiate the templates bundled with an installed Stride version
(--version, else newest installed). The template-engine glue is shared by
source with Stride.Assets, so the CLI needs no engine reference.
No empty assembly/pdb, so VS's up-to-date check keys off the nupkg. Re-enable FUTDC, drop the build-order serialization, drop the dead Cache excludes, and track sample files as per-sample literal-wildcard inputs so an edit triggers a repack.
Starters/Samples packages are content-versioned (StrideSamplesVersion) but
must carry the engine prerelease suffix so dev/beta builds don't clash with
released packages of the same base version. SamplesVersion now lives in
SharedAssemblyInfo.cs as the single source; the pack (Stride.Templates.Common.targets)
and the bridge query (DotNetNewTemplateBridge) both append NuGetVersionSuffix to it,
and the bridge resolves an exact version so release/prerelease ordering can't misresolve.
- single generated overlay (was Worktree.cs + NuGet.cs) swapped in by one SDK target
- base PublicVersion is an implausible sentinel (4.4.65534), decoupled from the floor, so a non-overlaid build is obvious; the overlay is always emitted
- generator runs on CI too (empty suffix via NoLedgerSuffix); release task fails on a no-tag fallback (StrideAllowFloorVersion opts in)
- share the NuGet version derivation via Stride.NuGetVersion.props (dedup PackageInfo + Templates.Common)
First checkout registers as 'dev' (-dev) instead of '(primary)' (no suffix), so
no local build ever shares a version with a release (avoids global-cache/NugetDev
shadowing). Use the '(empty)' ledger token, or StrideSkipWorktreeVersion, for a
clean local build; legacy '(primary)' entries are honored as -dev.
Add docs/build/versioning.md (engine version, StrideGitVersion, -devN per-checkout dev versions, release flow, sample/template package versions); link it from docs/build/README.md and document the sample dev/release flip in the templates README.
TemplatePreprocessor copies MyTemplate.{Platform}/ from a reference template
(NewGame) at pack time for any platform the sample didn't author by hand.
NewGame's library dir renamed MyTemplate/ → MyTemplate.Game/ to unify the
naming with samples so injected csprojs reference the right sibling verbatim.
stride-platforms was a near-clone of stride-game and drifting from it (e.g. the
icon refresh only landed on NewGame's copy). Collapsed via an updateOnly
preprocessor symbol that excludes MyTemplate/ + *.sln; UpdatePlatformsGenerator
drives stride-game with updateOnly=true. samples/Platforms/Platforms/ deleted.
PackageVersion only picks up the -devN suffix at target run time, so
UpToDateCheckBuilt captured the un-suffixed nupkg path at MSBuild evaluation
and VS rebuilt the templates project on every F5. Read the ledger from the
property block to compute the suffix early; the build-time target stays
authoritative.
Per-platform exec scaffolds live at samples/Platforms/Platforms/, packed into
Stride.Templates.Games. UpdatePlatformsGenerator drives the bootstrapper with
the multi-choice platforms parameter and registers the produced csprojs as
Executable projects. Obsolete UpdatePlatforms.sdtpl removed to avoid a
broken duplicate UI entry.
Scaffold lives at samples/Library/Library/ and packs into the existing
Stride.Templates.Games nupkg. AddLibraryGenerator dispatches the bootstrapper
(same path as DotNetNewTemplateGenerator) and registers the produced csproj
as a Library project on the session. WpfAddLibraryParameterPrompt keeps the
existing ProjectLibraryWindow as the name/namespace dialog.
sources/templates/README.md (end-user CLI usage, local dev workflow,
add-a-sample recipe, architecture pointers). Short pointer added to root
README + docs/build/README.md Further-Reading.
Three NuGet template packages: Games (NewGame, bundled with GameStudio),
Games.Starters (5 genre starters on nuget.org), Samples (18 feature demos
on nuget.org). Shared MSBuild logic in Stride.Templates.Common.targets.