Encounter Generator

From KJD-IMC Wiki

Jump to: navigation, search


In a recent thread in rec.games.frp.dnd, there was a discussion of how useful a collection of fully-realized monsters would be. The requirements seem fairly straightforward

  • all creature information is determined, including
    • skill point allocations
    • treasure (and the treasure should be used by the creature if appropriate)
    • spell lists
  • outline of tactics provided
  • full encounter (including battlefield map) not required (it may be ignored) but may be nice to have

A repository -- especially a searchable one -- of these things could be quite useful. I've been consider how such a beastie could be implemented. Right now I'm leaning toward a database to contain the various monsters, creatures (there's a difference, see below), templates, and encounter definitions.

I want to separate monster and encounter definitions. This will make it easier to reuse a monster in several encounters.

Expected Implementation

This is not intended to be a character generator or the like. I expect that much of the 'work' would be done outside the system (determining what bonuses apply where, that feats are chosen at the appropriate time, and so on). I do not expect the system to do anything to confirm legality; you can have undead with Constitution scores, humanoids without them, vermin (Int --) wizards, whatever.

It may be extended later to check prerequisites, calculate BAB and base saves, and so on... but initially, no.

Backend

Relational database containing all entities. I expect that much will be simple text storage, though some things may be broken out. A creature's skills might log the number of ranks and a final bonus value, but not all the modifiers in effect (tracking bonuses from feats, synergies, and so on is more trouble than I'm interested in... though I may include a field so the user can log what modifiers apply, to make it easier to confirm correctness).

I expect to use MySQL. I actually prefer PostgreSQL, but my web host provides only MySQL. Access is right out (Windows-only, and I want to be able to run this in Linux and/or via online interface).

Frontend

I've got a couple of ways to go here.

  • GUI client (using wxWidgets, most likely); or
  • web client (using Perl or PHP).

One of the beauties of having a clear split here is that it should even be possible to have both interfaces to it.

Database Design

Relational Structure

Creature-Class
a creature may have 0 or more class levels; log the classes and how many levels, don't bother logging class resource (skill points, feats, hit points) allocations
Creature-Feat
a creature usually has 1 or more feats; log the feats and any additional information (what weapon it has Weapon Focus with)
Creature-Monster
a creature (gnoll warrior) is an instance of a monster (gnoll)
Creature-Skill
a creature usually has 1 more skills; log the skills, the ranks, the final modifier, and include a field so additional modifiers may be described
Creature-Template
a creature may have 0 or more templates applied
Encounter-Creature
an encounter consists of 1 or more creatures
Monster-Template
a monster may have 0 or more templates applied
this creates a new monster; a 'fiendish gnoll' is a 'gnoll' with 'fiendish' template applied

Data Dictionary

creature
instance of a monster, with incomplete information filled in or fields overridden. For instance, a goblin warrior with his treasure (a few coins and the like, probably, but potentially a masterwork weapon), a goblin sorcerer (replaces the default warrior information with sorcerer information, including spells known), half-dragon goblin fighter (template, class levels, and equipment), and so on.
encounter
one or more monsters, to be encountered and interacted with as a group. May or may not include battlefield information, will often include an outline of tactics (which may be as simple as 'charge madly into combat').
monster
monster stats, as provided by RSRD or other source
template
template, per RSRD. Half-dragon, celestial, whatever.
Personal tools