EffectViewer is a cross-platform Avalonia tool for inspecting, editing, and staging effect assets. It can organize effect resources into projects, preview them with OpenGL/WebGL, and run Lua-powered ShowCase scripts that combine reanimations, particles, trails, and simple drawing commands in one scene.
- Create, rename, delete, import, export, and reopen EffectViewer projects.
- Import individual resources or whole resource folders.
- Preview image atlases and edit image IDs, rows, columns, and frame selection.
- Inspect and edit reanimation, particle, and trail definitions.
- Edit reanimation tracks, frames, transforms, tween metadata, and timeline selection.
- Preview particle emitters, float parameter tracks, particle fields, and trail curves.
- Write and run Lua ShowCase scripts for animated effect scenes.
- Use English or Simplified Chinese UI text, plus custom JSON language files.
- Run on Desktop, Windows, and Browser targets, with Android and iOS project shells included.
- .NET SDK that supports
net10.0andnet10.0-browser. - The Windows publishing host targets
net10.0-windows. - Desktop OpenGL support for the desktop app.
- Optional platform SDKs when building mobile targets:
- Android SDK for
EffectViewer.Android - Xcode/iOS simulator tooling for
EffectViewer.iOS
- Android SDK for
dotnet run --project EffectViewer.Desktop/EffectViewer.Desktop.csprojdotnet build EffectViewer.Desktop/EffectViewer.Desktop.csproj
dotnet build EffectViewer.Windows/EffectViewer.Windows.csproj
dotnet build EffectViewer.Browser/EffectViewer.Browser.csprojThe full solution includes Android and iOS projects:
dotnet build EffectViewer.slnxIf Android SDK is not configured, the full solution build can fail on EffectViewer.Android. Build Desktop or Browser directly when you only need the main editor.
A ready-to-import sample is included at:
Samples/QuickStartShowcase.zip
To try it in the app:
- Run the desktop app.
- Choose
Project->Import Project Zip. - Select
Samples/QuickStartShowcase.zip. - Open
quickstart_showcasefrom the project tree. - Click
Runin the ShowCase editor.
To inspect the manifest and Lua script directly, unzip Samples/QuickStartShowcase.zip first.
EffectViewer/ Shared Avalonia UI, view models, rendering and runtime code
EffectViewer.Desktop/ Desktop app host
EffectViewer.Windows/ Windows publishing host
EffectViewer.Browser/ Browser/WebAssembly app host
EffectViewer.Android/ Android app host
EffectViewer.iOS/ iOS app host
Samples/ Importable sample projects
docs/lua_api.en-US.md Lua ShowCase scripting reference
EffectViewer projects use a project.effectproj.json manifest and can reference:
- Images:
.png,.jpg,.jpeg,.bmp,.gif,.webp,.tga - Reanimations:
.reanim,.reanim.compiled - Particles:
.xml,.xml.compiled - Trails:
.trail,.trail.compiled - ShowCases:
.lua
ShowCases are Lua scripts that run inside the current project. A script can create project resources:
local body = scene.reanim("sample_reanim", 400, 300)
local fire = scene.particle_system("fire_burst", 420, 280)
local slash = scene.trail("sword_slash", 0, 0)It can also draw directly:
local context = {}
function context:draw(g, elapsed, frame)
g:reset()
g:set_color(255, 128, 64, 220)
g:fill_rect(120, 120, 180, 64)
end
scene.regist(context)See docs/lua_api.en-US.md for the full scripting API.
- Package versions are centralized in Directory.Packages.props.
- Product version metadata starts at
0.1.0in Directory.Build.props; keep app package display versions and CHANGELOG.md in sync when cutting a release. - The shared UI and runtime target
net10.0; the Windows publishing host targetsnet10.0-windows; the browser host targetsnet10.0-browser. - Desktop, Windows, and Browser builds are good smoke tests for most shared code.
- Run the QuickStart smoke test before release candidates.
- Use the release checklist when tagging a release or creating GitHub release artifacts.
- Mobile builds require their native SDKs even when shared code is unchanged.