👉 How GnollHack is built inside, and why: the architecture of the modern clients, and the pages that explain each part's design and the decisions behind it.

🏗️ Architecture

Every modern client is the same .NET MAUI app on top of the same game engine. From the bottom up:

Layer What It Is Where in the GnollHack Repository
Game engine The C core, forked from NetHack 3.6.2 src\ and include\, built per platform as gnollhackwin.dll, libgnollhackdroid.so, libgnollhackios.a, libgnollhacklinux.so and libgnollhackmac.dylib
Native bridge The C functions that the C# code calls win\win32\xpl\libshare\
Shared game pages and logic The C# and XAML that every modern client shares win\win32\xpl\GnollHackX\GnollHackX\
App The .NET MAUI app, GnollHackM win\win32\xpl\GnollHackM\
UI backend WinUI 3, Android, iOS, or Avalonia.Controls.Maui for Linux and macOS Platforms\Windows\, Platforms\Android\, Platforms\iOS\ and Platforms\Avalonia\ in GnollHackM
Drawing and sound SkiaSharp and FMOD  

The native solution GnollHack.sln and the app solution GnollHackM.sln are built one after the other, and the shared XAML files are edited in GnollHackX and converted for GnollHackM by the native build. Both follow from the time when the Xamarin.Forms and .NET MAUI clients shared their code; Overview of Building GnollHack with .NET MAUI and Instructions for Developing GnollHackM Project (.NET MAUI) explain what that means for a developer today.

🧱 Code Base

🖥️ Avalonia Port

The Avalonia port runs the modern client on Avalonia UI, which brings it to Linux, the Steam Deck and macOS.

🪟 WinUI 3 Version

🧩 Cross-Platform Systems

📜 History

🐺 Gnoll Overseer

📖 Learn More

🔗 External Links