You are viewing an old revision of this post, from November 3, 2012 @ 15:48:24. See below for differences between this version and the current revision.

I’m working on trying to get the 60-second achievement in Hyper Hexagonest mode in Super Hexagon; for a while, I’ve had the feeling that 60 seconds is achievable with my current skill level (and that my current skill level isn’t increasing particularly quickly), I just need to have a lucky run where my guesses and reflexes hold up enough times in a row. (For what it’s worth, my current high score is 48.43 seconds; I’ve broken 40 seconds maybe 10 times?)

Which raises the question: how often would I expect to have such a lucky run? Unlike the other Super Hexagon modes, that question feels relatively tractable to calculate for Hyper Hexagonest. You get the same collection of patterns throughout that mode (at last as far I’ve pushed it, I assume that changes at 60 seconds), and it doesn’t seem to speed up at all (except maybe right at the beginning). There are one or two visual distractions it adds (e.g. sometimes the screen zooms in and out); I’m not sure if those happen at regular times or are part of the patterns, but I don’t think that happens more as the time progresses. So, for all I know, there’s a fixed percentage that I’ll pass each pattern, and (assuming we don’t believe in hot hands or nerves), we should be able to map my chances of reaching a given time with an exponential curve.

And, of course, the exponent matters: if, say, I reach 20 seconds in 1 out of 5 times, then I should reach 60 seconds in 1 out of 125 times (clearly not the case!), or if I reach 20 seconds in 1 out of 20 times, then I should reach 60 seconds in 1 out of 800 times (plausible, and holds out enough hope that I should keep going). But if I only reach 20 seconds in 1 out of 40 times, then I’d only reach 60 seconds in 1 out of 64,000 times, and I should just cut my losses now.

So I recorded my times on 200 tries. Here’s the raw data, in case anybody wants to play around with it; the numbers are my time in seconds, rounded down to the nearest second. If we group it in 10-second chunks (where 10–20 includes 10 seconds but doesn’t include 20), then we have:

- 0–10 seconds: 110 runs
- 10–20 seconds: 55 runs
- 20–30 seconds: 22 runs
- 30–40 seconds: 8 runs
- 40–50 seconds: 5 runs
- >50 seconds: no runs

It looks like the numbers are getting cut by a little more than half every 10 seconds; if we take the first 10 seconds as the best indicator of the decay factor, then my chances of reaching a given time get multiplied by .45 every 10 seconds. That would lead to a prediction of

- >10 seconds: 90.0 runs predicted, 90 runs actual
- >20 seconds: 40.5 runs predicted, 35 runs actual
- >30 seconds: 18.2 runs predicted, 13 runs actual
- >40 seconds: 8.2 runs predicted, 5 runs actual
- >50 seconds: 3.7 runs predicted, 0 runs actual
- >60 seconds: 1.7 runs predicted, 0 runs actual

That’s clearly not right: all the predictions except for the first one are high. So I guess that means that the jump from 0 to 10 seconds is easier than the subsequent jumps.

If I look at the other ratios to calculate how much my chances are of reaching 10 seconds, then I get actually a surprisingly consistent answer:

- (>10 seconds) / (>0 seconds) = 90 / 200 = .45
- (>20 seconds) / (>10 seconds) = 35 / 90 = .39
- (>30 seconds) / (>20 seconds) = 13 / 35 = .37
- (>40 seconds) / (>30 seconds) = 5 / 13 = .38
- (>50 seconds) / (>40 seconds) = 0 / 5 = .0

The first of those is unexpectedly high and the last is really really low, but the middle are consistent. (Honestly, way too consistent given the sample sizes.) And maybe we can explain the last with nerves and the first with a slow ramp-up? If we assume that I’ll reach 10 seconds in 45% of my attempts and that I’ll reach the next 10 second mark in 38% of my attempts for times after 10 seconds, then that predicts that, out of 200 tries, I’ll reach:

- >10 seconds: 90.0 runs predicted, 90 runs actual
- >20 seconds: 34.2 runs predicted, 35 runs actual
- >30 seconds: 13.0 runs predicted, 13 runs actual
- >40 seconds: 4.9 runs predicted, 5 runs actual
- >50 seconds: 1.9 runs predicted, 0 runs actual
- >60 seconds: .7 runs predicted, 0 runs actual

