Warning – If you don’t want to read minor spoilers that apply to the game’s mechanics then do not read this!
Warning – If you are not interested in learning how the game produces its outcomes and effects or you are not interested in reloading a saved game to produce a more desirable result then this guide will be of little use to you.
“Random” is Pseudo-random and “Seeding” is pre-packaged outcomes (if you want to skip the long explanation scroll down).
Random Number Generation
A pseudo-random number generator (PRNG), is a deterministic algorithm designed to produce repeatable, but seemingly random sequences of numbers. Properly developed the sequence of numbers generated will pass any randomness test, while still being repeatable. The repeatable nature is done by requiring a starting input or "seed" value which acts as a kernel for manipulating the sequence in an unpredictable manner. This can be very useful for testing simulations which depend on random numbers but can create problems for applications which depend on random numbers but do not pick an adequate starting seed to ensure that a non-predictable sequence of numbers is generated each run-through. For this reason most computer programs automatically use the current time as the initial seed. This will guarantee that no two sequential runs of a program will generate the same sequence.
For example for two given seeds 0 and 1 a given random function may generate the following sequences.
RAND(0) = 3,1,4,1,5,9,2,6,5,3,5,9
RAND(1) = 2,7,1,8,2,8,1,8,2,8,4,6
In practice this would be implemented using two functions. The first SRAND(X) would be called once at any time to seed the pseudo-random number generator and a second RAND(X) would produce the next number in the sequence. Storing a given seed and the current index in the sequence allows developers to produce unpredictable outcomes going forward, which can also be repeated. Pseudo-random numbers can be generated at a much higher bit rate than true random numbers, which depend on some hardware component for generating random sequences from some constantly changing sensor value. Pseudo-random numbers have the additional benefit of allowing repeatable tests given an interesting outcome for further analysis, or in the case of XCOM making sure you are never at the mercy of your local power company.
When balancing XCOM it was decided that that in order to LOCK players in to their choices and to help players repeat "lucky" events if for some reason they were forced to reload a save prior to those events they would store the SEED and INDEX inside the save file so they could resume the game exactly where the save left it. In normal games SEEDS are chosen based off the current time or some other input source when the game is initialized and such no guarantee can be given. Below is a list of ways to manipulate this to your advantage.
How this Applies to XCOM: Enemy Unknown
Most of the key mechanics in XCOM: Enemy Unknown rely on “Seed packages”, combat maps for example:
- Scenario 1: In your saved game Assault Soldier Bill starts at location Y, you decide to move him 3 squares north from Y and take a standard shot at Enemy A, who shows 90% chance of being hit. Bill’s shot misses, Enemy A hits Bill for 6, Enemy B pops from behind cover and hits Bill for 4, Enemy C moves to flank Bill and critical on him for 9, Bill dies. No matter how many times you reload that save, if you move Bill 3 squares north from Y and take a standard shot at Enemy A, Bill will miss and end up dead from the 6, 4, 9 hit combo.
- Scenario 2: You Run and Gun Bill 2 squares north and 5 squares west from location Y, take cover behind a fallen log next to squad-mate Sue and Rapid Fire on Enemy B who shows a 30% chance to hit, Bill hits for 5 and 7 killing Enemy B, Enemy A throws a grenade at Bill and Sue hitting both for 5 each, and Enemy C misses. Again no matter how many times you reload the Save, Run & Gun 2 north, 5 west, Rapid Fire on Enemy B, Bill and Sue will take 5 each with Enemy B dead.
Therefore, the same action produces the same result, while a different action produces a different result. Each user action causes a new stage of the seed's "growth" or evolution. If the user repeats the same actions the seed will "grow" into the same "shape", but each action the user changes will consequently change the "shape" of the seed's "growth" and the outcomes that go with it.
XCOM Seed Mechanics
Seed Mechanics in the game that rely on different choices in order to produce different results
- Ground Combat – you must use different tactics, movement, gear, special attacks, or turn order to produce different results.
- Air Combat – you must use a different ship, different weapon or different Boosts at different times to produce a different result.
- Mission Control Events – you must Respond/Ignore an Event, Complete a Storyline Event, choose a different country during multi-country events, or deploy more satellites in order to change the Mission Control Event sequence.
- Psi Testing – Initial slotting generates values for which individual Gifted status is tested. The Gifted status is determined each time the solider is placed and does not depend on order or placement (so Fred can try again and not be disqualified by becoming Not Gifted).
XCOM Random Mechanics
Random Mechanics in the game that can be changed by reloading
- Map Seed – If you save before launching a mission, you can change which map seed is assigned, meaning that a mission in Mexico might be on a freeway bridge, but after a reload the Mexico mission might be at a gas station. This also changes the number and types of enemies on that mission. Storyline map seeds cannot be changed nor can Council Request maps be changed once the request is accepted.
- Requests – Item requests from countries can be changed by reloading, this will change the item requested, the country making the request, and the mission reward. Also reloading can change Council Requests, this will change the mission objective, location, and reward of the quest.
- Soldiers – Starting a new game randomizes starting soldiers’ gender, country, look, and base stats, reloading will randomize arriving recruits in the same way. Additionally a squad member’s class can be randomized either by reloading before the end of their rookie mission or reloading before they arrive after being hired if you have the "New Guy" training purchased. Furthermore, hire soldiers one at a time, with a small time advance between each one, this way you can save or reload as each new recruit arrives so that you can forcibly "customize" each new soldier instead of being stuck with an entire batch that you may not like.