Tuesday, September 19, 2017

More Infinity Painting, Nomads Edition

I've been making more progress on painting the Infinity armies but Michael took some time away from basing and then decided he was retiring.  He liked it but it got repetitive.

So, I just based the hordes I had painted.  Below are the Nomads.  Last week I talked about how I made the barrels that appear in these pictures.

This was my first experience mixing a paint color for the light blue shirt he's got on (outside some flesh tones for skin) .  I've mostly been avoiding this so that as I slowly paint minis over time, I don't have to worry about re-mixing some color I did once and never getting it right.  I'm treating this as a one-off so it was OK.

Moran and Krazy Koalas

Carlota and Moriarty
Corregidor Bandit
I was trying for a bit of a camo affect for his hoody and it turned out better than I'd hoped.  I really like how this one turned out.

Reverend Healer 

Gecko Squadron Pilot
When I got this mini, my first reaction was that he had to be bigger in scale than the little arms you see poking out from underneath the full Gecko armor.  In fact, I immediately suspected that they shrunk the scale of the arms inside the armor a little... but after I painted them and put the two next to each other it actually looks right.



Thursday, September 14, 2017

Solo Race #8, 3 Laps at Sao Paulo

Three races left in my 2017 solo series.  I cling to a small lead over Jackie Stewart as we head to Sao Paulo, Brazil for a 3-lap race.

I think I can accelerate slowly and still get to my top speed and I think the higher deceleration will come in handy a couple places on the track.  I want lots of wear here and hope to make a move from a mid-field start.

I bid 4 for the pole and ended up tied with two other drivers, lost the tie breaker die rolls, and ended up 6th.  Mansell was one of the two cars I tied with and he got huge value bidding 4 for 4th on the grid.

Fangio just beat Vettel for pole by a skill chip.  Stewart ended up 7th.

Lap 1

Alonso (yellow) rolls a forced pass and ends up 3rd off the start.
Alonso gets past me on the start.  Although he had to roll a forced pass to do it.  That move got him up to 3rd.

Stewart and Fittipaldi pass me exiting the Senna S with their better accelerations.  I'm down to 9th already -- an early drop in position that has become pretty typical for me this season.

As the cars begin lap 2, Fangio has built up a big lead.  Alonso is third again -- having given the position up to Rindt earlier, then taking it back on the big front straight.  Mansell is 5th.  I'm 9th.

Lap 2

I start making a move in the middle of lap 2.  Here I spend 3 wear to pass Fittipaldi.  Later I'll spend more wear so that I can get out onto the front straight with everyone else.

Me (in blue) passing Fittipaldi to move out of 9th.

Lap 3

As I cross the line to start lap 3, I pass Rindt and Hunt under braking and get inside Mansell -- all the way into 5th.

Me moving into 5th after the long straight to start lap 3.

 I was able to stay in front of Mansell exiting the Senna S and tucked in behind Stewart.  This is the real battle -- can I get past Stewart?  Meanwhile, Fangio broke his top speed and is out of the race, leaving Vettel to try to hold off a hard charging Alonso.

On the right, I take the slip from Stewart and dive inside for 2 wear for the pass.  You can also see Alonso has caught up to Vettel.

Huge move for me that I hope I can make stick and which will extend my championship lead a bit.

But Stewart fights back.  Below he spends 3 wear to pass me.  In addition Raikkonen has fought his way up from the back to challenge for a podium as well.  You can also see that Alonso got past Vettel a couple turns ago.

Stewart (orange) pass me.
But the very next turn both Vettel and Stewart chance Bico De Pato in efforts to challenge Alonso for the win.  Both spin.

Vettel (red) and Stewart (orange) spin in front of me and Raikkonen.
I got through Bico De Pato even with Stewart who then spun the next turn chancing the last corner of the race.

In the drag race down the front straight, I lucked out that Raikkonan broke his top speed and so I was able to hold on to second and keep Stewart behind me.

Alonso long ago finished for the win as I hold off Mansell, Raikkonan,
and Stewart for 2nd.

Wrap Up

The second place was my 4th podium of the season and was extra nice because Stewart (5th), Fangio, (dnf) and Vettel (dnf) did not have good races as my top competition for the championship.

