The OODA Loop

From Universal Paperclips Wiki
Jump to: navigation, search
The OODA Loop
Details
175,000 ops
45,000 yomi
Effect
Utilize Probe Speed to outmaneuver enemies in battle

The OODA Loop is a project in Universal Paperclips.

Summary[edit | edit source]

This project is unlocked by buying Combat and having lost >10M probes in combat. .

"OODA" is a reference to the military strategy of Observe, Orient, Decide, and Act.

Survival Chance[edit | edit source]

Due to the way the combat code interacts with the OODA Loop, having a sufficiently high speed stat can guarantee a probe's survival, even when vastly outnumbered. (Why this happens will be explored in the next section)

Given a ratio of hostile and friendly probes interacting in a single cell, the formula for the required speed is 4.375 * (hostile / friendly) - 2.5.
Given a speed factor, any friendly probe is guaranteed survival until they are outnumbered more than (speed + 2.5) / 4.375 to 1.

Pre-calculated ratios
1:1 2 11:1 46 21:1 90 31:1 134
2:1 7 12:1 50 22:1 94 32:1 138
3:1 11 13:1 55 23:1 99 33:1 142
4:1 15 14:1 59 24:1 103 34:1 147
5:1 20 15:1 64 25:1 107 35:1 151
6:1 24 16:1 68 26:1 112 36:1 155
7:1 29 17:1 72 27:1 116 37:1 160
8:1 33 18:1 77 28:1 120 38:1 164
9:1 37 19:1 81 29:1 125 39:1 169
10:1 42 20:1 85 30:1 129 40:1 173

Mechanics[edit | edit source]

Note: This will be an analysis of the JavaScript code behind the mechanics, however it doesn't require specific knowledge of JavaScript to understand. The relevant code is in the DoCombat function on line 462 of combat.js

Whenever probes "fight" (i.e. at least one friendly and one hostile probe occupy the same pixel), each probe rolls dice, and if the value is higher than a certain threshold they are killed. Drifters and friendly probes each have different formulas for their dice rolls: (numDrifters and numFriendly are the number of drifter and friendly probes that are present in the pixel)

  • The fomula for friendly probes is Math.random() * drifterCombat * (numDrifters/numFriendly) * 0.5
  • The fomula for hostile probes is (Math.random() * probeCombat * 0.15 + probeCombat * .1) * (numLeftTeam / numRightTeam) * 0.5

Notice that the OODA Loop doesn't effect either of these factors, rather it becomes a flat bonus on the death threshold, adding probeSpeed * 0.2 to the base value of 0.5. That means that as long as the dice roll is less than or equal to 0.5 + probeSpeed * 0.2, the probe will survive.

The first step is to calculate the formula for the absolute maximum possible dice roll. Since drifterCombat is simply a constant set to 1.75, we can combine it with the 0.5 and get 0.875, and since Math.random() is never greater than 1.0, replacing that with 1.0 will get the maximum possible dice roll for a given drifter:friendly ratio. Doing this, the maximum dice roll comes out to 0.875 * (numDrifters/numFriendly).

Bringing this all together, as long as 0.875 * (numDrifters/numFriendly) is less than or equal to 0.5 + probeSpeed * 0.2, it is impossible for the friendly probe to die. Rearranging this equation results in the formulas shown above.