A smoother native port of Dungeon Rampage for Windows, Linux, and macOS, with a configurable frame rate and modding support.
## Install and play The recommended way to play DRH is [DRH Launcher](https://github.com/Tutez64/DRH-Launcher), which handles DRH installation, updates, and launch for you. DRH Launcher also provides additional features such as mods, launch option presets, custom launch arguments, session history with logs and playtime, release history, and more. See the [DRH Launcher README](https://github.com/Tutez64/DRH-Launcher#readme) for downloads and installation instructions. You need to own the official [Dungeon Rampage](https://store.steampowered.com/app/3053950/Dungeon_Rampage/) on Steam and keep Steam open while playing. Otherwise, DRH cannot connect to the official servers. ## Why use DRH? The official game can run poorly and suffer from input delay issues. DRH supports a configurable frame rate, with 120 FPS as its built-in default, instead of the official game's fixed 24 FPS. It usually provides much better performance, especially in **Quality** mode, and avoids the input delay issue. Like the official game, restarting before each new party is recommended because performance can degrade over time. ## Mods DRH runs mods. Install them from the **Mods** page of [DRH Launcher](https://github.com/Tutez64/DRH-Launcher): it lists the mods of the [DRH Mods Index](https://github.com/Tutez64/DRH-Mods-Index), each reviewed before it is listed, installs what they need, and keeps them updated. To make one, start with [Making a mod](docs/making-a-mod.md); share ideas and ask questions on the [Discord server](https://discord.gg/VvWbNspZrQ). The design is in [docs/modding.md](docs/modding.md). ## Community Join the [Discord server](https://discord.gg/VvWbNspZrQ) to discuss DRH and DRH Launcher, get update notifications, and see occasional previews. ## Technical overview DRH is a port of Dungeon Rampage from AS3/AIR (see [Dungeon Rampage Decompiled](https://github.com/Tutez64/Dungeon-Rampage-Decompiled)) to Haxe. It uses [OpenFL](https://www.openfl.org/), a graphical library that reimplements Flash/AIR APIs with native targets and modern tooling. This project required months of work, most of it in the following open-source projects: - [JPEXS](https://github.com/Tutez64/jpexs-decompiler/tree/dev), the decompiler (see [Dungeon Rampage Decompiled](https://github.com/Tutez64/Dungeon-Rampage-Decompiled)). - [ax4](https://github.com/Tutez64/ax4), my AS3 to Haxe converter based on ax3. - [OpenFL](https://github.com/Tutez64/openfl), [SWF](https://github.com/Tutez64/swf), [Lime](https://github.com/Tutez64/lime), and [libhxcpp](https://github.com/Tutez64/libhxcpp), which continues hxcpp. - [SteamWrap](https://github.com/Tutez64/SteamWrap), used to replace the Steam ANE. - [hxScript](https://github.com/Tutez64/hxscript), the in-process Haxe/cppia runtime for mods. ## Build from source The project depends on forked versions of OpenFL, Lime, SWF, libhxcpp, SteamWrap, and hxScript, which are included as Git submodules. ### Requirements - [Haxe](https://haxe.org/) - A C++ toolchain supported by hxcpp - Windows: install the [Build Tools for Visual Studio](https://visualstudio.microsoft.com/downloads) (tick `Desktop development with C++`) Install the regular haxelib dependencies: ```bash haxelib install format haxelib install hxp ``` ### Clone the repository ```bash git clone --recurse-submodules https://github.com/Tutez64/Dungeon-Rampage-Haxe cd Dungeon-Rampage-Haxe ``` If you cloned without `--recurse-submodules`, initialize the submodules afterwards: ```bash git submodule update --init --recursive ``` ### Register the submodules with haxelib The build resolves these libraries through haxelib. `haxelib dev` is required, and it is global: two checkouts share one link. Run the commands from the repository root: ```bash haxelib dev lime submodules/lime haxelib dev openfl submodules/openfl haxelib dev swf submodules/swf haxelib dev steamwrap submodules/SteamWrap haxelib dev libhxcpp submodules/libhxcpp haxelib dev hxcpp submodules/libhxcpp haxelib dev hxscript submodules/hxscript ``` libhxcpp is registered under its own name and as `hxcpp`, as its setup does. ### Rebuild helper tools ```bash haxelib run lime rebuild hxcpp haxelib run lime rebuild cpp -debug haxelib run lime rebuild tools haxelib run lime rebuild swf ``` SteamWrap: ```bash cd submodules/SteamWrap ./setup.sh # .bat on Windows ./build # .bat on Windows cd ../.. ``` ### Build the game Lime reads `generated_swf_libraries.xml` when it parses `project.xml`, so regenerate it before a `cpp` build (it lists `Resources/**/*.swf` plus the preload/generate rules in `edits/swf_libraries/`). The first native (`cpp`) build exports SWF fonts with [JPEXS FFDec](https://github.com/Tutez64/jpexs-decompiler/tree/dev) (Java 8+). Set `FFDEC_HOME`, put `ffdec` on `PATH`, or keep `jpexs-decompiler` next to this repo. Later builds reuse `bin/obj/ffdec_fonts/`. From the repository root: ```bash haxe edits/swf_libraries/generate.hxml haxelib run openfl build project.xml cpp ``` For a debug build, append `-debug`. Replace `build` with `test` if you want the game to launch automatically after compiling. Native builds accept `--fps auto` or `--fps