I think we can all agree CH has a huge potential as a proper, fully realized competitive game experience. In an endeavor to improve on this further, I'd like to suggest a replay feature to be made available for MP games (both ranked, and casual). Replays wouldn't only serve as a form of entertainment for the players (watching a great game over and over again), as those can also be used to analyze games (both your owns and those of other people). Replays are a prominent feature in any kind of competitive game. Furthermore, replays for great matches could also be used to showcase how good the game is, hence helping spreading out the word about the game and attracting new players. Lastly, as we're aware tournaments are eventually going to be implemented into the game, a replay feature could very nicely fit with those too. I'm aware developing such a feature is no easy task. But still, as far as I'm aware of, BM already stores on the server extensive logs for every match played. In this respect, at least some of the necessary technology is already in place, making the task more feasible at least to some degree.
Seconded. Bandreus and I had an (And I don't use this term often) epic game this evening, and I would love to be able to save replays that I like for future use.
Ideally, replays would be stored server-side, so you only need to log-in into the game to watch them on any rig, wherever you are. Still, if (for storage-space related or other reasons) BM can't store replay-data for every single match, indefinitely, an option to download an on-file copy of your favorite replays might be a good idea.
This being a turn-based game, it shouldn't be too hard to make something that recreates the battle from the battle logs (which are stored on the server). We would need to add a few more details to the logs, but not many: Char starting positions and facings. Dice rolls. Unambiguous char and group names.
Most implementations of this feature usually revolve around deterministic algorithms (say, for your pseudo-random numbers generator's functions) and storing both the game state and the appropriate seeds in a way you can reproduce the recorded gameplay as it happened. The game being tile-based and turn-based obviously make things easier than, say, in the case of an RTS game where lots of different things might be going on. The same principles still apply. A good example of these techniques is the replay feature coming with the Flixel engine. Roughly what happens is the initial state is saved, then the user input (mouse/keyboard) is stored in an array on a frame by frame basis. If any other non-deterministic data needs to be stored, you do that as well. Since all the algorithms involved are deterministic, and you have non-deterministic data stored and indexed by frame, you can pretty much have the game engine itself reproduce the exact same sequence of events. (actually a few more technicalities are involved, but this was to explain the broad idea). I.e. you don't need to explicitly store what directions characters are facing, as that's a function of the sequence of the occurred events and the players' input events. Most likely, you don't need to store the outcome of dice rolls either, nor which character was spawned at which spwaning location. All you need to store would be the seed (if the rng is deterministic, which it probably is) and - as long as you store the sequence of cards being played, target tiles/characters being selected, etc - you can pretty much reproduce most stuff. Additional data you would have to store is the names/ids of players and characters on the board, their items/decks, figures being used, the time (key frame or analogous time-indexing info) at which each and every action occurred, and so on and so forth. Also, the chat would be stored separately, if you want to reproduce that as well (but this is trivial really). All in all, I think BM is logging all of this already, along with much more data.