Skip to content

Building from Source

Samuel Costa edited this page Jul 5, 2026 · 1 revision

Building from Source

3DSnickerStream is a single .NET 8 / Avalonia 11 project — one codebase for Windows, macOS and Linux.

Prerequisites

Build & run

git clone https://github.com/samaBR85/3DSnickerStream.git
cd 3DSnickerStream

dotnet build   "Snickerstream.Avalonia" -c Release
dotnet run --project "Snickerstream.Avalonia"

Self-contained publish

# example: Windows
dotnet publish "Snickerstream.Avalonia" -c Release -r win-x64 \
  --self-contained true -p:PublishSingleFile=true -o publish/win-x64

Replace the RID with linux-x64, osx-arm64 or osx-x64 for the other platforms.

macOS

Building on the Mac avoids the Gatekeeper "damaged"/unsigned hassle entirely. There's a step-by-step guide: BUILD-MACOS.md (it's also how to get an Intel build, since releases ship Apple Silicon).

Continuous integration

The CI workflow builds and packages Windows + Linux on every push, and drafts a GitHub Release on a v* tag. The macOS build is produced locally by the maintainer and its asset uploaded by hand. The packaging/ scripts wrap the macOS .app and the Linux AppImage.

Project layout

  • Snickerstream.Avalonia/ — the cross-platform app (net8.0, Avalonia 11).
    • Net/ — the NTR / HzMod protocol, the KCP transport, and the compression-format decoders (NtrLossless, Kcp, KcpFramer, JpegReliableAssembler, NtrJpegDelta, NtrHuff).
    • Views/ — the Avalonia UI (connect screen, stream view, dialogs).
    • Models/ — settings, presets, key bindings.
  • Snickerstream4Win/ — the frozen legacy WPF app, kept for reference only.
  • packaging/ — macOS/Linux packaging manifests and scripts.

A note on the compression decoders

The Uncompressed / Reliable-Stream / Delta formats are faithful C# ports of xzn's ntrviewer-hr — the custom reliable transport, the JPEG header synthesis, and the bespoke delta JPEG decoder. See Credits and License.

Clone this wiki locally