Looking at the transition matrices gave me another thought—what if we just encoded the transition matrix directly as a table? Let’s go back to our comparison of the d100 table I had:
(Note this is subtly different from what I had before—I updated the rules about
ordering, and condensed light rain and light snow to just rain and snow). If we
could turn the entire left panel into a single table, we’d be able to pull
values from the distribution exactly.
Implementing this was somewhat involved but it doesn’t require any innovations compared to what we did before. The process is:
1) Choose a minimum probability that is worth including in the table (I picked 1%). Restrict yourself to only those days.
2) For each day you are moving from, create a d100 table.
3) Compile all of these d100 tables into a single matrix.
Other methodological notes: in part (2) I had to account for transitions from days which were included to days that were not included (i.e., because they were too unlikely and culled in (1)). To do this I normalized the outgoing probabilities after step (1).
Also in (2), you don’t need to specify a number of repeats here because the ‘repeat’ is directly encoded into the table. So it is just as I described in part 3 with a repeat of 0.
Regarding (3), I made some modifications such that the roll tables read from 01-100 going down the table. That also means the roll tables are transposed compared to the image above, which I find much easier for play.
And here is what it looks like:
How do we do on accuracy? Here’s a comparison of the two matrices:
The transition matrices here are way nicer. That said, there is some error with the daily probabilities, typically on the order of ~10%. This is, I think, an unavoidable consequence of using just the transitions and throwing out the rare days. If we often get Cold, Overcast from low probability extreme cold days which are cut from the table, then our rolled data will underestimate, for example.
Next, error metrics. Remember, for the single d100 table, we had:
Daily Error: 0.0019
Unweighted Transition Error: 0.028
Weighted Transition Error: 0008
With the weather matrix, we achieve:
Daily
probabilities: 0.0043
Transition matrix (unweighted): 0.017
Transition matrix (weighted): 0.0001
We do about half as well (but still quite well) on the daily probabilities, and see improvements in the transition matrices, especially the weighted one. Because the unweighted transition matrix deals with states we don’t access, no strategy is going to improve on those. For the states we do access, we get the transitions very accurate.
This also achieves what I set out to do regarding gameability—with these transitions, the players know that cold days will follow cold days and warm days will follow warm ones. While there can be more creative strategies to generate days, like the hexflower or creative methods that roll independently on multiple tables, at this point I find it unlikely that they’ll be more satisfying from a simulationist angle. It’s hard to beat a single roll on a matrix from a gamist perspective.
That said, there are a few weaknesses of these matrices. The first is seasonality—it doesn’t get transitions from early to late spring, for example. (You could but you’d need more matrices). Also, you have to construct each table for a new location and that takes some effort. More importantly, it is hard to modify—say I want “Chicago, but 10 degrees colder”. With other methods this wouldn’t be hard, but I don’t think its plausible to modify a weather matrix like that. The work is automated and you get what you get. Finally, there are these lingering issues of wind and fog.
Future installments will take a look at those in more detail. For the moment I’m happy with my design, so I decided to make examples for several locales.
No comments:
Post a Comment