Obviously I’m cooking the books somewhat to make those first four predictions look good. Still, this is enough to suggest to me that I should keep on plugging away: assuming that the game doesn’t suddenly get harder at 45 seconds (which isn’t beyond the realm of possibility given my observed performance), then I should reach 60 seconds after a few hundred more attempts. And that I am willing to try; if the numbers were suggesting it would take a few tens of thousands of attempts, then I’d be a lot more dubious about the wisdom of that attempt.

#### Post Revisions:

- November 3, 2012 @ 21:47:50 [Current Revision] by David Carlton
- November 3, 2012 @ 15:49:11 by David Carlton
- November 3, 2012 @ 15:48:24 by David Carlton

#### Changes:

November 3, 2012 @ 15:48:24 | Current Revision | ||
---|---|---|---|

Content | |||

Deleted: I'm working on trying to get the 60-second achievement | Added: I'm working on trying to get the 60-second achievement for Hyper Hexagonest mode in <a href="http:// www.bactrian.org/~carlton/ dbcdb/1727/"><cite>Super Hexagon</cite></a>; for a while, I've had the feeling that 60 seconds is achievable with my current skill level (and that my current skill level isn't increasing particularly quickly), I just need to have a lucky run where my guesses and reflexes hold up enough times in a row. (For what it's worth, my current high score is 48.43 seconds; I've broken 40 seconds maybe 10 times?) | ||

Unchanged: Which raises the question: how often would I expect to have such a lucky run? Unlike the other <cite>Super Hexagon</cite> modes, that question feels relatively tractable to calculate for Hyper Hexagonest. You get the same collection of patterns throughout that mode (at last as far I've pushed it, I assume that changes at 60 seconds), and it doesn't seem to speed up at all (except maybe right at the beginning). There are one or two visual distractions it adds (e.g. sometimes the screen zooms in and out); I'm not sure if those happen at regular times or are part of the patterns, but I don't think that happens more as the time progresses. So, for all I know, there's a fixed percentage that I'll pass each pattern, and (assuming we don't believe in hot hands or nerves), we should be able to map my chances of reaching a given time with an exponential curve. | Unchanged: Which raises the question: how often would I expect to have such a lucky run? Unlike the other <cite>Super Hexagon</cite> modes, that question feels relatively tractable to calculate for Hyper Hexagonest. You get the same collection of patterns throughout that mode (at last as far I've pushed it, I assume that changes at 60 seconds), and it doesn't seem to speed up at all (except maybe right at the beginning). There are one or two visual distractions it adds (e.g. sometimes the screen zooms in and out); I'm not sure if those happen at regular times or are part of the patterns, but I don't think that happens more as the time progresses. So, for all I know, there's a fixed percentage that I'll pass each pattern, and (assuming we don't believe in hot hands or nerves), we should be able to map my chances of reaching a given time with an exponential curve. | ||

Unchanged: And, of course, the exponent matters: if, say, I reach 20 seconds in 1 out of 5 times, then I should reach 60 seconds in 1 out of 125 times (clearly not the case!), or if I reach 20 seconds in 1 out of 20 times, then I should reach 60 seconds in 1 out of 800 times (plausible, and holds out enough hope that I should keep going). But if I only reach 20 seconds in 1 out of 40 times, then I'd only reach 60 seconds in 1 out of 64,000 times, and I should just cut my losses now. | Unchanged: And, of course, the exponent matters: if, say, I reach 20 seconds in 1 out of 5 times, then I should reach 60 seconds in 1 out of 125 times (clearly not the case!), or if I reach 20 seconds in 1 out of 20 times, then I should reach 60 seconds in 1 out of 800 times (plausible, and holds out enough hope that I should keep going). But if I only reach 20 seconds in 1 out of 40 times, then I'd only reach 60 seconds in 1 out of 64,000 times, and I should just cut my losses now. | ||

