This is a project I have been toying with for a while. And when I say for a while, I really mean I originally thought about writing one many years ago. The reasons for never completing this project are many. The first is that obviously, the game is way too complex to be solved, and such a tool would be of limited interest. But this argument cannot be received, as it still could be used for gaining tactical insight (just look at go solvers using a reduced board). The second is quite related, and is a function of the available computing power I had on my command over the years. Thanks to Moore’s law, this has increased. But the most important argument is that I never was satisfied with the code I wrote.
I’m not the greatest software developer, but I am concerned about a program being maintainable and writable in reasonable time. A prerequisite for this is that the source code is readable, and thus that solutions to problems are somewhat elegant. This is quite hard to achieve with Blood Bowl because of the skills system. While the core rules are quite easy to model, each player has unique skills that are applied in a variety of situations. Depending on those skills, and possibly skills another player has, the outcome is different. Given that I am right now into Haskell, and that it is touted as being elegant, I will try to restart this project again.
I’ll try to post in the next articles a gentle introduction to some of the game mechanics, some clever tricks, or obvious fails I encountered. Also, statistical results will be covered and analyzed.