WIP: feat: Export Assets with Resources and SDSL Shaders to ZIP Archive - #5
Open
w0wca7a wants to merge 88 commits into
Open
WIP: feat: Export Assets with Resources and SDSL Shaders to ZIP Archive#5w0wca7a wants to merge 88 commits into
w0wca7a wants to merge 88 commits into
Conversation
deps/FFmpeg/ restructured to per-RID subdirs (mirrors deps/VHACD/Release/), packed at runtimes/<rid>/native/. ToolLocator gains an opt-in ensureExecutable flag (flips +x on Linux/macOS since dotnet pack loses the bit) and a <pkgRoot>/runtimes/<rid>/native/ probe for the NuGet-cache layout.
SampleScreenshotTests honors STRIDE_TESTS_KEEP=1 to skip the post-pass cleanup of samplesGenerated/<name>/. GameMenu sets a claudeFallback hint so the vision arbiter ignores background-text overlap from font-metric drift.
Matrix gains an ubuntu-24.04/Vulkan entry; OS-specific steps (crash-dump regkeys, apt deps, Xvfb, Lavapipe ICD registration, NuGet user-config path) are gated by runner.os. Default shell switched to bash so the build/test commands share a single code path across runners. Artifact names include the OS label to avoid cross-platform collisions.
Partial-matching just "Liberation" hits Liberation Mono first on some filesystems, producing monospace metrics for samples that expect a proportional font and overflowing UI text layout.
…Metal surface via SDL)
…c libs (.a) via .ssdeps
…meTester + GameTestBase platform dir)
…mages pushed via simctl)
… for straight-alpha parity with Desktop
…ered-render check on iOS sim)
… + left-edge swipe to exit
…d host side before)
…or AVFoundation/Metal bindings
…ustom_decoder_ctl GET_LOOKAHEAD
…atch net10.0-macos)
…ll host .ips reports)
…quote Android filter extra)
… across test/build workflows
…ows, drop deps/LLVM (540MB of LFS)
…d, platform aliases)
…re bin, not the .app)
…the app host), exclude from vstest
… SDK (global.json rolls forward)
…r so it always reports
…preinstalled set re-download, ~4min -> ~2min)
Trim repo & CI checkout sizes (LFS, sparse checkout, LLVM via NuGet)
…erences refactor: Remove unused package references from project files
Fix sample teardown hang: drain GPU before the window is destroyed
Main asset export logic
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.
PR Details
This PR adds an Export Asset feature to the Game Studio Asset View context menu.
It allows exporting selected assets along with all their dependencies, source files,
scripts, and shaders into a single portable ZIP archive.
Related Issue
No existing issue — this is a new feature proposal.
Based on Eideren's comment from discussions about resources stride3d#2583.
Also inspired by idea about marketplace
Changes
Modified files
sources/editor/Stride.Core.Assets.Editor/ViewModel/AssetCollectionViewModel.cs— one line added in constructor to initialize the export command
sources/editor/Stride.GameStudio/View/GameStudioWindow.xaml— one
MenuItemadded to the Asset View context menu in the Explore sectionNew files
sources/editor/Stride.Core.Assets.Editor/ViewModel/AssetCollectionViewModel.ExportAssets.cs— partial class containing all export logic
Roadmap
right-click menu in the Explore section
AssetDependencyManager—all referenced assets are collected recursively including broken link warnings
.sdtex,.sdm3d,.sdscene, etc.) exported with theiroriginal folder structure relative to the package root
IAssetWithSource.MainSource,covering
ModelAsset,AnimationAsset,SkeletonAsset,TextureAssetand othersResources/External/with a hash suffix to avoid name collisions,with a warning listed in the completion dialog
ComputeShaderClassColor.MixinReferencein material attributes using recursive reflection, exported to
Effects/SceneAssetandPrefabAssetcomponent types,filtered to non-Stride assemblies and
ScriptComponentsubclasses only,exported to
Scripts/with correct paths per packagein the session; each file's archive path is relative to its own package root
HashSetdeduplication for sources,scripts, and shaders
type.Assembly.Locationis used toidentify which package a script belongs to, avoiding inclusion of excluded
or duplicate files from referenced projects
StatusViewModel.NotifyBackgroundJobStarted/NotifyBackgroundJobProgress/NotifyBackgroundJobFinishedto show aprogress bar in the Game Studio status area during export
and a full list of all exported assets with their types
a scene thumbnail or asset preview would improve discoverability when browsing
exported packages
component references on entities may be broken if the target project does not
have matching assembly names or namespaces; no remapping is performed
(reading
manifest.jsonand registering assets into a target package) is notimplemented
.csfile detection edge cases — scripts are found by filename glob(
ClassName*.cs); files with naming conventions that differ significantly fromthe class name may not be found
Stride.Core.Assets.Editor; parts of it (dependency traversal, source fileresolution) could be moved to
Stride.Core.Assetsfor reuse outside the editorTypes of changes
Checklist