Unchanged: So I recorded my times on 200 tries. Here's the <a href="http:// malvasiabianca.org/wp-content/ uploads/2012/ 11/super-hexagon- times.txt">raw data</a>, in case anybody wants to play around with it; the numbers are my time in seconds, rounded down to the nearest second. If we group it in 10-second chunks (where 10–20 includes 10 seconds but doesn't include 20), then we have: | Unchanged: So I recorded my times on 200 tries. Here's the <a href="http:// malvasiabianca.org/wp-content/ uploads/2012/ 11/super-hexagon- times.txt">raw data</a>, in case anybody wants to play around with it; the numbers are my time in seconds, rounded down to the nearest second. If we group it in 10-second chunks (where 10–20 includes 10 seconds but doesn't include 20), then we have: | ||

Unchanged: <ul> | Unchanged: <ul> | ||

Unchanged: <li>0–10 seconds: 110 runs</li> | Unchanged: <li>0–10 seconds: 110 runs</li> | ||

Unchanged: <li>10–20 seconds: 55 runs</li> | Unchanged: <li>10–20 seconds: 55 runs</li> | ||

Unchanged: <li>20–30 seconds: 22 runs</li> | Unchanged: <li>20–30 seconds: 22 runs</li> | ||

Unchanged: <li>30–40 seconds: 8 runs</li> | Unchanged: <li>30–40 seconds: 8 runs</li> | ||

Unchanged: <li>40–50 seconds: 5 runs</li> | Unchanged: <li>40–50 seconds: 5 runs</li> | ||

Unchanged: <li>>50 seconds: no runs</li> | Unchanged: <li>>50 seconds: no runs</li> | ||

Unchanged: </ul> | Unchanged: </ul> | ||

Unchanged: It looks like the numbers are getting cut by a little more than half every 10 seconds; if we take the first 10 seconds as the best indicator of the decay factor, then my chances of reaching a given time get multiplied by .45 every 10 seconds. That would lead to a prediction of | Unchanged: It looks like the numbers are getting cut by a little more than half every 10 seconds; if we take the first 10 seconds as the best indicator of the decay factor, then my chances of reaching a given time get multiplied by .45 every 10 seconds. That would lead to a prediction of | ||

Unchanged: <ul> | Unchanged: <ul> | ||

Unchanged: <li>>10 seconds: 90.0 runs predicted, 90 runs actual</li> | Unchanged: <li>>10 seconds: 90.0 runs predicted, 90 runs actual</li> | ||

Unchanged: <li>>20 seconds: 40.5 runs predicted, 35 runs actual</li> | Unchanged: <li>>20 seconds: 40.5 runs predicted, 35 runs actual</li> | ||

Unchanged: <li>>30 seconds: 18.2 runs predicted, 13 runs actual</li> | Unchanged: <li>>30 seconds: 18.2 runs predicted, 13 runs actual</li> | ||

Unchanged: <li>>40 seconds: 8.2 runs predicted, 5 runs actual</li> | Unchanged: <li>>40 seconds: 8.2 runs predicted, 5 runs actual</li> | ||

Unchanged: <li>>50 seconds: 3.7 runs predicted, 0 runs actual</li> | Unchanged: <li>>50 seconds: 3.7 runs predicted, 0 runs actual</li> | ||

Unchanged: <li>>60 seconds: 1.7 runs predicted, 0 runs actual</li> | Unchanged: <li>>60 seconds: 1.7 runs predicted, 0 runs actual</li> | ||

Unchanged: </ul> | Unchanged: </ul> | ||

Unchanged: That's clearly not right: all the predictions except for the first one are high. So I guess that means that the jump from 0 to 10 seconds is easier than the subsequent jumps. | Unchanged: That's clearly not right: all the predictions except for the first one are high. So I guess that means that the jump from 0 to 10 seconds is easier than the subsequent jumps. | ||

Unchanged: If I look at the other ratios to calculate how much my chances are of reaching 10 seconds, then I get actually a surprisingly consistent answer: | Unchanged: If I look at the other ratios to calculate how much my chances are of reaching 10 seconds, then I get actually a surprisingly consistent answer: | ||

Unchanged: <ul> | Unchanged: <ul> | ||

Unchanged: <li>(>10 seconds) / (>0 seconds) = 90 / 200 = .45</li> | Unchanged: <li>(>10 seconds) / (>0 seconds) = 90 / 200 = .45</li> | ||

