/opendrakan

A work-in-progress recreation of Surreal Software's Riot Engine

Primary LanguageC++GNU General Public License v3.0GPL-3.0

OpenDrakan

Build Status

Update 2022/01/05: I realize that there hasn't been an update on this project for quite some time. This is mostly on me, with the world going crazy due to COVID, stuff in my life going wrong and my new job taking a toll on my time and motivation. That being said, this project is not dead. Most recently I started a full rewrite in Rust. I'm not sure if that'll lead me somewhere, but for now it keeps me coming back to OpenDrakan, and that's worth something, I guess.

A project to reverse-engineer and recreate Surreal Software's Riot Engine with the ultimate goal to be able to run the game Drakan: Order of the Flame on a modern GNU/Linux system.

This project is still in an early stage. Most things are still work-in-progress and the current state of the engine differs from the original game in a significant way. That means that you can't use this replacement to play the game yet. Until that is the case, I'd recommend to check out the AiO patch or Community Patch, found among other downloads on Arokh's Lair. They fix some of the issues with the original engine that might otherwise prevent you from playing on Wine.

Contributions to the project are very welcome! Since I am mostly coding alone on OpenDrakan right now, I don't really have a collaborative workflow set up yet. But should more people be interested in contributing, I'd gladly change that. Feel free to open or comment on a ticket for anything you want to work on.

For discussions regarding OpenDrakan or contacting me, the safest option is the Arokh's Lair forum thread for this project, found here.

My documentation on the Riot Engine's SRSC file format can be found here. Additional documentation can be found in the OpenDrakan wiki.

Copyright notice

Everything in this project was created specifically for OpenDrakan or was taken from other open-source projects in accordance with their respective license. This project does not and will never distribute any copyrighted material by Surreal Software or Warner Bros. Interactive Entertainment (who aquired Surreal Software in 2009). OpenDrakan will not enable you to play Drakan without owning a legal copy!

All information on the Riot Engine has been aquired through reverse engineering or by other, non-copyright-infringing means.

Compiling

The engine base requires zlib, GLM and Bullet Physics, as well as CMake to generate the Makefiles.

For the OSG renderer (the only one available at the moment) you will additionally need OpenSceneGraph and an OpenAL implementation like OpenAL Soft, along with their respective dependencies.

On Linux, all of these dependencies should be provided by your distro, so simply installing the appropriate packages should suffice to be able to compile OpenDrakan. This was tested successfully on Debian and Arch Linux.

Once you have all dependencies, fire up a terminal in the project root and do your usual CMake building routine:

$ mkdir build && cd build
$ cmake ..
$ make

Running

This is only useful for developers at the moment. You can't use OpenDrakan to play the game yet!

Run the odOsg executable in the root directory of the game (same directory that contains the Drakan.exe) to load the intro level. To load a specific level, run OpenDrakan with the path to the *.lvl file as an argument.

Depending on the current state of the project, your results may vary. Since not all levels have been tried, some may yet crash the engine. Most testing has been done on the "Ruined Village" level, so that's the one you probably want to use when testing your contributions.

OpenDrakan comes with the srsced tool, which can extract raw data from Drakan's SRSC files to aid in reverse-engineering. You can get an overview of it's functions using the -h option. While this utility is limited to inspection and extraction at the moment, editing functions will be added later.

License

OpenDrakan is released under GPL 3.0 (see LICENSE for full license text).