Toolheim
TL;DR:
You love to play Mordheim, the skirmish variant of the Warhammer tabletop game from Games Workshop. But managing the roster sheets is tedious, especially when you play in a group larger than two. The Toolheim app for Android is your companion tool to manage warband rosters within a team and track progress -- nerd style!
Overview
The traditional way of creating a warband roster (your warband configuration) consists of filling out the warband roster sheet PDF by hand or with a PDF editing tool. After each battle, you have to update your roster sheet, which essentially means to fill out the complete form once again from scratch. Most likely you want to share each state of your warband PDF with your friends, so they can see, verify and compare it. After some battles, this process gets tedious and kills most of the fun.
Toolheim try to fix this with a little bit of technology. Warband roster sheets will be described in a structured way, so other tools can read, manipulate and work with it. The Toolheim app can read this files from a GitHub repository and display it. This sounds way too abstract, so lets just dive into the warband roster files.
Warband File Syntax
Here you see a simplified version of my Dwarf Rangers warband:
warband: The Revolting Dwarfs (Dwarf Rangers)
active: true
campaign: 11
objective: The Lure of Fortune
alignment: Lawful/Neutral
achievments: |
Land Train
Silk Trader
gc: 78
shards: 2
equipment: Lucky Charm
# Max 12 units
# Racial maximums (Dwarfs):
# M3, WS7, BS6, S4, T5, W3, I5, A4, Ld10
heros:
- hero: Ragnar (Runesmith) [32XP]
stats: M3, WS5, BS4, S3, T4, W1, I3, A1, Ld10, Sv-
skilllists: Combat, Shooting, Academic, Strength, Special
weapons: Axe, Axe
armour: Helmet, Light Armour, Lucky Charm
rules: Leader, Blackblood, Expert Axeman, Tactician
warbandaddition: 5
# Skill wishlist:
# * Two-Weapon Master (ignore -2 to hit for offhand)
# * Money Maker (D6+2 GC after battle)
- hero: Floki (Apprentice Runesmith) [8XP]
skilllists: Combat, Academic, Strength, Special
stats: M3, WS3, BS2, S3, T4, W1, I2, A1, Ld9, Sv-
weapons: Axe, Dagger
armour: Helmet, Heavy Armour, Lucky Charm
rules: Extra Set Of Hands, Skilled Driver, Haggle
- hero: Bjørn (Troll Slayer) [15XP]
skilllists: Combat, Academic, Strength, Special
stats: M3, WS5, BS3, S3, T4, W1, I2, A1, Ld10, Sv-
weapons: Dwarf Axe, Dagger
armour: Lucky Charm
rules: Deathwish, Fearsome
henchmen:
- group: Beard Mob (4 Beardling) [13XP]
stats: M3, WS4, BS3, S3, T4, W1, I2, A2, Ld8, Sv-
weapons: Axe, Dagger
armour: Helmet
notes: |
Inscribe rune before battle
Blackblood (Ragnar) = Anyone in base contact got S3 hit if wounded
As you might already notice, the warband definition file is valid YAML syntax with some constraints. To read a warband file, you just need a YAML parser and some regular expressions. There are some fields which need to be in a specific format. Here are all specialties:
- warband:
<name of the warband> (<race>)
Will define the name of the warband (you can choose whatever you want) and the chosen race (see the rule book). - equipment/skilllists/armour/weapons/rules/injuries:
<name>, <another name>, ...
These are all lists of names, separated with a comma. The name itself can be anything, but it makes sense to use the identifiers from the rulebook to be consistent - hero:
<name of the hero> (<type>) [<experience>XP]
A hero consists of a name (choose an epic one!), a type (see what your race has to offer) and the experience gained on the battleground. - group:
<name of the henchmengroup> (<number> <type>) [<experience>XP]
Similar to a hero, a henchmen group consists of a name, a type and the gained experience. The number specifies the unit count of the group. - stats:
M<movement>, WS<weapon skill>, BS<ballistic skill>, S<strength>, T<toughtness>, W<wounds>, I<initiative>, A<attacks>, Ld<leadership>, Sv<save>
The core of the list are the stats for heros, hired swords and henchmen groups. The stats define the characteristics of the unit.
In addition to that, there are some flags you can set for heros and henchmen groups, which are:
- warbandaddition:
<number of GC which the unit adds to the rating>
Some units increase the warband rating mor than usual. Big or very expensive units for example. The be flexible with that, you can use this to adjust the warband rating. - hiredsword:
<true, if the unit is a hired sword>
Hired Swords do count a little differently, you need to pay upkeep and so on. If you have hired swords in you warband, flag it appropriately. - slowwitted:
<true, if the unit is slowwitted>
Some units are a little dumb (trolls, beasthounds, ...), which take twice as much experience to advance.
The rest of the keys are self explanatory. Missing keys will be filled out with default values.
GitHub
So, what is the whole deal about the warband roster files? Why not just fill out the PDF and save each revision? The warband roster files (and text files in general) have the big advantage of versioning, comparing and sharing -- for free! Text files can be managed in a git repository, which will track the changes and make it easy to see the changes. For that, Toolheim uses GitHub to store the warband files. Here is an example of a post game sequence. The changes to the warband are shown easily.
The Toolheim App
And here comes the Toolheim app into play. The app searches a GitHub repository for suitable warband files (.warband.yml
extension), parse it's content and display it. That's basically it. There are some nice features and a stable sync mechanism, so you see which warbands have changes since you last watched it. The app will give you an overview of your own warband and the warbands of your playmates.
To search for warbands on a GitHub repo, the folder structure need to be in a specific way. Take the example repository as a quick reference. The warband files need to be in the root folder or a sub directory (which can be specified in the app). Each directory name represents a player, so name it accordingly. In this directories there can be one or more .mordheim.yml
files. Use the active: true
flag to enable/disable warbands. Specify the GitHub repository, the optional sub directory and click the Start search
button to crawl the repo for warbands.
When finished, you can see all found warbands in the drawer, ordered by CP. If you hit the sync button (the left button on the top right), all found warbands will be checked against new commits. If there are changes, the warband name will be shown in bold.
The warband name can be clicked to see it's units and their stats. Heros are green, henchmen groups are orange and hired swords are black. Red colored stats stood out and purple stats are exceptional. This makes it easy to quickly see the important parts of the unit.
The calculated rating and rout limit will be shown at the top. If you scroll to the bottom, there are some less important information like the objective or stored equipment.