Overview
GnollHack is a turn-based, traditional roguelike role-playing game derived from NetHack 3.6.2. It preserves the deep gameplay of the original while modernizing presentation for desktop and mobile platforms.
On the gameplay side, GnollHack expands the classic formula with:
- Reagent-based spell system with 12 spell schools
- Item quality tiers and mythic/legendary affixes
- Seven difficulty levels
- Multiple gameplay modes ranging from classic permadeath to non-permadeath progression
On the presentation side, it features:
- Graphical user interface
- Animated 2D tile graphics
- Original music
- Sound effects
- Full voice acting
All assets have been created by human artists, composers, and voice actors. The game contains no AI-generated assets.
| Area |
Highlights |
| Visuals & Animation |
Over 23,000 hand-drawn 64×96 base tiles (with monsters up to 192×192 pixels), animations, spells, rays, and explosions. |
| Audio & Voiceovers |
Over 1,100 sound effects powered by FMOD, 37 music tracks (14 original compositions), and 5,000+ lines recorded by 96 voice actors across 111 roles. |
| Expanded Mechanics |
200+ spells across 14 levels, playable Gnoll race, level 50 progression cap, weapon set hot-swapping, and full in-game item and monster information. |
| Online Features |
GnollHack Account (global leaderboards), cross-player bones file sharing, tournament integration, and the optional Gnoll Overseer AI game assistant. |
Architecture & Technology Stack
GnollHack connects the C code base from NetHack to a modern, multi-threaded C# / .NET MAUI frontend. The C game loop runs on its own background thread and communicates with the C# user interface through P/Invoke callbacks based on NetHack’s window interface.
| Layer |
Technology |
Role in GnollHack |
| Core Game Engine |
C99 |
Extended NetHack 3.6.2 game logic |
| Native Bridge |
C / C# P/Invoke |
Interop layer marshaling map layers, menus, and input events |
| Cross-Platform Client |
.NET MAUI (C# / XAML) |
Single app for Windows (WinUI 3), Android, and iOS / macOS (Apple Silicon) |
| 2D Graphics Engine |
SkiaSharp (Skia) |
GPU rendering of the multi-layer tile map and parts of the user interface |
| Audio Middleware |
FMOD Studio |
Sound effects, music, and voice playback |
| Data Compilation Pipeline |
makedefs, levcomp, dgncomp, dlb |
Build-time C tools that generate headers, compile .des level scripts into binary .lev files, and pack the nhdat archive |
Repository Layout
GnollHack/
├── dat/ # Game data sources, text databases, and level descriptions (.des)
├── DEVEL/ # Coding style guidelines (code_style.txt) and performance benchmarks
├── doc/ # Classic manual pages and guidebook sources
├── include/ # C core engine header files (.h)
├── src/ # C core engine source files (.c)
├── sys/ # Platform-specific bootstrap and system integration code
├── util/ # Build-time compilers and generators (makedefs, levcomp, dgncomp, dlb)
└── win/win32/ # Solutions, native wrappers, and cross-platform frontend code
├── vs/ # GnollHack.sln — C engine, build utilities, and native platform libraries
└── xpl/ # Cross-platform client
├── GnollHackM/ # GnollHackM.sln — .NET 10 MAUI client (Android, iOS, Windows WinUI 3)
├── GnollHackX/ # Shared C# game client logic, SkiaSharp renderer, and XAML sources
├── gnollhackwin/ # Native Windows C library project (gnollhackwin.dll)
├── gnollhackdroid/ # Native Android C library project (libgnollhackdroid.so via WSL)
├── gnollhackios/ # Native iOS C library project (libgnollhackios.a via macOS build host)
└── libshare/ # C native bridge connecting the C core to the C# frontend
Building from Source
GnollHack uses a two-solution build pipeline in Visual Studio 2026:
- Native & Asset Pipeline (
win/win32/vs/GnollHack.sln) — Compiles the build utilities (makedefs, levcomp, dgncomp, dlb), processes game data into the nhdat archive, compiles the native C engine libraries (gnollhackwin.dll, libgnollhackdroid.so, libgnollhackios.a), transforms shared XAML views into .NET MAUI format, and stages external tile sheets and FMOD sound banks.
- Managed Client (
win/win32/xpl/GnollHackM/GnollHackM.sln) — Compiles and packages the .NET MAUI frontend together with the staged native libraries and assets from Step 1.
Because tile sheets (GnollHackTileSet) and FMOD sound banks (GnollHackSoundSet) are maintained in dedicated asset repositories, read the build overview before building for the first time:
License & Credits
GnollHack is developed and maintained by Sound Mind Games (Hyvän mielen pelit ry), a Finnish nonprofit organization working in the fields of gaming and mental health.
评论