Inner workings of this game and some guesswork/speculation
4 years ago
Utah, USA

There are 6^6, or 46,656 possible row configurations from 111111 to 666666 and everything in between. I am assuming all of these combos can happen during the course of the game.

I have observed that there have been no repeats in looking at about 100 such rows. That is to be expected as my sample is pretty small. I was expecting that if I got one row repeating, every other row would repeat.

From doing some TAS on this game, there seems to be a dice row seeding algorithm that, as far as I can tell, is based on whatever dice are visible, or possibly just the top-most row. For example, if I let the dice fall on me without removing rows, the rows will consistently be the same. If I rewind and remove, say, one row, the remaining hidden rows will be different. I believe the CPU's drop area is governed by the same rules. As far as I can tell, the human's actions don't affect the dice rows that fall for the CPU and vice-versa.

I would say that it would be next to impossible for an average human brain to be able to do real-time calculations to predict the next rows, but I am guessing someone could figure out the next hidden row given the top-most row. Just a guess there.

My TAS took about 8 minutes and change. This suggest that there is a significant RNG component, or I'm not great at TASes, or some of both. I reckon I maximized the rows I got and the CPU did seem to get a good number of five-lines.

The current WR appears to be a combination of good RNG and even better execution.

Utah, USA

Also, I could be overthinking this a bit :D

Utah, USA

Follow-up: I played on two different machines and on both I got a fairly memorable starting line of 111111. I had recorded this previously as well as the eight lines above it. When 111111 showed up the second time on the second machine, I jotted down the line above. They matched: 353411. I discovered another first line whose line above was also the same on both machines. While not scientific, I'm satisfied that these things are predictable.

This suggests a few things:

  • It supports my assumption that there is some kind of seeding algorithm that is predictable. One could perhaps memorize patterns if they were a crazy person. Which is kind of the nature of speedrunning, is it not.
  • As both repeating rows were starting rows, perhaps the seeding works in such a way that a very small set of the ~46k combos are eligible for being starting rows.

Now, the real challenge is having the CPU get unfavorable patterns. The only way I know is to limit the dice they have to work with, and then pummel them with four- and five-lines until they're overwhelmed.

Chicago, IL, USA

I've researched the RNG in this game and found the following:

  • Dice are generated via an algorithm that uses a starting seed.
  • There are 255 possible seeds (1-255), and each seed generates a cycle of 32767 dice.
  • The seed is pulled from a frame counter which starts at the start of the game, and pauses if the game is paused (!).
  • The seed is reset at the start of every round.
  • Dice rows are created by pulling the next 6 dice from the cycle. In two player battles (both 2-player and tournament), the Player 1 row is generated first, followed by Player 2, then Player 2, then Player 1, and repeats in this manner.
  • In two player games, when attacks are made, rows are pulled from the cycle immediately, meaning that attacks will change the pattern of dice rows given to each player.
  • Fun fact: the "111111" start is most likely to occur because it can happen on 0x00 AND 0x01 (0x01 is used as the seed if the frame counter is at 0x00).

Technical details: Frame counter is at $0000 Seed (and workspace) is at $0582, $0583, and $0584 Current puzzle status information is at $0480

Rough python equivalent of the PRNG algorithm (& is bitwise-AND, ^ is bitwise-XOR):

while True:
  i = seed1 & 2
  j = (seed2 & 2) ^ i
  c = 0 if j == 0 else 1
  k = (seed1 >> 1) | (c << 7)
  c = seed1 % 2
  seed1 = k
  seed2 = (seed2 >> 1) | (c << 7)
  die = (seed1 % 6) + 1
Bewerkt door de auteur 4 years ago
ShuriBear vinden dit leuk
Game statistieken
Volgers
26
Runs
44
Spelers
29
Laatste threads
Geplaatst 1 year ago
1 antwoord
Geplaatst 4 years ago
2 antwoorden