Think about twins. They both share the same player code (DNA) but ultimately end up in different states in life (the game world) based on their unique qualities and decisions. One may even get cancer and die before the other because they were exposed to more radiation. The analogy is such that your DNA represents your game code and bugs represent undesired consequences of your unique path in that game (life).
When you play a game, you download a piece of software that we’ll refer to as the game client. The game client is written in some higher level programming language(s) like C and Lua and compiled down into assembly code containing a long list of instructions to your CPU, also called the instruction set. This instruction set is like a maze with a set of paths and waypoints. There is only one entrance and any number of exits. A waypoint contains a single card (instruction) that you read and execute (as the CPU).
Outside of the maze are various buckets storing apples. Some of the buckets reset for each attempt made at the maze (RAM). Other buckets don’t reset (hard drive). Each bucket has an ID.
Now, if you zoom out, there are many mazes (programs) all sharing the same bucket store. Many of the mazes have dedicated bucket stores, and generally the maze manager (the operating system kennel — which is the parent maze) keeps everything separate and organized, but contamination can happen by faulty or malicious instructions.
When you are attempting the maze, you make one move at a time based on some input from the operator. You’re just the CPU, so you don’t make any decisions, you only execute instructions. Examples of these instructions involve adding apples to a bucket, emptying a bucket, counting what’s in a bucket and doing arithmetic, copying the contents of buckets between each other, etc.
Your instruction can also teleport you to another point in the maze. In fact, you started in the parent maze (the OS) and have now wandered into one of the smaller mazes (a program). Lastly, some instructions have a surprise (also called a bug), they can teleport you to the wrong place or give you an instruction you can’t actually do, like:
*add more apples than the bucket can hold (buffer overflow)*
*work on the wrong bucket (memory address error)*
*do impossible arithmetic (divide by zero)*
*or teleport back and forth forever (infinite loop)*
Imagine now that each operator has a unique decision tree. If the operator attempts a particular maze many times, you will find yourself taking very distinct paths through that maze and having a distinct apple store state at any point (since each instruction can alter the apple store and your operator is randomizing the selection of those instructions). And as we explained above, some combination of those instructions can lead to an undesired state.
On top of that, you have cosmic rays randomly zapping certain buckets of apples and changing their contents and you have malicious mazes built by bad actors ill intent on taking over the parent maze (the OS).
Latest Answers