Note: I started writing this as I first got it working, then the optimism leaves.
Battlescribe is the most popular army roster making software out there, but it has two big issues
It isn’t being updated anymore and the developer is MIA,
The rosters it makes are a complete pain to read.
I decided to make my own roster making “software” that uses the same files. I’m starting with doing just 40K, but I might branch out once I get that working. I learnt a lot when I built WAMIR, which was an Excel-based roster maker designed specifically for Warhammer (it’s still out there even though I haven’t updated it in 15 years). I built a similar thing for WarFoundry (which I thought I had lost years ago), but I managed to dig up the Excel file for that, and went into modifying it to use Battlescribe files. I get odd periods of waiting at work, so it’s something I can work on then rather than in the evening when I am too tired.
The Battlescribe xml schema is horrible, and not formally defined anywhere. I am essentially forced to reverse engineering it in order to interpret the file, which is not easy given how weirdly it defines a lot of things. Using VB within Excel to parse the file and extract the data. It parses the file every time you change an option, which is inefficient but easier than constructing a database.
Problems I have encountered so far:
The .cat files use linefeeds instead of carriage returns. Need to process the file to replace them before I can use the file.
Units are defined as both models and units, but models are also defined as subcomponents of units. No consistency.
It’s a complete mess. The .cat file generation doesn’t properly name child elements every time, so you have to go to the .gst file to cross-reference them. How this is done is done differently by different .cat files. How hard is it to just call a unit an HQ choice? They are all in random orders. I don’t know if I can account for any of these differences. It’s a hamfisted disaster, it’s like people just randomly glued data items together until it started to work, I’m surprised it works at all. I’m starting to lose the will to continue. The ultimate in copy protection - do it so poorly that no one wants to bother treading in your footsteps.
I think I might just rewrite WAMIR to be more flexible and construct my own army files, it would already be quicker than what I have done so far…
If I were you I would definitely use a custom, more consistent scheme. Why bother keeping it ‘backwards compatible’? You could later re-utilize the work you have already done and write a conversion procedure from BattleScribe to your XML scheme.
The idea of compatibility with Battlescribe was so that it could be used with future updates that other people produce instead of me, and that other people could use for any army they wish, rather than just the few I have the books for. It seemed like a good idea at the time…
It is, but maintaining compatability with BS is noy always going tk be fun. A more modern format anf easy to use editor and skme decent output would potentially make this very popular
True. A good storage format and an open-source & platform-independent framework for implementing custom list composition rules could make this very future-proof. It is a bit strange that something as basic as a list building tool is closed source.
Understood. But perhaps it would make your life a lot easier if you would not have to work with the BattleScribe format in your own code. I looked up some BS files and yeah, can completely sympathize with you. Just parse the Battlescribe file once initially and then proceed to work with your own format.
So I took the “easy” way out and overhauled WAMIR. I increased the length of the list per option, simplifying the army definition file but making it a bit harder to read (not that you really need to once it is updated). I took out all of the pts/model parts (so everything on the list is now pts/unit, although I really shouldn’t have done this and now wish I hadn’t) and made it suitable for 40k overall with the different unit counting.
I quickly made a Genestealer Cult army definition file to test it out, found a lot of bugs. Then I found it didn’t do the one thing I really wanted it to do with counting the models in a unit properly. So I figured out a way of using the unit options to add that in, and now that works.
The way it all works now is a bit more freeform, you have to know the limitations of each selection and if you don’t then you’ll easily make illegal choices without any warnings. Similarly, it counts the number of each unit type but doesn’t warn you if you have too many for a Patrol force. This is all good enough for me, but probably not for newbies to the game or army.
I’m pretty sure I won’t touch Battlescribe data files at all from now on. Even if I had it all working, the upkeep for anything involving them is likely to be more than all of the time I spent on WAMIR. The new points updates for 40K took me only a few minutes to change in WAMIR and it was very easy to do.