Unchanged: <li>(>20 seconds) / (>10 seconds) = 35 / 90 = .39</li> | Unchanged: <li>(>20 seconds) / (>10 seconds) = 35 / 90 = .39</li> | ||

Unchanged: <li>(>30 seconds) / (>20 seconds) = 13 / 35 = .37</li> | Unchanged: <li>(>30 seconds) / (>20 seconds) = 13 / 35 = .37</li> | ||

Unchanged: <li>(>40 seconds) / (>30 seconds) = 5 / 13 = .38</li> | Unchanged: <li>(>40 seconds) / (>30 seconds) = 5 / 13 = .38</li> | ||

Unchanged: <li>(>50 seconds) / (>40 seconds) = 0 / 5 = .0</li> | Unchanged: <li>(>50 seconds) / (>40 seconds) = 0 / 5 = .0</li> | ||

Unchanged: </ul> | Unchanged: </ul> | ||

Unchanged: The first of those is unexpectedly high and the last is really really low, but the middle are consistent. (Honestly, way too consistent given the sample sizes.) And maybe we can explain the last with nerves and the first with a slow ramp-up? If we assume that I'll reach 10 seconds in 45% of my attempts and that I'll reach the next 10 second mark in 38% of my attempts for times after 10 seconds, then that predicts that, out of 200 tries, I'll reach: | Unchanged: The first of those is unexpectedly high and the last is really really low, but the middle are consistent. (Honestly, way too consistent given the sample sizes.) And maybe we can explain the last with nerves and the first with a slow ramp-up? If we assume that I'll reach 10 seconds in 45% of my attempts and that I'll reach the next 10 second mark in 38% of my attempts for times after 10 seconds, then that predicts that, out of 200 tries, I'll reach: | ||

Unchanged: <ul> | Unchanged: <ul> | ||

Unchanged: <li>>10 seconds: 90.0 runs predicted, 90 runs actual</li> | Unchanged: <li>>10 seconds: 90.0 runs predicted, 90 runs actual</li> | ||

Unchanged: <li>>20 seconds: 34.2 runs predicted, 35 runs actual</li> | Unchanged: <li>>20 seconds: 34.2 runs predicted, 35 runs actual</li> | ||

Unchanged: <li>>30 seconds: 13.0 runs predicted, 13 runs actual</li> | Unchanged: <li>>30 seconds: 13.0 runs predicted, 13 runs actual</li> | ||

Unchanged: <li>>40 seconds: 4.9 runs predicted, 5 runs actual</li> | Unchanged: <li>>40 seconds: 4.9 runs predicted, 5 runs actual</li> | ||

Unchanged: <li>>50 seconds: 1.9 runs predicted, 0 runs actual</li> | Unchanged: <li>>50 seconds: 1.9 runs predicted, 0 runs actual</li> | ||

Unchanged: <li>>60 seconds: .7 runs predicted, 0 runs actual</li> | Unchanged: <li>>60 seconds: .7 runs predicted, 0 runs actual</li> | ||

Unchanged: </ul> | Unchanged: </ul> | ||

