Nathan Koch

Major Studio I: Final Project – Week Two

Monday, November 6th 2017

Deeper Research

This week I read a few chapters from a handful of books surrounding the topics of simulated behavior and procedural content:

  1. Shaker, Noor, Julian Togelius, and Mark J. Nelson. – Procedural Content Generation in Games.
  2. Shiffman, Daniel – The Nature of Code
  3. Dewdney, A.K. – The Magic Machine: A Handbook of Computer Sorcery 4. I also did some online research, digging into this article on machine learning and this article on Utility AI – both using Unity3D.

My research opened up some interesting areas for further study. Procedural Content Generation in Games in particular was full of an extensive range of algorithms (in English or pseudocode) for producing virtual worlds, from fractal and noise-based landscapes to decision-tree driven dungeons.

The Magic Machine's Dinner Table and Protozoan simulations both dealt with agents moving around a virtual space, in two very different ways. Both may seem like naive algorithms compared to even what we have baked into Unity itself in 2017, but I felt like understanding these underlying principles would help greatly in the coming weeks.


For this project I intend to create a series of small studies in scripting languages in order to gain a greater understanding of the underlying algorithms behind simulated behaviors in games.

Dinner Party – Study 01. Image courtesy author.

I started by replicating Dewdney's Dinner Table simulation in Python (example of my Guest class below):

This was an interesting and surprisingly complex project for being so reduced in scope. All the entities in my party head for and eventually find a stable point in which their point of least unhappiness and current location are the same. So somewhere, there's a bug. I also effectively had to invert all of Dewdney's code, because instead of using objects with an x and y position, dewdney had x[] and y[] arrays of guest positions.

A Refined Project Scope

I finished up my project proposal. The process of this greatly helped me to refine and reframe my project. Many thanks to my father, Terry Koch, who used his long experience in journalism to help me focus and polish my ideas and structure.

Moving Forward

Moving forwrard, my studies will include Utility AI and Palmiter's Protozoa, as well as further research into Unity's NavMesh and new machine learning framework.