/libdogma

An ad hoc fitting engine for the EVE Online multiplayer game.

Primary LanguageCGNU Affero General Public License v3.0AGPL-3.0

libdogma

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.

Features

  • 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.

Credits

libdogma is released under the GNU Affero General Public License, version 3 (or later). You can see the full license text in the COPYING file.

For the full list of libdogma contributors, see the CREDITS file.

libdogma uses Judy, a library released under the GNU Lesser General Public License, version 2.1 (or later). http://judy.sourceforge.net/

Contact

Compiling libdogma

Dependencies

  • A C11 compiler or, at least, a C99 compiler that supports anonymous unions and _Static_assert (clang >= 3.1 is good);

  • Judy arrays;

  • 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).

Compiling recipe

If you are compiling from a tarball, you can directly jump to the ./configure step.

  1. Generate the static data from the JSON dump:

    ./tools/bootstrap_from_json <path_to_JSON_dump>
    
  2. If you are bulding from git, generate the configure script:

    ./bootstrap
    
  3. Generate the Makefile (you can omit the debug flags or the CC= if you want to use gcc):

    CC=clang ./configure --enable-debug
    
  4. Compile the library:

    make
    
  5. Optionally, run the test suite:

    make check
    
  6. Optionally, install the package:

    make install
    

Examples

See the source files in test/ for examples.

Release checklist

  • Update version in configure.ac

  • Update exported symbols in src/libdogma.sym

  • Update version-info in Makefile.am (doc)

  • make distclean && ./bootstrap && ./configure && make check

  • Update CHANGELOG

  • Commit, tag, push

  • make dist