KappaDuck.Quack 0.3.0-alpha.20251225053402

This is a prerelease version of KappaDuck.Quack.
There is a newer version of this package available.
See the version list below for details.
dotnet add package KappaDuck.Quack --version 0.3.0-alpha.20251225053402
                    
NuGet\Install-Package KappaDuck.Quack -Version 0.3.0-alpha.20251225053402
                    
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.3.0-alpha.20251225053402" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="KappaDuck.Quack" Version="0.3.0-alpha.20251225053402" />
                    
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.3.0-alpha.20251225053402
                    
#r "nuget: KappaDuck.Quack, 0.3.0-alpha.20251225053402"
                    
#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.3.0-alpha.20251225053402
                    
#: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.3.0-alpha.20251225053402&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=KappaDuck.Quack&version=0.3.0-alpha.20251225053402&prerelease
                    
Install as a Cake Tool

Quack! 🦆 NuGet Version

Quack! is a fast, lightweight, and user-friendly 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 applications. It provides a clean, flexible and intuitive API that simplifies game development by hiding low-level complexities. It offers a range of features such as rendering (SDL_renderer and SDL_gpu), input handling, audio playback, resource management, window management, and more.

Quack & SDL compatibility

Below is a list of Quack! versions and their compatible SDL versions:

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

Support for SDL_mixer is planned for future releases. It needs SDL3 3.4.0 which is not yet released.

The current Quack! development can update the SDL dependencies many times before the release.

Cross-platform support

Quack! currently supports Windows, with Linux support planned for future releases.

The API is designed to be cross-platform, so porting to other platforms should be straightforward.

Other platforms may be considered in the future, but there are no current plans for them.

Installation

Quack! is available as a NuGet package. You can install it using the following command:

dotnet add package KappaDuck.Quack -v 0.2.0

or by adding the following line to your .csproj file:

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

or by using the NuGet Package Manager in Visual Studio or JetBrains Rider.

Usage

A simple example of how to use Quack! to create a window:

using KappaDuck.Quack.Events;
using KappaDuck.Quack.Windows;

using Window window = new("Minimal window", 800, 600)
{
    Resizable = true
};

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

You can find more examples in the Examples directory.

Development

To build Quack! from source, you will need the following tools installed:

Prerequisites

The SDK includes everything you need to build and run .NET applications on your machine.

Docker is used to create SDL binaries for different platforms in a consistent environment.

Setup

After installing the prerequisites, you can set up the project by following these steps:

Clone the repository

git clone https://github.com/KappaDuck/quack.git

Navigate to the project directory

cd quack

Install SDL and its extensions using the provided script

Make sure you have .NET 10.0 SDK and Docker installed, to do dotnet run app.cs.

# On Windows:
dotnet ./SDL3/build.cs

# On Linux:
chmod +x ./SDL3/build.cs # Make the script executable. No need to do this every time.
./SDL3/build.cs

Open the solution file in your preferred IDE (e.g., Visual Studio, Rider, etc.):

Any IDE doesn't support single-file execution, so you will need to run as CLI.

Visual Code have intellisense support for single-file but can't run it directly.

To test any features, you can run the examples provided in the Examples directory or create a file named quack.playground.cs at the root and run it directly.

The quack.playground.cs file is ignored by git, so you can use it to test your code without affecting the repository.

You can use the following code snippet as a starting point for your quack.playground.cs file:

#!/usr/bin/env dotnet

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

using KappaDuck.Quack.Events;
using KappaDuck.Quack.Windows;

using Window window = new("Quack! Playground", 800, 600)
{
    Resizable = true
};

while (window.IsOpen)
{
    while (window.Poll(out Event e))
    {
        if (e.RequestQuit())
        {
            window.Close();
            return;
        }
    }
}
# On Windows:
dotnet ./quack.playground.cs

# On Linux:
chmod +x ./quack.playground.cs # Make the script executable. No need to do this every time.
./quack.playground.cs

Credits

Quack! leverages and draws inspiration from 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. 
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