KappaDuck.Quack 0.4.0-alpha.20260118213523

This is a prerelease version of KappaDuck.Quack.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package KappaDuck.Quack --version 0.4.0-alpha.20260118213523
                    
NuGet\Install-Package KappaDuck.Quack -Version 0.4.0-alpha.20260118213523
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="KappaDuck.Quack" Version="0.4.0-alpha.20260118213523" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="KappaDuck.Quack" Version="0.4.0-alpha.20260118213523" />
                    
Directory.Packages.props
<PackageReference Include="KappaDuck.Quack" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add KappaDuck.Quack --version 0.4.0-alpha.20260118213523
                    
#r "nuget: KappaDuck.Quack, 0.4.0-alpha.20260118213523"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package KappaDuck.Quack@0.4.0-alpha.20260118213523
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=KappaDuck.Quack&version=0.4.0-alpha.20260118213523&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=KappaDuck.Quack&version=0.4.0-alpha.20260118213523&prerelease
                    
Install as a Cake Tool

Quack! 🦆 NuGet Version

Quack! is a fast, lightweight, and code-first 2D/3D game engine built on SDL and its extensions (SDL_image, SDL_mixer, SDL_ttf). It is designed for modern .NET 9+ games and desktop apps, providing a clean and flexible API that abstracts low-level platform details.

Quack! offers a wide range of features, including:

  • Rendering 2D/3D graphics using SDL's rendering API (SDL_renderer and SDL_gpu)
  • Window management and event handling
  • Input handling for keyboard, mouse, and game controllers
  • Audio playback and management
  • And much more!

Quack & SDL compatibility

Quack! is shipped with native binaries of SDL and its extensions. Below is a compatibility table showing which versions of SDL are used in each Quack! release.

Quack! version SDL version SDL_image version SDL_ttf version SDL_mixer version
source 3.4.0 3.2.6 3.2.2 N/A
0.3.0 3.2.30 3.2.6 3.2.2 N/A
0.2.0 3.2.28 3.2.4 3.2.2 N/A
0.1.0 3.2.18 N/A N/A N/A

⚠️ During active development, SDL dependencies may be updated frequently. ⚠️

Cross-platform support

Quack! currently supports Windows and Linux.

The API is designed to be cross-platform thanks to SDL's abstraction layer, making porting to other platforms straightforward.

Other platforms such as Android or WebAssembly may be supported in the future, but there are no immediate plans.

Installation

Quack! is available on NuGet. Install it via the .NET CLI:

dotnet add package KappaDuck.Quack -v 0.3.0

or add it directly to your .csproj file:

<PackageReference Include="KappaDuck.Quack" Version="0.3.0" />

You can also install via the NuGet Package Manager in your Visual Studio or JetBrains Rider.

Usage

A minimal example creating a resizable window and handling quit events:

using KappaDuck.Quack.Events;
using KappaDuck.Quack.Graphics.Rendering;

using RenderWindow window = new("Quack! Playground", 1080, 720)
{
    Resizable = true
};

while (window.IsOpen)
{
    while (window.Poll(out Event e))
    {
        if (e.RequestQuit())
        {
            return;
        }
    }
}

More examples can be found in the Examples directory.

Development & Playground

You can build Quack! from source or run quick experiments using a playground file.

Prerequisites

The SDK includes everything needed to build and run .NET applications.

Setup

  1. Clone the repository
git clone https://github.com/KappaDuck/quack.git
cd quack
  1. Install SDL and its extensions
Windows
dotnet ./SDL3/setup.cs
Linux
chmod +x ./SDL3/setup.cs
./SDL3/setup.cs

The setup script installs SDL and all required extensions. On linux, you only need to make it executable once.

Build & Run

Open the solution in your preferred IDE (e.g., Visual Studio, Rider, VS Code).

Most IDEs do not support running single-file scripts directly, so you'll need to run the playground file from the command line.

VS Code provides intellisense but cannot run the playground file directly.

Playground file (quack.playground.cs)

The playground allows you to experiment with windows, input, rendering, and more without modifying the main source code.

Create a file named quack.playground.cs at the root of the repository with the following content:

