yesdavid / Arena

Models combat in a classic fantasy TTRPG (e.g., Original D&D).

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ARENA - Java Package for Simulating Original D&D Combat

This code package provides routines for simulating combat in a fantasy Tabletop Role-Playing Game (TTRPG) similar to Original D&D or closely-related games. Combat is done as per "theater of the mind" without tracking exact spatial locations; targets of attacks are chosen by random method (as per 1E AD&D DMG). In most cases, the intent here is to output aggregate statistics based on many trials of the game between men and monsters. This package provides only command-line, text output; there are no graphics or visualizations, and generally few options for output regarding individual combats.

For more usage information and full JavaDoc pages, visit:

The package currently includes five top-level main applications:


ATHENA -- A master program that can initiate any of the applications below. Used as the main application in the combined JAR distribution.

ARENA -- Simulates a population of fighters, battling for experience and treasure over some amount of time (broadly inspired by Roman arena-style events). Combat can be man vs. man or man vs. monster, including simulated excursions against dungeon random encounters; individual combats can be one-on-one or in groups. Statistics at the end show level-based demographics of the overall surviving population, percent of experience from treasure, and number and ratio of deaths caused by each type of monster in the database.

MONSTER METRICS -- Performs a binary search at each fighter level 1-12 to determine how many fighters represent a matched challenge against each monster in the database (i.e., closest to a 50/50 victory chance); then takes a harmonic mean across all levels to suggest an Equivalent Hit Dice (EHD) value, to be used for balancing, encounter-matrix, and experience purposes. More detail available (per-level values and charts) with command-line switches.

MARSHAL -- Creates random bands of men as encountered in the wilderness (e.g., bandits, brigands, buccaneers, nomads, etc., in numbers 30-300), with leaders of generally appropriate levels. The leaders are generated by simulating their entire combat history in the Arena.

NPC GENERATOR -- A minimalist command-line UI to generate characters of any type as per OED rules. The characters, including fighters, wizards, thieves, multiclass elves, etc., are generated by a simulated heuristic, not via the Arena above (i.e., different from the Marshal process). Includes names, memorized spells, basic magic items, OED feats, and suggested personalities keyed off alignment. (Uses the Apache PDF Box library.)


GPJ project files for use with jGRASP are included for each of the applications above. It's easiest to simply use Athena.gpj to build the master program and all the child applications. Check with the Windows batch file TestAthenaJar.bat to confirm everything's running properly.

Many of the most common attack spells and monster abilities have been implemented. The MonsterMetrics tool assumes by default that parties of fighters have a 1/4 incidence of wizards with them of the same level (this is adjustable via the command-line switch -z). Our combat idiom assumes that there is one initial round allowing ranged special abilities and area attacks and spells, followed by a general melee (following principles in 1E AD&D DMG p. 63 and 70).

To the extent that the original rules are ambiguous or in need of DM adjudication (as in many cases), the author has attempted to research and interpret the rules such as possible, and uses interpretations as expressed in the Original Edition Delta (OED) House Rules set. In some cases, software switches allow toggling between different modes. See www.oedgames.com for more information.

When changes to the code are made, regression testing can be done by running java MonsterMetrics -r. This tests the current EHD of all the monsters in the database and displays any that should have revised values. Generally no monsters should have revised EHD values unless gameplay rules are being intentionally changed. (A few false positives are expected due to sampling error; retest to confirm an observed change.)

About

Models combat in a classic fantasy TTRPG (e.g., Original D&D).

License:GNU General Public License v2.0


Languages

Language:Java 99.9%Language:Batchfile 0.1%