BB2 Replayer


 home - downloads - support


Overview

BB2 Replayer is a Windows application that imports replay files from Blood Bowl 2. It attempts to parse them, analyze them, and present data to users both in the application and in the form of web reports that can be embedded in various forums and such. It is very much a work in progress (beta-ish stage), and as such not everything is running smoothly yet.

Looking for the latest release? Head to the downloads page.

News


2017-12-13

Released 0.9.2. Some people have reported that match reports are not immediately available after a new match has been added. I tracked this down to an abrupt disconnection of the TCP socket. I've done a few tweaks and fixes that I believe will fix the issues, although I'm not 100% sure.

A workaround for those that experience the problem is just forcing another server synchronization, which seems to solve the problem. The server is sometimes extra slow to respond to the first requests, which seems to have triggered a timeout somewhere.


2017-12-03

Released 0.9.1. New team report. This version is optional, 0.9.0 will still create valid reports.


2017-11-16

Released 0.9.0. Lots of changes to web reports, match reports in particular. This unfortunately breaks backwards compatibility when syncing with server.


2017-09-06

Released 0.8.0. Legendary Edition is here! Added support for the 8 new teams and their various new skills. I also started putting in some serious work on the replay viewer, even though it is nowhere near fully functional yet. It does work well enough to give you a quick idea of how the game went down, but there's a lot more left to implement still. As usual, there are also various bug fixes and web report tweaks.


2017-02-26

Released 0.7.3. Chaos Dwarf and Khemri teams added, along with a bunch of minor improvements.


2016-12-07

Released 0.7.2. Accidentally broke report URL window in 0.7.1.


2016-12-06

Released 0.7.1. Numerous bug fixes which may or may not affect you.


2016-12-05

Released 0.7.0. This one adds support for Nurgle, as well as fixes to several skill names. Also, previous versions had trouble when there were too many replays, so there are two separate solutions for this:
- One is that the logger back-end now scales well, and only keeps visible parts of the log in memory
- The other is the introduction of League Management, where you can choose which leagues you subscribe to.

By default, any league you have replays from locally will cause you to automatically subscribe to it (except league 1, which is opt-in only). If you no longer wish to receive more downloads from certain leagues, you can unsubscribe. Any new replays you generate locally will still be uploaded to the server, however, regardless of subscription. This is because the server should have as large a database of replays as possible.

I've also added a new report similar to the old 'Graveyard' from BBM, but named it 'Dead & Retired' because it also includes players that have been sacked from the team. The app can only confirm this on the second consecutive match absence for a player, so there's no way to present this immediately. Still, better than nothing I figure. A few other report tweaks as well, but there are still a lot to do on that front.


2016-11-06

Released 0.6.1. Fixes a couple of bugs.


2016-10-28

Redesigned the web page a bit. Still very simplistic, but realized that I needed several pages at the very least. Remind me never to go into web-design professionally.

Support page will have guides on how to do various things with the app as well as examples. That is the idea, at least.


2016-10-21

Released 0.6.0! It's been about half a year since last release, but I can't say I've been working at it for all that time. There is, however, a substantial amount of effort that has gone into this over 0.5.0.

The previous versions were written with WinForms as GUI (*shudder*), and I realized there was no plausible way forward with that. After looking at the alternatives, I ended up with WPF. Being completely inexperienced with GUI programming as a whole, there has been a lot to learn, and very much still remains to learn at this stage. But at least it is working for the most part.

WPF brought with it some new methodology, separating logic from the presentation view. This led to a lot of the back-end being rewritten as well, but it was completely necessary to remain sane when working on it. The end result is that the functionality in 0.6.0 is pretty much on par with 0.5.0, but the code is in a much better place for adding more features. The match replayer view is non-functional at this point, down from semi-functional in 0.5.0, but a lot more races/players/skills have been added to the database.


2016-03-29

First early beta of BB2Replayer client released! It's been a lot more work getting to this point than I initially thought when I figured out I could get the XML data, but it is coming together! Long and technical explanation for those that may care:

The project consists of a C# client (which is the file distributed now) and a C++ server, which for now I'm currently running and managing on bb2replayer.com. The plan is to open-source all this at some point in the long term, but in the slightly shorter term, distribute the server binaries as well so that everyone can set up servers if they want to. The client can already configure multiple servers, although the default is set up to sync with bb2replayer.com. The server compiles for both Linux and Windows targets at the moment. bb2replayer.com runs Linux, but I'm doing a lot of testing locally with the Windows build. The communication model is a custom protocol on top of a TCP socket, which enables me to run both the client and server on localhost, which is handy for development and debugging.

It is a client/server solution where the server is actually quite thin in logic, and merely serves as a semi-smart repository for .bbrz files. The client is responsible for pulling out all the stats and interpreting the results, as well as building a database. The idea is that the client can subscribe to any number of leagues, and the server will automatically feed the client all the replay files it has matching that league. The client will at all times also send all its local replay files to the server (that it doesn't already have, of course, based on md5 sum checking) IF they belong to a league. Matches that do not belong to a league are typically single-player matches, which are not interesting for this purpose. Since the server-side is relatively simple, I think that part of the project is close to finished.

Now, the client-side is where things get messy. Here's a run-down of the current state of affairs:

GUI
There are a lot of things to do in a world I don't really know that well (C#/.NET), and I've just realized I've already made a pretty big mistake in starting a WinForms project. Being ignorant of GUI stuff, I didn't really know WinForms was dead in the water, and didn't notice the problems until populating views with several tables and stuff. Bottom line is: This is the last release using WinForms (barring small hotfixes). I will probably have to re-create the GUI more or less from scratch in WPF. This will take some time, but hopefully I can create something that is a) more responsive, and b) less ugly.

Reverse-engineering
So, .bbrz files are basically .zip files (around 150-200KB), and they each contain exactly one huge .xml file (around 15MB or so). This is good news, in that all the information about the game is in there, and being XML, it is technically readable. For those that had a look at the Blood Bowl 1 replay files, this is a million times better. There are, however, quite a few challenges as well. There are lots of references to internal enums in the code, so it's not obvious for example what "<PlayerType>7</PlayerType\>" means. I've figured out most of the races, player types and skills at this point, but there are still unknowns. One of the features I want to have, and one that is partially implemented, is the ability to skip back and forth through the replay in the C# client, and be able to analyze the game in a more accessible manner than you can from the actual BB2 client. This is quite difficult, though, as I have to understand almost all of the events in the XML. The challenge is more about size and scope than difficulty, but I will be chipping away at this. It is, however, not the most important part of the project. Luckily, the replay files contain <Statistics> tags for both teams and players, making stats mining from replay files quite easy given that you are happy with what the game provides. It does provide most of the basic stuff like amount of touchdowns, tackles, injuries, casulties, KOs, kills, passes, rushing etc. In the long run, I want to introduce more stats based on understanding the event log, but all that is less important than getting the basics up.

Syncing
Upon starting, the client now searches your typical BB2 replay path and tries to automatically import all replay files it find there. BB2Replayer will take copies of all replay files it finds (with a valid league) and store them in its app directory (which is basically {x}/users/{user}/bb2replayer). I hope this isn't a problem size-wise for anyone, as the replay files are about 150KB each, but it _may_ become one later on. I'll have to rethink that later if that is the case. After the client is up and it has assessed all the replay files it knows about locally, it will send its file list to the server and ask if the server is missing any of those. If it is, then all files that the server doesn't already have will be sent. This should typically just be your last game, so hopefully that's not a big pain for anyone except those sitting on ISDN lines :D

After that, the client will request all replay files from server that matches any of the leagues it knows about locally. In the future, you will be able to see a list of all the servers' leagues and subscribe to them, but for now, you are limited to whatever leagues you have locally.

Part of the reason why I'm releasing this now in a quite unfinished state, is that merely by running the client, you should automatically be uploading all replay files to the server, which gives me a broader data set to work with, and I won't have to bug everyone about sending me replays.