Alonso's win was his best result.  Mansell's 3rd was his 3rd podium in the last 4 races.

Next up will be Nurburg for a quick 2-lapper before the final race at Mogyorod.

If you want to see this race turn-by-turn, see the google album.  If you missed a race, check out the series summery.

Monday, September 11, 2017

Cheap DIY Infinity Barrels & Terminals

I saw a bag of wooden spools at the craft store earlier this summer and decided that they would make great barrels for infinity.  The plan was to sticker them with patterns maybe from the containers I printed out and built.

First some primer.

Now I needed some art.  I looked through some downloads of various DIY terrain and found some good candidates.  I opened the PDFs in a graphics program and then scaled the images and cropped them to fit the dimensions I needed.

Here is the PDF I ended up with.  Print page 1 on full-page, peel-and-stick label paper.  Print page 2 on a card stock.
Next step was to paint the parts of the spools that will not be covered by stickers -- the top and bottom edges.  Most got a coat of metallic paint.  Four got brown.

Next I cut out the stickers and applied them.  Plus a special touch for the four I wanted to turn into holo-terminals.

Here are some stills of the final results.

Huge thanks to TommyGun for developing the art I used for most of this.  I tried to reach out to him, but his presence is illusive online.  Best I can do is suggest that if you like the art, check out his paper craft terrain files on this OneDrive folder.

Also a big thanks to Stone Edges... from whom I got the wooden crate art.  I tried to reach out to them as well, but their web site has been down for a while.

Check out my other DIY Infinity projects:

Wednesday, September 6, 2017

Finding A Game's Broken Bits

I have finished reading chapter 4 of Games of Strategy by Dixit, Skeath, and Reiley.  Before I provide my thoughts, again here are Messrs. Aaron, Austin, and Paul with their conversation.

Reading this book as a game designer is both fascinating and a little odd.  Chapters 3 and 4 have both taken the same basic approach: analyzing the best way to "solve" a specific type of game.

My knee jerk reaction to this approach is concern.  If you tell a game designer that you solved their game I suspect you are breaking their heart.  It would certainly break mine.  To me, solved games are broken games.

But I think designers can take this a step further.  We can't stick our heads in the sand and pretend our games aren't broken.  Instead we should use the tools Dixit, Skeath, and Reiley discuss to discover the specific bits that are broken so they can be fixed.

So what are we looking for? In chapters 3 and 4 the authors have focused on finding three different things that would make your game broken: Dominating Strategies -- the strategy that always wins, Dominated Strategies -- the strategies that never win, and Nash Equilibria.

In the hobby game environment a Nash Equilibrium feel to me like those odd ruts you get into where Player A feels obliged to do X and Player B feels obliged to do Z in response and they never really have a good reason to do anything different.  In fact, every other action they could take seems less optimal.  I suppose this is just a redefinition of a Nash Equilibrium -- a combination of strategies or choices where each player gets the best value given the variety of each others' responses.

And how do we find them?  In chapter 3 the authors discussed decision trees. In this chapter they introduce the decision matrix.  Where trees helped analyze sequential move games (I take a turn, you take a turn, ...) matrix help analyze simultaneous move games.

Above is a matrix for Rock-Paper-Scissors.  The results are expressed from the perspective of the Right Hand.  RPS is a 0-sum game so we only need one set of results.  In non-zero-sum games you would list a number for each player showing their reward in each situation.

One thing you can say about RPS is that it does not have a dominant or dominated strategy.  Below we change the rules of the game to say that rock always wins but still ties against another rock.  And the matrix clearly shows that rock is the dominant strategy.

Now this would have been obvious without a matrix, but most games are more complicated.  Below is a decision matrix for a very specific situation that can come up in Championship Formula Racing.

Image two cars in a racing game sprinting for the checkered flag. The trailing car could end up gaining spaces from slipping the lead car in certain situations.  Without going into all the rules and reasons why, here are the cars' choices and results from the perspective of the lead car.  Also note that a result of 0 will likely mean that the lead car wins.

Dominated Strategies: For the trailing car, going 160 is dominated... it never results in the trailing car winning.

Dominating Strategies: There are no strategies for either car that always wins.  200 is closest for both cars, but if they both play 200, the trail car will win.

