September 30 2023 / Computers and Game Development Randomness, Procedural Generation, and College Apps

I have wanted to talk about procedural generation for so long and finally have the chance to talk about it. Although I have not played with procedural generation in Unity or in general, I've been reading a lot of blogs, posts, and YouTube videos on this topic. I'm actually going to present about procedural generation and randomness to my school's Math Club in a week, so I hope to relay some of the things I've learned to you guys as well. Before we get to procedural generation, however, I first have to talk about randomness.

Computers are not truly random, and are often said to produce "pseudo-random numbers". This is different from "true random numbers", or any (supposedly) truly random phenomenon such as radioactive decay. Computers, in essence, are deterministic systems meaning that they produce the same output from a given input and execute operations in a predictable manner. Pseudo-random numbers are not actually random but seem random enough for most situations. Computers have different algorithms to produce random numbers, with two of the most popular being linear congruential generators and the Xorshift. While both of these algorithms use different methods in producing random numbers, they both have a "seed", which is an initial starting value that determines the output of these random numbers. Since computers are deterministic, algorithms with the same seed (input) will produce the same output.

One common method to change the seed in pseudo-random number generators are to use the computer's clock time. For example, computers can use the current time in seconds since a epoch (often January 1, 1970) as the input seed to get a different seed every second.

Procedural terrain generation refers to algorithms used to generate terrain for virtual environments, and often involve something called noise. Noise just refers to series of random numbers or patterns. For procedural generation, the most well-known method of producing random noise is Perlin Noise, which generates smoothly, varying, non-repeating patterns. This gradient noise is colored from 0 - 1, or fully black to fully white. Ranges and colors are then assigned for values in between 0-1 to produce different terrain and landscapes.

Although this is a very brief introduction to randomness and procedural generation, I hope it gave you guys a little bit more insight to how these things actually work. In the future, I plan to create my own procedurally generated landscapes and write a more comprehensive guide/introduction to procedural generation.

This is where my TED Talk ends. I just wanted to talk about college apps and this entire college application process. I remember thinking at the end of my junior year thinking all of my stress was relieved. I clearly ate my words there. To be honest, I don't have a single essay finished right now, but I still plan to apply to three schools early. I haven't even made a UC application account yet.