Sunday, 9 October 2016

Magic wagon wheel getting more and more magic

Regular readers of this blog will no doubt be hoping I am going to present a further revision of my magic darts wagon wheel.

And I am!

The following changes are quite considerable, so I'll bullet-point them to make it easier for you to keep up:
  • data entry is now done via mouse-click - you just click on the bed that's been hit
  • this allows for a distinction between the two halves of the single
  • this makes it much quicker and easier
  • this is quite ridiculously awesome
  • the JPGs now export automatically after each visit to the board, meaning you don't need to keep hitting the keyboard shortcut for the macro
  • this does it every three darts unless you get your score to zero in which case it exports the JPG at the end of the leg
  • there are buttons for "bounce out" and "bust" in case that happens
  • there is now a scoreboard displayed which shows the points in leg for both players
  • there is also an overall leg score in the middle 
  • there is no provision for sets yet but that wouldn't be too complicated to add

I can understand if that's quite a lot to take in. There are a couple of other little things like the status bar at the bottom of the excel says how many you've scored while it's exporting the JPG (takes about a second and a half) and I've used a calculator display-type font for the scores, as a nice little touch.

I've also been experimenting with a GIF programme which freezes on final frame. Which is OK, not essential but in fact doable, if desired. Here's the normal GIF anyway for the first set of the World Grand Prix second round match between Alan Norris and Simon Whitlock. I've only done the first set because, as I mentioned, I have no provision for sets in my file yet.

Enjoy and please make comments if you have any comments.

I haven't included any explanation of how I've managed to do all this really good stuff in this post but I can tell you that it wasn't actually very complicated most of it. Was all just adaptations/extensions of what I had without having to completely revise any aspects of the programming, which was nice.

Friday, 9 September 2016

Magic Darts Wagon Wheel revamped


to have any real idea what I'm on about here, you should probably read the last couple of posts on this blog.


What I have done is I have revamped my Magic Darts Wagon Wheel, making the following changes:
  • each bed is now its own "half arch" shape, making the whole thing much cleaner, as I don't have several layers of arches lying on top of each other;
  • the spider is a bit wider and, together with the neat "half arches", this gives you a board which is much tidier-looking (there may be some gaps still, but it now has potential to look actually clean and tidy);
  • there is now an image of an actual dart board behind my shapes;
  • the big hit is coming now....
  • the beds now start WHITE and the transparency INCREASES with each hit, so what is revealed is the ACTUAL DART BOARD.
 In case you don't realise, this is quite a significant change. Hence the capital letters.

I haven't actually got it finalised yet but I did put one togther for Mensur Suljovic's historic win in the recent Happy Bet International Darts Open in Riesa.

The wagon wheel can be viewed here.

Not bad, eh?

Thanks also to @DanDartsDawson for suggesting the term "heatmap" to describe my invention. That may be a better name than magic darts wagon wheel. Feel free to discuss in the comments.

Tuesday, 9 August 2016

Improvements to the Magic Darts Wagon Wheel

you may well have read my last post about what I was reluctantly calling a Magic Darts Wagon Wheel. If not, do that quickly now.



Anyway, if you read all the way to the end and read the comments, you'll have seen a nice suggestion from Michael Bench-Capon, in which he proposes making the first dart in a bed contribute more opacity than later darts in a bed. And he even comes up with a way of doing this using fractions and powers of things (yes, mathematicians, that's a simplification!).

Anyway, I thought this suggestion was excellent and I tried to implement it and the following few simple bullet points sum up what happened:
  • I struggled for a bit, not really knowing exactly how to do it;
  • I played around with some trial and error numbers;
  • I thought of concocting a formula which meant that for a specified number of darts (based on number of legs to win, like I initially had), you would reach 95% opacity;
  • I came up with something like 0.05 = n^x, where n is my parameter to be defined and x is my specified number of darts;
  • it's 0.05 transparency because opacity is one minus transparency;
  • I want to find n so I needed the xth root of 0.05
  • I realised that I didn't know how to find an xth root of something so I googled it and it turns out you just do ^1/x, which is very handy;
  • so I came out with something like 0.05^(1-/x) as my n;
  • I then substitute what I used to have as my number of darts for maximum transparency depending on bed type for x, so e.g. it's twice legs to win for missed doubles;
  • this gives me a paramter for each bed type which I called z;
  • then to generate the transparency I just need z^y, where y is the number of darts in the bed;
  • UPDATE: And this actually really helped tidy up the code as well because I could get rid of a "case" thingy I had in there which I had needed to check if the max no. of darts had been exceeded and just go to a super simple transparency = z^y;
  • happy days.