Deleted: Obviously I'm cooking the books somewhat to make those first four predictions look good. Still, this is enough to suggest to me that I should keep on plugging away: assuming that the game doesn't suddenly get harder at 45 seconds (which isn't beyond the realm of possibility given my observed performance), then I should reach 60 seconds after a few hundred more attempts. And that I am willing to try; if the numbers were suggesting it would take a few tens of thousands of attempts, then I'd be a lot more dubious about the wisdom of that attempt. | Added: Obviously I'm cooking the books somewhat to make those first four predictions look good. Still, this is enough to suggest to me that I should keep on plugging away: assuming that the game doesn't suddenly get harder at 45 seconds (which isn't beyond the realm of possibility given my observed performance), then I should reach 60 seconds after a few hundred more attempts. (One out of every 280 attempts, if the above formula holds.) And that I am willing to try; if the numbers were suggesting it would take a few tens of thousands of attempts, then I'd be a lot more dubious about the wisdom of that attempt. | ||

Added: <strong>Update:</strong> And, of course, later on this afternoon, I did in fact break 60 seconds; I didn't count, but maybe it took another 30 tries or so? So my belief that that goal was in reach, and that it was mostly a matter of luck as to when I'd get there, turned out to be correct. |

*Note:* Spaces may be added to comparison text to allow better line wrapping.

I’m glad you posted something about this as I have been thinking about the chances of patterns occurring in both Super Hexagon and Canabalt lately. My recent success in both games has had me musing about trying to replicate how often certain sets of patterns happen to try to implement a similar game mechanic. (As an aside, I came up with an alternating 17%/23% chance of a ‘threat’ for an auto-runner game over the weekend that seems to approximate a decent level of unpredictability for the player.)

For me at least, I tend to perform better when it is a pattern I am highly familiar with in Super Hexagon. Many — if not most? — of the patterns for the first 60 seconds in Hexagon mode I have memorized, however, when I transition past 60 seconds mark and come across unfamiliar patterns, I tend to fail.

Given that, I have been wondering, especially in light of treating the patterns as a grammar, if the other modes are a refinement of the mechanics or merely a different ‘dialect’ of the language already at play in Hexagon mode. For example, do you feel you can transfer your fluency between modes, or are each their own specialized version of the language? Obviously, a certain amount of muscle memory carries over, but your brain does still have to ‘translate’ the pattern each time to determine where the exit will be.

11/4/2012 @ 8:47 pm

Each new mode introduces some new patterns; some carry over (e.g. the basic 180 degree turn), but there’s always something new you haven’t seen before. (And frequently a speed boost, too.) And if you want to practice at the patterns/speed that you’ll see after the first 60 seconds of one of the original 3 modes, you can play the ‘hyper’ version of that mode, the hyper versions are basically the original modes 60 seconds in. (Or maybe 65-70 seconds in, it takes a little while to come up to full speed.)

There’s definitely a lot of overlap in the learning; for me, I think the main difference past the first couple modes is really more in the speed than in the new patterns. The transition from Hexagon to Hyper Hexagon was particularly interesting in that regard: Hyper Hexagon doesn’t throw very many new patterns at you, it’s mostly the same patterns you’ve been seeing in the 20-60 second range of Hexagon, but I found I had to make a conscious decision to react more quickly. Once I’d made that decision, though, the original Hexagon mode suddenly became a lot easier!

I like your note about what chances make for interesting variation in an auto-runner. I’ve been impressed by Super Hexagon’s leveling curve, he must have spent a fair amount of time tuning this game, I would think. I wonder what Pat would dig up if he did a reverse design of either Super Hexagon or Cannabalt…

11/4/2012 @ 9:05 pm

I’ve actually been working towards a reverse design (of sorts) of Cannabalt in my goals of first determining how to create an auto-runner (which I did) and then in figuring out the chances of things occurring. Given that Cannabalt was developed in Flixel, for example, I can safely assume that the randomness comes from a deterministic PRNG.

However, I am a bit stuck on trying to crack the rest of it — which is maybe where you can help me, should you so be inclined. What is a high enough data set to approximate the percentages? Hundreds of runs? Thousands?

It was your tabulation of data in this post that gave me the idea in the first place. I was already trying to figure out things like the minimal distance between buildings and crate placement. Now, I’m thinking I might be able to breakdown more of the game by actually recording occurrences as I play and then looking at it in chunks too. I think, and this is merely conjecture, many things are actually based on the current performance than randomness — or, at least, that’s how I am approaching my version of the same mechanics. Roller-coasting the difficulty within a range appeals to me.

(Sorry, none of that is actually about Super Hexagon, I just realized.)

11/4/2012 @ 9:28 pm

I was certainly surprised at how consistent results I got out of 200 runs. To be honest, I think some of that was luck, but I don’t think the percentages I came up with are too far off. I haven’t tried to formally calculate any sorts of margins of error, though. (And my stats background is actually super weak.)

Though I was gathering data in about as easy a context as there is within SH: I was doing it in a very homogeneous game mode, so I didn’t have to worry about new patterns appearing or about the game speeding up. Not sure how Cannabalt handles those factors.

I would definitely recommend gathering data, though, I would expect something interesting to come out of that.

11/4/2012 @ 9:59 pm

[…] the game to anybody who is interested in questions of streaks and hot hands in sports: I only spent a little time gathering data there, but I suspect that there’s a lot more information that can be mined […]

11/23/2012 @ 11:20 pm