Nash Equilibrium: There is no Nash Equilibrium either.  No matter what speed one car picks, they might have a better play depending on what speed the other car picks... basically this scenario turns into a guessing game.

Below is a matrix for the same situation but with different choices.

Dominated Strategies: If the trailing car goes either 140 or 160, they can't win (remember 0s mean they will lose).

Dominated Strategies: Meanwhile the lead car can not lose if they go 160.

So this situation is clearly solved.  If this where the whole game, this would be a problem I would need to fix.

Friday, September 1, 2017

CFR Track Ratings Revised

The list of tracks I have build for Championship Formula Racing attempts to organize tracks based on how well they cater to one extreme strategy or the other.  Red tracks appear most favorable for racing from the front while purple tracks seemed most favorable for racing from behind.

Initially I organized these by gut, but pretty quickly applied some track profile metrics to determining what would end up being better for each strategy.  However, the ideal would be to use actual results from actual races.  I've now got data from 36 races on these tracks that helps me to do that and so I've redone some calculations and reorganized the tracks.

Performance Metrics

Because I do not actually know what strategy a car was using or attempting, I use a couple of proxies.  One is to look at where the car qualified.  A car that qualifies in the first 2 rows I consider to be running a front strategy.  A car that qualifies in the last 2 rows I consider to be running a back strategy.  My other proxy is start speed.  I consider any car running a 100 or 120 start speed to be running from the front and a car running a 20 start speed to be running from the back.  Obviously these are not perfect proxies, but they will have to do for now.

I then figured out how many points each position on the starting grid produced per race.  I also figured out how many points each start speed group produced per car.  I wasn't ignoring the middle groups and I think that is a viable 3rd strategic group but I did not want a 3-way variable... maybe next time.  But I did subtract the points scored by middle groups from the other numbers I calculated to provide some relationship to those middle strategies.  I use the point system from Organized Play.

Looking at the scores for Monte Carlo we can see that both the Front and Back groups are negative.  This means that the middle 2 rows actually did best.  But the front two rows did better than the back two rows.  Interestingly, the next two numbers show that 60 start speeds did worst.  20 start speeds (slow) having done a little better than 100+ start speeds (fast).

Finally, I show how many races I had at least some data I could use for these performance numbers.  Note that for many in-person races I might have only final results and so no data was helpful.  More often I would have only grid position and not start speeds.  For instance, the two races I have for Sao Paulo did not include start speeds which is why both Fast and Slow are 0s.

How Are Tracks Grouped

First I would look to see how many races I had in my sample for performance data.  With 10 or more I relied exclusively on the performance data.  With less than 4, I would rely exclusively on the track profile data.  In between and I look at both sets of data.

In that big table on the right, I show the scored produced by formulas I apply to different data.  For the in-between tracks I blend the track score and results scores together based on how close to 10 races my sample is.

To create the groups I look at the scores.  If a score is a standard deviation or more above or below the mean it ends up in the Red or Purple groups.  Yellow tracks tend to be meaningfully pro running from the front.  Green tracks should be pretty even but the reality is that are often still a little pro running from the front.  Blue tracks tend to actually be more balanced looking.

Race from the Front Bias

It has long been debated that CFR has a race from the front bias.  The data I've collected here does nothing to disprove that.  It is a game balance point that has long been on the radar.  The average results score (not shown below) of all tracks for which I have data is -1.73.  Roughly that means that some combination of starting in the front 2 rows and/or having a 100 start speed should be worth almost 2 points in any given race.

Tracks that Changed Groups

Now I'm going to look at some specific tracks that changed groups from my last groupings.

Lets start with a doozey.  Francorchamps looks like a race from the back, is still the longest track I've built, and was grouped as a blue last time around.  But I have 10 races I can pull data from for this track and the results say different.

The chart to the right shows a starting grid and the average points that each spot has generated over those 10 races.  Note that due to field size not all grid spots have 10 samples in them.

The pole position is highlighted because a value of 11 or more means that the average result from this spot is a podium finish.

Why are the results different than expected?  My guess would be corner 1.  It really spreads out the field early and gives the cars that get through it on turn 2 a turn or so lead on the back half of the field.

