All Classes Files Functions Variables Enumerations Enumerator Macros Pages
Worldstone Documentation

![Travis build Status]( ![Appveyor build status]( ![Coverage]( ![Language grade: C/C++](

![Pull requests]( ![Opened issues]( ![Gitter chat]( ![Documentation](

Diablo 2 tools and engine reimplementation in C++.

It aims to be portable/cross-platform.

Status of the project

DC6 and DCC (sprites) decoders and renderer are now working. PL2 file (palette shifts) generation is working and gives the same results as if created by the game. Optional fixes are available for more accurate palette shifts.

The viewer app can be used to browse Mpq files and display the following:

  • .dc6 sprites
  • .dcc sprites
  • .dat and .pl2 palettes and palshifts
  • .cof animation files information (no sprite display yet)

Work is progressing slowly. While not reflected in the repo, a lot of documentation has been gathered for future work !



  • CMake 3.6 or higher
  • A C++14 compiler
    • GCC 6.0 - tested (5.0 should work)
    • clang 3.8 with libc++ or libstdc++-5(only 6 is tested) - tested
    • MSVC 14 (Visual 2015) - tested
  • Bzip2 for Stormlib(libbz2-dev on debian/ubuntu)

Copy-paste from command line (in the project directory):

git submodule update --init --recursive
mkdir build && cd build
cmake ..
cmake --build .


You can tweak the configuration using the following CMake variables (I suggest using ccmake or cmake-gui)

  • ENABLE_LTO: Use link time optimization on non debug builds if available
  • ENABLE_WARNINGS_SETTINGS: Set to false to remove warning flags added by the project
  • BUILD_TESTING: Disable all testing features
  • WS_BUILD_TESTS: Disable Worldstone tests
  • WS_USE_DOXYGEN: Should we (try to) add a doc target
  • WS_WITH_BGFX: Build targets that require bgfx (Anything doing rendering)

On Windows

  • Required shared libraries should automatically be copied to the executable directory by CMake.

Short-term objectives

  • COF viewer
  • DT1 viewer

For a more detailed list of what will need to do to have an engine, check the TODO list. There is also a contributing guide available.