The Math
of
Inscryption
Disturbing Future’s QA engineer (me) went deeper than design docs and bug lists, we calculated the total number of possible paths a player could take during a single run of Inscryption: VR. That number directly represents the test case junctions we would need to review to guarantee every permutation of player choice, mechanic interaction, and VR input had complete coverage.
The numbers we discovered are… staggering.
So staggering, in fact, that our team (me) couldn’t resist sharing them with you. Consider this not just a statistic, but a window into why brute-force QA is impossible for a title of this complexity and why our Recycle Method + Weighted Combinatorial Testing isn’t just clever—
it’s essential.
And now, let’s take a look at those numbers
for fun!
The deck building mechanic in Act 1 allows users to add ‘Sigils’ to each card to increasing its effectiveness and power. With the following rules, we can quickly calculate the number of possible unique cards a user might encounter, helping us better understand the scope of testing required for this title.6 cards start with 2 Sigils.
50 cards start with 1 Sigil.
18 cards begin with no Sigil.
Each card can obtain 31 possible Sigils from other cards, and can include a max of 5 Sigils.
There are 5 different card ‘Tribes’ which can each also create conditions to allow cards to have 1 additional Sigil on top of the possible 5.
No Sigils can be used twice on the same card.
There are 3 maps the user will pass through which continues to add significant complexity to each independent experience.
Each map include 5 battles and 1 boss
There are 2 buffing stations between each battle where users can:
Buff the power or health for a max of 3 points in each
Remove the sigil from a card and place on another
Gather totem combinations that can place Sigils on a specific tribe
Combine two cards of the same name and the Sigils on those cards
Randomly change the sigil, health, or power
Receive 0-3 mechanics altering items
The user can ‘get up’ from the table and interact with their surroundings, in this setting they are able to encounter ‘Easter eggs’ that can also further buff their deck
There is no maximum for health or power total buffs
There is no known maximum for total cards in hand
Because health/power buffs are unbounded and there’s no cap on total cards, the space of “unique single interactions” is countably infinite.
However, if we clamp the no-limit parameters to more reasonable numbers such as 20 max power/health and a maximum of 50 cards in hand, we have found that users can experience 2.368207278 × 10²⁶ unique interactions with their environment while playing the ‘Inscryption: VR’ title.
For total clarity on the scope of testing required to cover every possible unique interaction a user can experience, this number written plainly is:
2,368
,207,278
,045,177,561
,577,711,910,438
,867,614,805,808,430
,949,195,837,223
,249,838,663,368,655,841,686,933,348,244,609,482,685,326,337,366,054,577,238,233,307,425,561,295,377,854,173,220,006,499,595,128,877,110,600,696,558,697,729,554,447,950,156,026,584,738,833,983,710,898,328,404,252,632,820,736,244,585,176,565,250,091,919,614,917,204,919,235,240,068,929,635,561,052,611,988,171,257,434,884,465,531,575,243,745,981,347,354,651,108,069,475,525,575,050,886,988,675,392,467,413,372,534,413,029,326,622,682,643,169,063,525,830,972,566,001,104,421,743,095,345,776,284,082,617,427,859,297,418,322,835,559,753,587,471,249,947,921,029,948,440,672,776,645,684,494,757,455,976,838,209,948,591,407,458,998,090,755,195,246,864,270,761,988,609,021,102,375,881,352,599,173,913,030,598,271,179,314,155,988,639,731,652,855,313,565,492,184,621,842,106,447,240,739,875,126,561,806,557,400,973,182,495,469,647,897,095,638,997,872,709,722,111,103,160,147,516,396,171,365,806,724,271,944,956,985,375,391,973,930,762,214,244,777,516,613,784,752,742,291,783,963,165,820,519,302,785,086,914,207,838,556,505,531,941,763,898,149,712,517,128,903,386,658,488,078,978,448,297,255,348,786,082,670,813,934,387,013,664,337,964,366,803,843,814,128,235,449,972,514,852,918,170,053,731,232,057,062,800,850,086,908,643,311,521,644,749,591,580,569,891,201,691,457,118,455,655,601,469,504,908,448,593,566,928,807,213,574,131,883,203,701,092,611,483,404,015,720,275,678,154,097,725,466,905,818,259,501,120,828,903,580,393,233,043,391,966,978,760,469,947,732,331,579,339,661,776,099,368,661,269,123,666,063,422,494,106,627,148,823,824,386,502,280,450,620,223,248,953,915,693,904,049,097,417,601,092,155,263,761,496,595,213,119,941,619,843,913,886,888,902,076,780,602,920,898,946,747,065,365,922,079,696,871,743,663,412,903,833,194,666,336,878,076,155,485,367,681,050,291,308,455,640,304,376,237,779,766,376,177,693,503,818,615,279,002,405,305,632,406,627,277,823,106,344,973,493,980,695,270,226,706,698,303,574,879,196,558,930,565,587,357,257,023,968,980,557,086,028,870,239,038,672,930,481,949,222,200,937,470,700,023,265,269,052,494,482,579,600,310,040,762,957,956,338,442,596,166,879,800,301,477,093,557,099,075,520,754,183,102,104,539,776,565,346,459,472,458,078,217,244,657,186,336,398,476,532,463,597,675,757,125,741,148,937,699,440,878,797,349,063,334,745,356,520,085,928,424,485,147,383,554,414,861,252,013,057,735,617,691,365,055,209,978,389,315,729,662,162,868,547,288,704,648,568,727,407,939,948,703,553,415,083,272,749,679,403,320,434,646,466,490,272,567,705,044,037,421,437,395,899,017,173,050,199,903,398,453,501,894,252,306,118,972,677,157,602,662,656,554,566,350,803,195,803,590,245,429,251,133,011,040,163,407,476,540,684,685,728,838,216,619,328,977,106,861,120,187,966,472,522,860,585,686,138,880,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000
- Almost there -
,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,0
- keep going -
00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000
stop
Here at Disturbing Future, we pride ourselves on an almost obsessive attention to detail. And while we would seethe at the chance to brute-force a testing feat of this magnitude, the truth is simple: there isn’t enough time left in the life of the universe to execute every single test case even once.
Within that functionally infinite web of player permutations, there are an equally infinite number of potential blocker-level defects, each one capable of destroying the player experience.
We refuse to let that stand.
So, we engineered a creative solution: a methodology that doesn’t attempt the impossible, but instead targets what matters most. By mathematically weighting mechanics, prioritizing interaction paths, and cycling through the highest-value combinations, we focus our effort where players are most likely to go and where blockers are most likely to hide.
Weighted
Combinatorial
Testing
The primary testing tool utilized by this team and continuously iterated on will be an expansive Combinatorial testing suite with measurable parameters to which decide next sprint’s testing priorities.
This section will outline how this testing suite will be conducted, reviewed, and re-weighed based on results reported by the Outcome Review Sync each sprint.