KappaDuck.Quack
0.1.0-alpha.20250812223648
dotnet add package KappaDuck.Quack --version 0.1.0-alpha.20250812223648
NuGet\Install-Package KappaDuck.Quack -Version 0.1.0-alpha.20250812223648
<PackageReference Include="KappaDuck.Quack" Version="0.1.0-alpha.20250812223648" />
<PackageVersion Include="KappaDuck.Quack" Version="0.1.0-alpha.20250812223648" />
<PackageReference Include="KappaDuck.Quack" />
paket add KappaDuck.Quack --version 0.1.0-alpha.20250812223648
#r "nuget: KappaDuck.Quack, 0.1.0-alpha.20250812223648"
#:package KappaDuck.Quack@0.1.0-alpha.20250812223648
#addin nuget:?package=KappaDuck.Quack&version=0.1.0-alpha.20250812223648&prerelease
#tool nuget:?package=KappaDuck.Quack&version=0.1.0-alpha.20250812223648&prerelease
Quack! 🦆
Quack! is a fast, lightweight and user-friendly game engine built on SDL and its extensions (SDL_image, SDL_mixer, SDL_ttf). Designed for modern .NET 9+ applications, it provides a clean, flexible and intuitive API that simplifies game development by hiding low-level complexities. It uses SDL for 2D (Renderer) and 3D (GPU) rendering, window management, input handling and audio.
Quack & SDL compatibility
Below is a list of Quack! versions and their corresponding SDL versions:
Quack! version | SDL version | SDL_image version | SDL_mixer version | SDL_ttf version |
---|---|---|---|---|
>= 0.1.0 |
3.2.18 |
unsupported |
unsupported |
unsupported |
Support for SDL_image, SDL_mixer and SDL_ttf is planned for future releases. Stay tuned!
Cross-platform support
Quack! currently supports Windows, with Linux support pllaned for future releases.
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.1.0
or by adding the following line to your .csproj
file:
<PackageReference Include="KappaDuck.Quack" Version="0.1.0" />
or by using the Visual Studio NuGet Package Manager.
Usage
A simple example of how to use Quack! to create a window:
using KappaDuck.Quack;
using KappaDuck.Quack.Core;
using KappaDuck.Quack.Events;
using KappaDuck.Quack.Windows;
using QuackEngine _ = QuackEngine.Init(Subsystem.Video);
using Window window = new("Minimal window", 800, 600, WindowState.Resizable);
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.
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 installed, to do dotnet run app.cs.
# On Windows:
dotnet ./src/install.sdl.cs
# On Linux:
chmod +x ./src/install.sdl.cs
./src/install.sdl.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
in thesrc
directory 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;
using KappaDuck.Quack.Core;
using KappaDuck.Quack.Events;
using KappaDuck.Quack.Windows;
using QuackEngine _ = QuackEngine.Init(Subsystem.Video);
using Window window = new("Quack! Playground", 800, 600, WindowState.Resizable);
while (window.IsOpen)
{
while (window.Poll(out Event e))
{
if (e.RequestQuit())
{
window.Close();
return;
}
}
}
# On Windows:
dotnet ./src/quack.playground.cs
# On Linux:
chmod +x ./src/quack.playground.cs
./src/quack.playground.cs
Credits
Quack! leverages and draws inspiration from the following projects:
Product | Versions 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. |
-
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.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 |