A Lazy Sequence

Introducing Manticore

26 August 2014

Manticore is a web app for the 13th Age roleplaying game that streamlines the process of creating balanced encounters.

It implements the rules for Building Battles on page 186 of the 13th Age core rulebook, in particular the pricing table. This application will automatically produce a set of all – within reasoni – encounter combinations that are allowed for a given party and selection of monsters.

Manticore is not random and it is exhaustive. You simply specify the party size and level, and some simple filters for the bestiary and click Generate encounters.

For instance, a selecting a party of four first level characters with the roles troop and archer, and the Tags skeleton will generate 4 encounters:

  • Skeletal archer ×1, Blackamber skeletal legionnaire ×1
  • Skeletal archer ×1, Skeletal warrior ×2
  • Skeletal archer ×2, Skeletal warrior ×1
  • Skeletal archer ×4

In addition to saving you having to do some math, you may find encounter combinations that you would not have considered if you had to put them together yourself, and that spark an idea.

Hopefully the tool is useful to you in your games. Bug reports and feature requests are welcome.


The project is on GitHub. Please feel free to report issues there, or make pull requests. The most pressing feature is content: I only have the core rulebook at this time, so I have not been able to provide entries for creates from the Bestiary or 13 True Ways.

You are more than welcome to run your own copy of Manticore. The only requirement is a web server. The program runs entirely client side. It does need to be accessed over http(s) due to performing ajax requests to pull down bestiary data. Building the latest from git requires a basic unix (Mac OS X or linux should be fine) system with make and TypeScript installed (probably via npm) Alternatively irregular releases will be made available via the projects GitHub releases page.

Running your own instance will allow you to add campaign specific entries in the optional custom dataset (found in static/data/custom.json – just create it if it does not exist already).

Footnotes

  1. Running the search against the full dataset of monsters for four first level characters can easily run for 20 minutes. for higher level characters where there are options both in the levels below as well as above things can run much longer. As a result the program clamps the computation to two seconds. Hundreds of thousands of results are of no use to anybody. You are better off refining your search space.