libdogma is an ad hoc fitting engine for the EVE Online multiplayer game.
Reverse-engineered to be a bottom-up implementation of the real dogma engine (probably), with slight alterations to make it suitable for use in fitting simulation tools.
See the Github releases for ready-to-build tarballs.
Excellent accuracy (thanks to using the same expressions as the EVE client)
Fast and low memory footprint (thanks to Judy arrays)
Stable, heavily tested code base
Customizable skill levels
Customizable chance-based effects (booster side effects)
Computes attributes of characters, skills, implants, ships, drones, modules and charges
Supports projected effects (with fine-grained per module target selection)
Supports fleet/gang bonuses
Supports effect beacons (wormhole feature effects, etc.)
Missing features / Known issues
- Leadership skills are not checked when applying gang bonuses. You could have a squad with 50 people in it, or a fleet with 15 wings of 42 squads each, bonuses will be applied anyway. (Same goes if you have a character with no skills as fleet commander.) Whether this is a bug or a feature, you decide.
libdogma is released under the GNU Affero General Public License,
version 3 (or later). You can see the full license text in the
For the full list of libdogma contributors, see the
libdogma uses Judy, a library released under the GNU Lesser General Public License, version 2.1 (or later). http://judy.sourceforge.net/
A C11 compiler or, at least, a C99 compiler that supports anonymous unions and
clang >= 3.1is good);
A JSON cache dump of the game client (only if you are building from git, you can get one with Phobos);
The GNU Autotools suite (only if you are building from git).
If you are compiling from a tarball, you can directly jump to the
Generate the static data from the JSON dump:
If you are bulding from git, generate the
Makefile(you can omit the debug flags or the
CC=if you want to use
CC=clang ./configure --enable-debug
Compile the library:
Optionally, run the test suite:
Optionally, install the package:
See the source files in
test/ for examples.
Update version in
Update exported symbols in
make distclean && ./bootstrap && ./configure && make check
Commit, tag, push