This document outlines the organization of the GnollHack repository, including its build solutions, component projects, and directory layout.
📢 Important: The Visual Studio 2026 IDE is used for compiling all versions of GnollHack on Windows.
Solutions
| Solution | Path | Description |
|---|---|---|
| GnollHack.sln | win\win32\vs\GnollHack.sln |
Main C core solution, containing build utilities, compilers, ASCII/GUI Windows frontends, and Xamarin platform projects. |
| GnollHackM.sln | win\win32\xpl\GnollHackM\GnollHackM.sln |
Modern .NET MAUI solution targeting Android, iOS, and Windows (WinUI 3). |
GnollHack.sln Projects
| Project | Target / Platform | Description |
|---|---|---|
| dgncomp | Windows | Dungeon compiler for compiling custom dungeon layouts on Windows. |
| dgncompdroid | Android / iOS | Dungeon compiler for mobile platforms (compiled via Linux C compiler). |
| dlb | Windows | Data librarian / archiver. Packages level descriptions and game data into the read-only nhdat archive. |
| dlbdroid | Android / iOS | Data librarian for mobile platforms (compiled via Linux C compiler). |
| GnollHack | Windows (Console) | The classic ASCII version of GnollHack running as a Win32 console application. |
| gnollhackdroid | Android C Library | The C game engine core compiled into a native Android library (.so). |
| gnollhackios | iOS C Library | The C game engine core compiled into a native iOS static library (.a). |
| gnollhackwin | Windows C Library | The C game engine core compiled into a dynamic library (.dll) for the .NET MAUI Windows port. |
| GnollHackW | Windows (GUI) | Graphical Win32 version of GnollHack using native ComCtl32 controls. |
| GnollHackX | Shared C# | Legacy Xamarin.Forms common library containing shared frontend logic. |
| GnollHackX.Android | Android (Xamarin) | Main project for the legacy Xamarin.Android frontend. |
| GnollHackX.Android.Bindings | Android (Xamarin) | C# bindings project wrapping FMOD native audio library for Android. |
| GnollHackX.iOS | iOS (Xamarin) | Main project for the legacy Xamarin.iOS frontend. |
| levcomp | Windows | Special level description compiler. |
| levcompdroid | Android / iOS | Special level description compiler for mobile platforms (compiled via Linux C compiler). |
| makedefs | Windows | Miscellaneous build-time code generator and database builder. |
| makedefsdroid | Android / iOS | Miscellaneous build-time generator for mobile platforms (compiled via Linux C compiler). |
| nh340key / nhdefkey / nhraykey | Windows | Keyboard input handlers for curses interface. |
| PDCurses | Windows Console | Public domain curses library used for console rendering on Windows. |
| recover | Windows | Game crash recovery utility. |
| SourceFileTimeStamper | C# Console | Utility tool for updating source file timestamps. |
GnollHackM.sln (.NET MAUI) Projects
| Project | Target / Platform | Description |
|---|---|---|
| GnollHackM | .NET 10.0 MAUI | Core cross-platform app project targeting Android, iOS, and Windows (WinUI 3). |
| gnollhackwin | Windows C Library | Native C game engine core library (.dll) used by the Windows WinUI 3 build. |
Directory Layout
GnollHack/ (Root)
├── bin/ # Compiled binaries and build output for Windows.
├── binary/ # Configuration folder (NOT the build output folder).
├── dat/ # Game data files, dungeon compile targets (.des files).
├── DEVEL/ # Development documentation and coding style guides.
├── doc/ # Manual pages and user guides.
├── include/ # C core engine header files (.h).
├── src/ # C core engine source files (.c, .cpp).
├── sys/ # Operating system-specific bootstrap files.
├── tools/ # Output directories for helper tools on Windows.
├── util/ # Source code for build utilities (makedefs, levcomp, etc.).
└── win/ # Frontend and UI implementation source files.
└── win32/ # Windows-specific files, FMOD libraries, and solutions.
├── bank/ # FMOD sound banks (not tracked in Git repository).
├── fmod/ # FMOD library wrappers and headers for Windows.
├── vs/ # Visual Studio 2026 files (contains GnollHack.sln).
└── xpl/ # Cross-platform frontend implementations.
├── GnollHackM/ # .NET MAUI solution & project folders.
├── GnollHackX/ # Legacy Xamarin solution & project folders.
├── gnollhackdroid/ # C core wrapper project for Android.
├── gnollhackios/ # C core wrapper project for iOS.
├── gnollhackwin/ # C core wrapper project for WinUI 3.
└── libshare/ # C native bridge code connecting C engine and C# frontend.
🛑 Caution: The
binary/directory is not the build output directory. Build outputs are generated under thebin/$(Configuration)/$(Platform)/folder.