Upgrade to Stride 4.4.0 and streamline build workflows - #380
Merged
Conversation
- Stride.CommunityToolkit.Linux.csproj: replace deprecated Stride.Core.Assets.CompilerApp with Stride.AssetCompiler in references, comments, and CompilerAppPath property - Stride.CommunityToolkit.Windows.csproj: update package reference and comments to Stride.AssetCompiler - Aligns with current Stride package naming and structure
- Stride.CommunityToolkit.Windows: description now reflects Stride.AssetCompiler as required package instead of Stride.Core.Assets.CompilerApp
- Replace hardcoded "StrideDefaultFont" with DefaultFontPath constant
- Set EntityTextComponent.TextColor to Color.White for score display
- Use PACK_PROJECTS env var to order all package projects - Restore, build, and pack in a loop; run tests once before pack - Publish all packages together for atomicity - Update actions/checkout and setup-dotnet versions - Remove redundant env vars and streamline steps for maintainability
- .github/workflows: bump actions/checkout v6 → v7 - .github/workflows: bump actions/setup-dotnet v5 → v6 - .github/workflows: bump actions/upload-pages-artifact v4 → v5
- Updated all Stride NuGet references to 4.4.0-dev - Centralized Stride version in CommonSettings.props as StrideVersion property - Replaced hardcoded versions with $(StrideVersion) in project files - Applied changes to toolkit libraries, examples, and benchmarks
Stride 4.4
- Program.cs: updated Content.Load<SpriteFont> to use /Stride.Engine/StrideDefaultFont - MyCustomSceneRenderer.cs: same update for default font loading - SpriteBatchRendererScript.cs: same update for default font loading - SpriteBatchRenderer.cs: same update for default font loading - EntityDebugSceneRenderer.cs: same update for default font loading - Ensures correct font asset is loaded and resolves asset path issues
- Add Stride.AssetCompiler NuGet package to get some default shaders
…, dispose old buffers - Update Buffer.Vertex.New and Buffer.Index.New to use named arguments - Add comments explaining avoidance of generic overload pitfalls - Dispose old vertex and index buffers before reassignment to prevent leaks
…cube, DPI, overlays - Use kinematic Bepu cube orbiting via SetTargetPose - Add per-monitor DPI awareness and ImGui font atlas rebuild - Refactor into smaller, documented methods for clarity - Replace DrawString with DrawText for all overlays and labels - Add WorldLabel struct for colored 3D text - Improve overlay panels: DPI-aware, responsive, status/diagnostics - Update example metadata and comments for new features
…no color targets - Add guard clause to avoid rendering outlines when no color render targets are bound - Prevents D3D debug warnings and unnecessary work during shadow passes - Add comments explaining the rationale for the check
…ct-ratio texture and simplify Draw2D - Use 16x9 placeholder texture for SpriteBatch; remove mipmap/streaming logic - Make SpriteBatch, DynamicEffectInstance, Texture nullable and dispose in Destroy - Refactor Draw2D as static method with explicit parameters - Remove legacy texture loading and unsupported dimension code - Program.cs: update RibbonBackgroundComponent parameters and fix entity setup
- Inherit from ActivableEntityComponent; remove Enabled property - MeshOutlineComponent: expose only Color and Intensity - MeshOutlineRenderFeature: remove RenderGroupMask, ScaleAdjust; add Thickness - Refactor outline logic into DrawOutline; clarify docs and comments - Ensure resource disposal in Destroy - MeshOutlineShader: clarify vertex inflation function - Program.cs: update example for new API, add metadata, improve comments
refactor: Code cleanup and feature improvements for 4.4
- MeshOutlineRenderFeature.cs: update XML docs for Thickness with units and example - Program.cs: add outlined orange cube using CreateOutlinedPrimitive
- Program.cs: split cube creation into CreateGroundedCube (physics) and CreateOrbitingCube (script) - OrbitScript.cs: add new documented SyncScript for orbiting - remove RotationComponentScript.cs in favor of OrbitScript - add comments explaining transform ownership and update metadata
- Add Bepu transform ownership section with best practices - Add detailed guide for running and debugging Stride examples - Improve scenario-driven guidance for contributors and AI assistants
- Direct AI assistants to .github/copilot-instructions.md - Emphasize importance for structure, conventions, debugging
- Refactor orbiting cube to use kinematic BodyComponent and LinearVelocity - Update OrbitScript for velocity-based movement and path correction - Add dynamic cubes ring for physical collision demonstration - Clarify XML docs on mesh vs. physics body movement - Revise example description to emphasize physics-driven approach
- Clarified bullet points for readability - No technical content changes
- Add new example project demonstrating ISimulationUpdate usage - Implement OrbitSimulationScript for kinematic cube orbit via SetTargetPose - Program.cs: setup scene with dynamic and kinematic cubes, toolkit helpers - Register project in Stride.CommunityToolkit.slnx with references - Add XML docs and metadata for discoverability and learning
- Add Example21_Instancing project with Program.cs and .csproj - Demonstrate GPU instancing vs. per-entity rendering in Stride - Show how to enable InstancingRenderFeature in code-only setup - Add keyboard toggles and overlay instructions/status - Include metadata for docs and categorization - Reduce OrbitSpeed from 100f to 1f for smoother camera movement
- Add Example22_Instancing_EntityTransform project to solution - Demonstrate physics-driven entities with instanced rendering - Program.cs compares instanced vs non-instanced cubes - Add detailed comments and overlays on instancing pattern - Clarify and improve AddInstancedShapes in toolkit - Update Stride.CommunityToolkit.slnx to include new example
There was a problem hiding this comment.
Pull request overview
This PR updates Stride Community Toolkit and its examples/tooling to target Stride 4.4, while also modernizing the solution/workflow layout (moving to .slnx) and simplifying packaging/build automation.
Changes:
- Centralizes Stride package versions behind
$(StrideVersion)for toolkit libraries and updates many references for Stride 4.4 API changes. - Reworks GitHub Actions publishing workflow to test once, then pack everything before pushing to NuGet.
- Cleans up example/rendering code (font asset paths, buffer creation overloads, renderer features) and removes several checked-in auto-generated
*.sdsl.csfiles.
Reviewed changes
Copilot reviewed 57 out of 57 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/Stride.CommunityToolkit.Examples.Launcher/examples-manifest.json | Adds a new example entry (“Basic2D Scene (Falling Shapes)”) to the launcher manifest. |
| Stride.CommunityToolkit.slnx | Introduces .slnx solution structure including examples/tests/tools. |
| Stride.CommunityToolkit.sln | Removes legacy .sln solution file. |
| Stride.CommunityToolkit.ndproj | Points NDepend analysis at .slnx and updates project metadata fields. |
| src/Stride.CommunityToolkit/Stride.CommunityToolkit.csproj | Switches Stride package references to $(StrideVersion). |
| src/Stride.CommunityToolkit/Rendering/Utilities/TextureCanvas.cs | Removes .wmp mapping (Stride API compatibility adjustment). |
| src/Stride.CommunityToolkit/Renderers/EntityTextRenderer.cs | Uses an explicit default font content path constant. |
| src/Stride.CommunityToolkit/Renderers/EntityDebugSceneRenderer.cs | Updates default font load path for Stride 4.4 content addressing. |
| src/Stride.CommunityToolkit.Windows/Stride.CommunityToolkit.Windows.csproj | Replaces Stride.Core.Assets.CompilerApp with Stride.AssetCompiler for shader compilation needs. |
| src/Stride.CommunityToolkit.Skyboxes/Stride.CommunityToolkit.Skyboxes.csproj | Switches Stride.Engine reference to $(StrideVersion). |
| src/Stride.CommunityToolkit.Skyboxes/SkyboxGenerator.cs | Updates Stride 4.4 HDR format API usage (IsHDR property). |
| src/Stride.CommunityToolkit.Linux/Stride.CommunityToolkit.Linux.csproj | Migrates to Stride.AssetCompiler and updates expected package paths. |
| src/Stride.CommunityToolkit.ImGuiNet/Stride.CommunityToolkit.ImGuiNet.csproj | Migrates shader compilation dependency to Stride.AssetCompiler. |
| src/Stride.CommunityToolkit.ImGuiNet/ImGuiNetSystem.cs | Fixes pipeline/buffer creation overload usage; disposes resized buffers to avoid leaks. |
| src/Stride.CommunityToolkit.ImGuiNet/Effects/ImGuiNetShader.sdsl.cs | Removes checked-in auto-generated shader keys file. |
| src/Stride.CommunityToolkit.ImGui/Stride.CommunityToolkit.ImGui.csproj | Migrates shader compilation dependency to Stride.AssetCompiler. |
| src/Stride.CommunityToolkit.ImGui/ImGuiSystem.cs | Updates PipelineState.New call signature for Stride 4.4 API. |
| src/Stride.CommunityToolkit.ImGui/Effects/ImGuiShader.sdsl.cs | Removes checked-in auto-generated shader keys file. |
| src/Stride.CommunityToolkit.DebugShapes/Stride.CommunityToolkit.DebugShapes.csproj | Migrates shader compilation dependency to Stride.AssetCompiler. |
| src/Stride.CommunityToolkit.DebugShapes/Effects/PrimitiveShader.sdsl.cs | Removes checked-in auto-generated shader keys file. |
| src/Stride.CommunityToolkit.DebugShapes/Effects/LinePrimitiveShader.sdsl.cs | Removes checked-in auto-generated shader keys file. |
| src/Stride.CommunityToolkit.Bepu/Stride.CommunityToolkit.Bepu.csproj | Switches Bepu Stride package references to $(StrideVersion). |
| src/CommonSettings.props | Adds StrideVersion property (currently set to 4.4.0-dev). |
| examples/code-only/Example18_Box2DPhysics/Example18_Box2DPhysics.csproj | Removes explicit Compile metadata for generated *.sdsl.cs files. |
| examples/code-only/Example18_Box2DPhysics/Effects/SDFPerimeterOutline2DShader.sdsl.cs | Removes checked-in auto-generated shader keys file. |
| examples/code-only/Example18_Box2DPhysics/Effects/OuterOutline2DShader.sdsl.cs | Removes checked-in auto-generated shader keys file. |
| examples/code-only/Example14_Raycast/Program.cs | Updates buffer creation calls to include resource usage parameter. |
| examples/code-only/Example13_RootRendererShader/Renderers/RibbonBackgroundRenderFeature.cs | Reduces texture memory usage and adds proper disposal/initialization safeguards. |
| examples/code-only/Example13_RootRendererShader/Program.cs | Fixes component instance usage and adjusts example parameter defaults. |
| examples/code-only/Example13_RootRendererShader/Example13_RootRendererShader.csproj | Removes explicit Compile metadata for generated *.sdsl.cs. |
| examples/code-only/Example13_RootRendererShader/Effects/RibbonBackgroundShader.sdsl.cs | Removes checked-in auto-generated shader keys file. |
| examples/code-only/Example13_MeshOutline/Program.cs | Modernizes the example and embeds example-metadata block. |
| examples/code-only/Example13_MeshOutline/MeshOutlineRenderFeature.cs | Refactors outline render feature for correctness/perf and Stride render-stage behavior. |
| examples/code-only/Example13_MeshOutline/MeshOutlineComponent.cs | Converts to ActivableEntityComponent and simplifies configuration surface. |
| examples/code-only/Example13_MeshOutline/Example13_MeshOutline.csproj | Removes explicit Compile metadata for generated *.sdsl.cs. |
| examples/code-only/Example13_MeshOutline/Effects/MeshOutlineShader.sdsl.cs | Removes checked-in auto-generated shader keys file. |
| examples/code-only/Example13_MeshOutline/Effects/MeshOutlineShader.sdsl | Updates shader code/comments to match the new outline approach. |
| examples/code-only/Example12_Particles/Example12_Particles.csproj | Adds Stride.AssetCompiler reference for shader compilation in the example. |
| examples/code-only/Example11_ImGuiNet/Program.cs | Expands the ImGui.NET example (DPI handling, kinematic body motion, richer overlay). |
| examples/code-only/Example10_StrideUI_DragAndDrop/Program.cs | Updates default font content path. |
| examples/code-only/Example10_StrideUI_DragAndDrop_BulletPhysics/Program.cs | Updates default font content path. |
| examples/code-only/Example09_Renderer/SpriteBatchRendererScript.cs | Updates default font content path. |
| examples/code-only/Example09_Renderer/MyCustomSceneRenderer.cs | Updates default font content path. |
| examples/code-only/Example04_MyraUI/Example04_MyraUI.csproj | Updates Myra.Stride package version. |
| examples/code-only/Example03_StrideUI_CapsuleAndWindow/Program.cs | Updates default font content path. |
| examples/code-only/Example01_Basic3DScene/Example01_Basic3DScene.csproj | Updates Stride.BepuPhysics.Debug package version. |
| examples/code-only/Example01_Basic3DScene_MeshLine/Program.cs | Updates buffer creation calls to include resource usage parameter. |
| examples/code-only/Example_CubicleCalamity/Scripts/RaycastInteractionScript.cs | Sets explicit TextColor (likely needed after Stride 4.4 text defaults changes). |
| examples/code-only/Example_CubicleCalamity/Example_CubicleCalamity.csproj | Removes explicit Compile metadata for generated *.sdsl.cs. |
| examples/code-only/Example_CubicleCalamity_BulletPhysics/Example_CubicleCalamity_BulletPhysics.csproj | Removes explicit Compile metadata for generated *.sdsl.cs. |
| examples/code-only/Example_2D_Playground/SpriteBatchRenderer.cs | Updates default font content path. |
| docs/includes/libraries.md | Updates docs to reference Stride.AssetCompiler for code-only support. |
| benchmarks/Stride.CommunityToolkit.Benchmarks/Stride.CommunityToolkit.Benchmarks.csproj | Updates Stride.Core package versions for benchmarks. |
| .github/workflows/github-pages.yml | Bumps action versions for docs publishing workflow. |
| .github/workflows/dotnet-nuget.yml | Reworks pack/publish workflow to test first, pack all, then push all. |
| .github/workflows/dotnet-build-test.yml | Bumps checkout/setup-dotnet action versions. |
| .github/workflows/bump-stride-nuget-packages.yml | Bumps checkout/setup-dotnet action versions. |
- Directory.Build.props: centralize TargetFramework, ImplicitUsings, Nullable, StrideVersion - All .csproj: use shared $(StrideVersion), remove redundant props - CommonSettings.props: remove StrideVersion property - Stride.CommunityToolkit.Linux.csproj: no longer overrides StrideVersion - examples-manifest.json: add entries for new/improved examples with metadata
…ebug build - Add <Build> element to skip building Example04_MyraUI in Debug configuration
- Stride.CommunityToolkit.Benchmarks: update BenchmarkDotNetDiagnosers to 18.7.37220.1 - Example17_SignalR, Example17_SignalR_Blazor: update SignalR.Client to 10.0.10 - Stride.CommunityToolkit.Tests: update Microsoft.NET.Test.Sdk to 18.8.1, coverlet.collector to 10.0.1 - Stride.CommunityToolkit.Examples.Launcher: update Avalonia packages to 12.1.1 - Stride.CommunityToolkit.Examples.MetadataGenerator: update Hosting, Serilog, System.CommandLine packages - MainWindow.axaml.cs: use Avalonia 12 DataTransfer API for clipboard copy
- Add RendererDefaults for shared font path and background color - Update EntityDebugSceneRenderer and EntityTextRenderer to use RendererDefaults - Remove redundant local constants and fields from both renderers
- MeshOutlineShader.sdsl: explain gaps on hard-edged meshes with per-face normals - Program.cs: add comment about Cube outline seams vs smooth primitives
feat: Adds advanced code-only examples, improves instancing and physics patterns
Refactor rendering defaults and clarify mesh outline documentation
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 126 out of 126 changed files in this pull request and generated 1 comment.
Suppressed comments (2)
Directory.Build.props:6
- The comment mentions that
Stride.CommunityToolkit.Linuxpins its ownStrideVersion, but the Linux project now uses$(StrideVersion)like the rest of the repo. This comment is now misleading.
Auto-imported by MSBuild into every project in this repository.
Shared settings live here so a Stride upgrade is a one-line change.
Projects may override any of these locally (e.g. Stride.CommunityToolkit.Linux pins its own StrideVersion).
-->
examples/code-only/Example22_Instancing_EntityTransform/Program.cs:45
sharedModelis nullable, but it's passed intonew ModelComponent(sharedModel)inCreatePlainCube(). With nullable enabled repo-wide, this will either produce warnings or allow a null to slip through ifStartordering ever changes. SincesharedModelis assigned before any cube creation, make it non-nullable.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.