This is the result, using this match between Canada and New Zealand.

I think this really does create a better overall animation than with the previous method, though of course I'm still at a very early testing phase. Still fone-tuning, if you will. Thanks again though to my contributer and please everyone feel free to comment etc. and make further excellent suggestions. Half-hearted remarks or even exclamations would also be appreciated.

PS: I'm also still on the lookout for new name suggestions. Still not wholly happy with Magic Darts Wagon Wheel.

Monday, 8 August 2016

Magic Darts Wagon Wheel

The title "magic darts wagon wheel" isn't particularly satsifying. It includes two important words: "magic" and "darts", but referring to something that looks like a dartboard as a wagon wheel is maybe a little odd. Particularly considering the fact that it looks like a dartboard because it's a diagram of a dartboard. Wagon wheel just happens to be a term from sports broadcasting (cricket), which is why it is even being used here as the working title for my latest invention.

If it's displaying properly, here's the magic darts wagon wheel of Germany against India from the 2015 World Cup of Darts.

In case it isn't evident what's happening, I'll explain it in a few simple bullet-points:
  • the dartboards start white (actually coloured as normal but 100% transparent;
  • the beds that get hit (singles affect both beds irrespective of which is hit) get a little bit less transparent for each dart that hits them;
  • there are a few settings which mean that the type of bed being hit (single, double, treble etc.) is considered when determining the impact on opacity of a dart in that bed;
  • this is because you are probably hitting far fewer doubles that singles (for example) so if I want them registering on the magic darts wagon wheel, then I need to do that;
  • missed doubles (which hit nothing) are registered as black just outside the double;
  • I have these parameters easily editable – at the moment you enter the number of legs needed to win in the match and it gives you some suggested parameters - this may yet be fine-tuned based on results of testing;
  • the boards update automatically when you enter the beds hit, then I save an image of both boards after each visit to a board;
  • these are then strung together in a GIF making the animation of the whole match.
As you may well agree, this is pretty nice. Even a casual observer will see that India hit too many single 20s and too many treble 1s and never really hit any doubles.

There are a few things that I could still improve like:
  • tidying up the drawn dartboard. It's a little jaggy in places;
  • tidying up the programming for saving the image - it works but there is an approx. 1.5 second delay which could maybe be shortened with neater programming;
  • possibly add a scoreboard to the grapic, though as there is currently no entry of "double to win leg", this would require additional data entry (or something else like actually calculating the score based on the beds hit, which possibly wouldn't be impossible, but isn't currently included at all);
  • possible alteration to the means of data entry. Currently I have a grid and I add 1 to the appropriate cell but I could set up something where you enter the three beds hit, e.g. T20, T20, 20 and then it sources from there. Not sure if that would actually be easier though. Am considering something with dropdown menus;
  • other improvements based on testing and/or user feedback.

Please do comment and/or make suggestions for improvements. And, as with my darts wave, covered in previous posts on this blog, please do credit me if using the magic darts wagon wheel for your own darts matches, Twitter feeds or television broadcasts. Thanks.

Also as a little tip, for the latest news and updates, be sure to follow @herrbench on Twitter (that's me by the way) as that's where I'm often posting stuff like this in more reduced form, but including the nice graphics. And it's very handy to retweet stuff on Twitter so feel free to do that as well.

Thursday, 28 July 2016

Darts wave fone-tuning [sic]

it may be a little bit early to talk about fine-tuning, or "fribbing", as I believe some people call it. Fribbing is apparently more fine than frobbing, just as twiddling is more fine than twoddling. So I guess you could say I'm not yet fine-tuning, but just fone-tuning.

Ask Steven Pinker for a clearer explanation of that first paragraph if it made no sense.

Anyway, some things I've noticed as a result of having used my darts wave a few times and made a few improvements (see the last few posts of the Massive Blog for more details) are:
  • that it remains very good, 
  • that it indeed keeps getting better as a result of the improvements
  • that it does help to use it a few times to find minor errors in the spreadsheet
  • that if you have a momentum score based on the last 15 visits to the board then this can go down when you throw a ton-40 if you threw a ton-80 16 throws ago.
This last point is quite interesting. Clearly, it doesn't matter how many throws you take into account. If the 180 leaves the relevant data range at the same moment as the 140 enters it, then your momentum will drop. Just as your ranking points will drop in tennis or whatever if you are only runner-up in a tournament which you won the year (or two years) before. This seems largely unavoidable.

However, there is one points-based system which I believe is universally revered and respected, and that is the FIFA world ranking system for international football teams. I don't want to get into the nitty-gritty so I'll stick to the notty-grotty, which includes the fact that if a football match was three-and-a-half years ago, then it contributes less to your ranking than if a match was last Wednesday.

I haven't experimented yet, but this has certainly given me the idea of making the last 5 visits to the board of my wave count more, the 6th to 10th visits count less and the 11th to 15th visits count even less. This could potentially counteract the issue of your ranking dropping when you hit a 140. Probably not in every case, but possibly in many cases.

Worth thinking about anyway. I will probably do a couple of trial runs and post something about them in the near future. In the mean time, why not read my other posts about the FIFA world rankings, like this one here.

PS: Just in case you're interested but not interested enough to have clicked on the link, the current top five world football teams, in order, are: Argentina, Belgium, Columbia, Germany and Chile.

Wednesday, 27 July 2016

Darts wave at the World Matchplay

I trialled my darts wave at the World Matchplay, which finished at the weekend, and I can report the following:
  •  it worked well 
  • it was possible to keep up-to-date with the flow of a match 
  • only when I sneezed or had an itchy foot or something did I miss a couple of darts
  • missing a couple of darts doesn't have too dramatic effect on the whole wave
  •  it was quite fun to do.
Here are a couple of the waves I made.


During the tournament, I also added a macro to my spreadsheet, which basically exported the graph as a JPEG with a unique name (numerically adding +1 to the file name each time). Using these many JPEGs I could then make GIFs of the wave, like this one for the final.

[Blogspot isn't letting me copy the GIF in here, but you can see it here.]

UPDATE (08.08.) here's another stab at entering the GIF:

This is quite fancy and nice.

It was particularly nice that it was so quick and easy – saving the JPEGs really didn't hinder the entry of the data at all – and the GIFs almost made themselves as it was always just "all the images in the folder". And because of the way the file names worked, they were automatically in the right order too. This meant that I could quite comfortably grab an apple and make a GIF everytime there was a break (every 5 legs).

One thing that I have realised, having trialled the wave, is that after a few legs the impact of any 180 or missed double is comparatively less than at the start, which means you have to look quite closely at the graph to see the upturns and downturns. This is fine – it's nice to have an overview of the whole match, but I have also had another great idea.

Based on the same data entered, I have now set up the spreadsheet to generate a second wave which only considers the results for the last 3 legs ish (technically the last 15 visits to the dartboard each). This gives you a much more clear up and down, like this is how it would look for the final.

I only thought of doing this after the final, so I don't have it as a GIF, but I've now also extended the macro so that it saves both waves, meaning that from now on I'll be able to generate both GIFs, one for the trend of the whole match and one for the rapidly chanding 3-leg (ish) momentum. This is pretty exciting. Even having the still images is quite nice but the animations are even more fun.

I have also made a couple of other adjustments to the spreadsheet (which I haven't yet actually put to use in a match situation), which are just the addition of a "break" parameter and a "bullseye/double (not checkout) parameter. Adding and removing parameters is fairly easy, though I haven't made it super clean just yet. In theory I could add 10 placeholder parameters which you could kind of turn off an on as you fancied. This is all fairly small potatoes compared to the 3-leg (ish) wave though and other such innovations like the GIFs.

On the whole, very happy with the results of the first tournament the wave has been used at, which have:
  • confirmed the general functionality of the wave
  • led to cool new features
  • revolutionised darts broadcasting.
See you next week.