Q+A

<aside> šŸ§Ÿ Put your two questions here. Please include your name.

</aside>

  1. Would it be worthwhile to commit some of these patterns/strategies to memory for faster pattern recognition and reverse engineering? (John Kim)
yes and no.

I don't think you want to start by memorizing the tactics. I think you want to just code a lot. Make a lot of things with code. Start organazing your code into functions. Start noticing when you can reuse a function from a past project in a new project. Start noticing when you can reuse ideas from past projects in new projects.

The real critical skill is noticing when two problems that look different have the same "shape", and can be solved using a solution with the same "shape".

If you develop this skill and you do a lot of coding, you get to a point where when you look a new problem you can see it in terms of old problems that you already solved. 
  1. Iā€™m reading over the properties of PCG systems and they read more so like suggestions to making a good PCG rather than properties of every existing system. Are these properties rules that every procedurally generating system is bound to or do they act more like guidelines for designers to follow? (John Kim)

they are qualities to consider. design is largely about prioritizing, you can't have everything so what is most important?

for sketches i find that speed and reliability are not very important. i only need a couple of good outputs, and i don't care if they take a while to generate i might want controllability, but maybe not. i usually, personally, really like when sketches have a wide range of expression and diversity

some of these qualities are independent. but some of them are in conflict. for a highly reliable system is less likely to be diverse

  1. When you talk about collision detection and collision response, are these also used in say matter.js to simulate physics? Do you have any thoughts on matter.js in terms of being a library that can be played with in this class? (Chris Kim)

matter.js has a collision system. most physics engines do. in fact, collisions is usually one of the most important things a physics library provides.

``we won't cover it, but you are free ti use matter.js (and/or other libraries and languages) in this class.`

  1. Can you talk a bit more about how stamp placement works? From my understanding do we always create the tiles manually which can then be repeated/randomized? Do we always use objects for the tiles? (Chris Kim)

i mostly made up that term, talking about "stamping" things is somewhat common in the "real world"

the general idea is that manually create some parts, and then use your algo to arrange them. this is a very common approach in video games with procedural worlds. the excellent Spelunky book goes deep on how Spelunky's worlds were built you can also watch the game makers toolkit video about Spelunky for a quicker take on it

  1. In terms of repeatability when designing a procedural generation system, would one need to completely avoid using random()? (Brian Lau)

Random seed can be use to get repeatable results with random(), but that approach can be brittle.