Funny track.  When I built it I was convinced that this would be a deceptive red -- a track that looked like a play from the back but had too many choke points.  Twelve races later it turns out you can run it from behind sometimes.  But the front is still better on average.  So it moved from Red to Yellow.

The grey, na fields indicate that the 10th and 11th spots on the grid were never filed.  All of the data here was from my PBeM that caps at 10 cars.

Sakhir and Suzuka
Both of these tracks look more balanced on paper but so far they have both performed more front-leaning.  With only 4 or 5 races in the books on each with the data I need, they have moved from Green to Yellow although Sakhir could end up in red if trend continue.  Suzuka might end up in yellow.  Suzuka is very narrow and this result jives with my experiences on that track.  Sakhir surprises me.


Hockheim and Istanbul
Both look like race from the back tracks.  However, I have had thoughts that neither really were before.  And my track profile metrics peg them as greenish.  Honestly, I think I may have let perception blind me a bit when I made Hockenheim purple and Istanbul yellow last time around.

Interestingly, while both look moderately front-leaning from a grid perspective.  Both have odd metrics relating to start speed.  At Hockenheim, that 100 start speed seems crucial but the 20 start speed is apparently significantly better than the 60.  At Istanbul, the 100 start speed is terrible.

The 2nd column in those tables is the average points with different start speeds (100 or 120 = fast, 20 = slow).  The 3rd column is my sample size.  So some of Istanbul's weirdness could be sample size related.

Austin and Valencia
I am convinced that Valencia is a run from the back track.  But the results so far suggest that it is more balanced than that.  Austin has been pegged by some as a run from the back as well but results are also suggesting better balance.  So they moved from Purple to Blue.  Austin could end up Green eventually.

Oyama and Sochi
I don't have data (yet) for either but they both moved because I had placed both where I thought they were going to end up after racing despite what the track metrics may say.

Oyama looks so fast but it is also very short so it scores lower on the track profile scoring and moves from Purple to Blue.  Sochi has some choke points on it that I am not sure that the track metrics pick up on, however I've moved it from Blue to Purple for now until I can get more data on it.

Tuesday, August 29, 2017

Even Historical Driver Strategies for Championship Formula Racing

Back in June I talked about the three basic Historical Driver strategies for Championship Formula Racing: Front A, Even, and Back S.  A couple weeks ago we discussed variations on the Front strategy.  This time out, lets compare the three Even-ish Strategies and see how they riff on the theme of spending resources evenly.

My intent with the Mathy strategy was to have a car that took advantage of starred moves as much as possible.  The idea behind the Stalking strategy was to stay within striking distance for a move a little later in the race.

Same note as last time that these are not exactly the same as the versions of these strategies published in the game.  Reasons and links at the bottom of the article.

Now lets look at each Phase by Phase.  Same analysis process as last time... basically I'm measuring how much faster this strategy wants to go than a safe 0-wear plot.  More words at the bottom.

Phase 1

Not Starred:
Mathy: net +0 mph (100% +0)
Even: net +6 mph (72.2% +0, 27.8% +20)
Stalking: net +24 mph (11% +0, 58.4% +20, 30.6% +40)

Mathy: net +37 mph (44.5% +20, 27.8% +40, 27.8% +60)
Even: net +28 mph (58.4% +20, 41.7% +40)
Stalking: net +34 mph (30.6% +20, 69.5% +60)

In the first phase we can also look to see how likely the car is to push it's start speed:
Mathy: 56%
Even: 33%
Stalking: 72%

Starred vs. non-starred is going to be a real theme for this group of strategies.  You can see here that only Stalking is willing to spend some wear into the first corner unless it is an efficient play.

Phase 2: 

 All three of these strategies include conditionals if they have more wear than c.  So lets look at both parts of that equation separately.

For most races and drivers their wear will be lower than c initially but if no wear gets spent in the first couple of corners that can change on shorter tracks.

W < C
Not Starred:
Mathy: net +0 mph (100% +0)
Even: net +6 mph (72.2% +0, 27.8% +20)
Stalking: net +8 mph (58.3% +0, 41.7% +20)

Mathy: net +43 mph (41.7% +20, 58.4% +60)
Even: net +14 mph (27.7% +0, 72.3% +20)
Stalking: net +28 mph (58.4% +20, 41.7% +40)

