With LightCombatManager (or just LCM), characters with initiative values, a health point counter and additional information (including ruleset-defined status effects) can be easily created.
After character generation, LCM creates a full combat table, which can be used to easily manage the combat. LCM supports operations such as dragging and dropping rows, undoing changes or the deletion and subsequent addition of characters.
If the game ends, but the current combat is not finished yet, the combat table can be saved and reopened later to continue the combat. Characters can also be stored as templates for later usage.
LCM currently supports the following rulesets:
- D&D 3.0E
- D&D 3.5E
- D&D 5E
- Pathfinder 1E
- Pathfinder 2E
- Starfinder
Support for more d20-based rulesets might be added in the future.
LCM is written in C++17. The following tools are used for development:
- Qt6 or Qt5 for the user interface and the storing and loading of tables.
- If no Qt6 installation is found on the system, the application searches for a Qt5 installation instead.
- Note that for the correct displaying of svg files, the Qt SVG plugin is needed.
- Catch2 v3 for Unit testing (Catch2 license)
- Uncrustify for code formatting.
- CMake as build system.
For most Linux distributions, all these libraries can be installed using their respective official package manager. For example, this command installs all dependencies for Ubuntu 22.04:
sudo apt install qtbase5-dev libqt5svg5 libqt5svg5-dev qt6-base-dev libqt6svg6 libqt6svg6-dev catch2 uncrustify cmake
For Arch Linux and derivates:
sudo pacman -S qt5-base qt5-svg qt6-base qt6-svg catch2 uncrustify cmake
For Windows, installers for Qt, CMake and Catch2 are available. Make sure to install the Qt SVG plugin as well!
Alternatively, if you want to run the application without any additional installing, just download the binaries provided with the latest release.
- Download or clone this repository.
- Open a terminal and
cd
into this repository. - Create a build folder:
mkdir build
. Navigate into this folder viacd build
. - Hit
cmake ..
and thenmake
. Start the application with./src/LightCombatManager
.
The following description is focused on building the application with cmake
, MSVC 2019 and Visual Studio 2022.
- Download or clone this repository.
- Open up
cmd
orgit cmd
and navigate to this repository. - Create a build folder:
mkdir build
. Navigate into this folder viacd build
. - Set the CMake Prefix Path for Qt inside the
CMakeLists.txt
. Example:set(CMAKE_PREFIX_PATH "C:\\Qt\\5.15.2\\msvc2019_64\\")
for Qt 5.15 and msvc compiler. - Hit
cmake.exe -G “Visual Studio 17 2022” -A x64 ..
This will create an sln-file. - Open the sln file using Visual Studio. Build the application in Debug- or Release-Mode.
- Inside the build-file, a file named
Debug
orRelease
should have been created. Navigate to this folder and then to thesrc
subdirectory. - The exe-file for the application should be found here. To successfully run the exe, make sure that the directory contains the corresponding qt dll files as well. The final built application dir for Qt6 should look as follows:
├── platforms
| ├── qwindows.dll
├── imageformats
| ├── qsvg.dll
├── LightCombatManager.exe
├── Qt6Core.dll
├── Qt6Gui.dll
├── Qt6Svg.dll
├── Qt6Widgets.dll
The dll files can be found under the Qt installation path under /bin
and /plugins
.
Until Version 2.1.0, LCM used the MIT license. Since Version 2.2.0, LCM uses GPL-3.0.
LCM constantly gets more features and improvements. If there is a ruleset you wish to be supported or another feature you want to be included, feel free to open a new issue for discussion!
If you want to contribute code, please format it using the provided uncrustify.cfg
before opening a pull request. On Linux for example, you can format the entire repository's code with one single line:
find . \( -name "*.cpp" -o -name "*.hpp" \) -exec uncrustify -c uncrustify.cfg --replace --no-backup {} +
The repository always contains branches for the current and last major release. As dev_staging
is the branch constantly being developed on, make sure to select it as target branch in case you want to open a new Pull Request. In addition, the branches for the last corresponding major release and its minor updates are also stored for better bug traceability.