This file is ignored by git, so it's safe to use for your experiments.

#!/usr/bin/env dotnet

// Ignore the warning about missing copyright header in this file
#:property NoWarn=IDE0073
#:property TargetFramework=net10.0-windows
#:property IncludeNativeLibs=true
#:project src/KappaDuck.Quack

using KappaDuck.Quack.Events;
using KappaDuck.Quack.Graphics.Rendering;

using RenderWindow window = new("Quack! Playground", 1080, 720)
{
    Resizable = true
};

while (window.IsOpen)
{
    while (window.Poll(out Event e))
    {
        if (e.RequestQuit())
        {
            return;
        }
    }
}

Run the playground

Windows
dotnet ./quack.playground.cs
Linux
chmod +x ./quack.playground.cs # only needed once
./quack.playground.cs

Credits

Quack! draws inspiration from and leverages the following projects:

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NETPlatform dotnet is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.
  • net9.0

    • No dependencies.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.4.0-alpha.20260119031353 0 1/19/2026
0.4.0-alpha.20260119031309 0 1/19/2026
0.4.0-alpha.20260118213523 0 1/18/2026
0.4.0-alpha.20260110053638 0 1/10/2026
0.4.0-alpha.20260108220839 0 1/8/2026
0.4.0-alpha.20260101145151 0 1/1/2026
0.3.0 0 12/25/2025 0.3.0 is deprecated.
0.3.0-alpha.20260101142528 0 1/1/2026
0.3.0-alpha.20251228004849 0 12/28/2025
0.3.0-alpha.20251227221343 0 12/27/2025
0.3.0-alpha.20251225140345 0 12/25/2025
0.3.0-alpha.20251225134530 0 12/25/2025
0.3.0-alpha.20251225053402 0 12/25/2025
0.3.0-alpha.20251225051619 0 12/25/2025
0.2.0-alpha.20251125141309 0 11/25/2025
0.2.0-alpha.20251005231012 0 10/5/2025
0.2.0-alpha.20250909154912 0 9/9/2025
0.2.0-alpha.20250906214412 0 9/6/2025
0.2.0-alpha.20250904012852 0 9/4/2025
0.2.0-alpha.20250903232220 0 9/3/2025
0.2.0-alpha.20250901203943 0 9/1/2025
0.2.0-alpha.20250901190254 0 9/1/2025
0.2.0-alpha.20250901181019 0 9/1/2025
0.2.0-alpha.20250901022501 0 9/1/2025
0.2.0-alpha.20250831021702 0 8/31/2025
0.2.0-alpha.20250830185619 0 8/30/2025
0.2.0-alpha.20250830035220 0 8/30/2025
0.2.0-alpha.20250830033220 0 8/30/2025
0.2.0-alpha.20250828004826 0 8/28/2025
0.2.0-alpha.20250828000618 0 8/28/2025
0.2.0-alpha.20250825153126 0 8/25/2025
0.2.0-alpha.20250825132513 0 8/25/2025
0.2.0-alpha.20250825030502 0 8/25/2025
0.2.0-alpha.20250825024444 0 8/25/2025
0.2.0-alpha.20250825014144 0 8/25/2025
0.1.0-alpha.20250825010836 0 8/25/2025
0.1.0-alpha.20250825002600 0 8/25/2025
0.1.0-alpha.20250824225224 0 8/24/2025
0.1.0-alpha.20250824210721 0 8/24/2025
0.1.0-alpha.20250823194639 0 8/23/2025
0.1.0-alpha.20250823193805 0 8/23/2025
0.1.0-alpha.20250823192150 0 8/23/2025
0.1.0-alpha.20250823181501 0 8/23/2025
0.1.0-alpha.20250823181255 0 8/23/2025
0.1.0-alpha.20250812223648 0 8/12/2025
0.1.0-alpha.20250803160735 0 8/3/2025
0.1.0-alpha.20250803014101 0 8/3/2025
0.1.0-alpha.20250803013244 0 8/3/2025
0.1.0-alpha.20250803010855 0 8/3/2025
0.1.0-alpha.20250803003544 0 8/3/2025