W >= C
Not Starred:
Mathy: net +12 mph (41.6% +0, 58.4% +20)
Even: net +20 mph (27.7% +0, 44.5% +20, 27.8% +40)
Stalking: net +25 mph (16.6% +0, 41.7% +20, 41.7% +40)

Mathy: net +43 mph (41.7% +20, 58.4% +60)
Even: net +31 mph (44.5% +20, 55.6% +40)
Stalking: net +28 mph (58.4% +20, 41.7% +40)

So mostly, none of these strategies want to spend much in this phase... But Even will spend if it has w >= c; Stalking will spend more than Even if the move is starred or they have w >= c; and Mathy will spend more than either if its a starred move.

Phase 3

Not Starred:
Mathy: net +0 mph (100% +0)
Even: net +34 mph (27.8% +20, 72.3% +40)
Stalking: net +0 mph (100% +0)
Stalking (w >= 2c): net +8 mph (58.3% +0, 41.7% +20)

Mathy: net +37 mph (58.4% +20, 41.7% +60)
Even: net +34 mph (30.6% +20, 69.5% +40)
Stalking: net +20 mph (100% +20)

After last phase's variables, Phase 3 sees the Mathy and Stalking strategies revert to being mostly concerned with stars.  Even picks this middle phase of the race to be consistently prepared to spend some wear.

Phase 4

As usual, phase 4 has a lot of conditionals and cars will generally spend based on how much wear they have left at this point.  But one thing to note is that all three strategies can transition to this phase differently.

Mathy can get pushed here if they did not spend much wear earlier in the race and eventually gain w >= 2c.  Phase 4 for Mathy is much more willing to spend wear without there being a star than it's previous phases.

Even will only move to this phase if the car has entered the last 3rd of the race -- which is unusual.  And phase 4 for Even is very clearly defined by the wear remaining on the car -- have little wear: spend 1; have lots spend 2; in between spend 1 or 2.

Stalking has a more common transition to Phase 4 that includes moving here if w <= laps *2.  Which is really just a way to get them to Phase 5 quicker because Phase 4 for Stalking is actually its fastest phase.

Strategy Trends

Over the course of a race, HDs will spend most of their time in phases 2-4.  So let's quick see each strategy's progression over time:

(Not Starred/Starred) phase 2 >> phase 3 >> phase 4
Mathy net +0/43 >> +0/37 >> +5/48
Even net +6/14 >> +34/34 >> +20/20
Stalking net +8/28 >> +0/20 >> +23/42

I had to provide two numbers for each phase for these strategies because so much changes with stars.

Mathy basically only spends wear if there is a star for the whole race.

Even doesn't actually care much about stars and spends more middle and late than early.  Although that can vary if Even has a lot of wear left early in the race.

Stalking does care about stars but also defaults to spending wear late if it has it.

Next up I'll discuss the variations on the Back strategies.  Remember, links to the above 3 strategies below.

What is the Analysis Here?
The main way to measure a phase's intent is to look at the first starred and non-stared symbols in each tactic.  This gives you a sense of how much faster the car will likely try to go.  Think about it this way -- a car that wants to spend 1 wear in the upcoming corner will try to go 20 mph faster than a car that does not want to spend any wear, all other factors being equal.

If you then multiply each of those possible results by the odds of them being first choice, I get a net result of how much faster this car wants to go.  It might not be able to go that fast, but that's on the driver not the strategy.  I'm going to call this "net" in tables below.

Note that anything with 3 circles of any kind, should be considered starred because that is how the tracks are designed.  Also note, that if a tactic does not lead with a starred option, I'll count the first un-starred option for that tactics starred value since its more likely to be used.

How Are the Strategies Different?
Three minor editorial choices I've made since publication: 1) HDs can push start using only 1 green skill (the start speed test table changed a bit right before publication...); 2) I decided that the red skill chip could be used more places in relation to HD die rolls; 3) there were a few tactics that had 6 symbols on them and my BYO tool only allows for 5...  Links to these version in my BYO tool are at the end of this article.

Stalking (version 1.1)
Even (version 1.1)
Mathy (version 1.1)