J. Thomas Bacher

Hello, I am a computer science PhD student at North Carolina State University. I have a BA in computer science and a minor in Philosophy. My research focuses on Procedural Content Generation/Generative Methods, AI in games, and Interactive Narrative. This page is under construction, and much of the content hasn't been updated in over two years. Explore my projects below. View my resume here. View a video of some my projects here

Find the project I developed with Tammy Le (provided the server is running) here.


Senior Thesis: A Study of Dynamic Difficulty Adjustment for Video Game Balance

Abstract: When developing a video game, it is important that the game be balanced in the sense that it is neither too difficult nor too easy. Dynamic difficulty adjustment is a form of video game balance where the game is adjusted while the user is playing it based on the user's performance. This independent study explores the process of creating a dynamically adjusted game and whether users prefer a dynamic version of a game over a static version of the same game. By the end, the reader should have a solid understanding of the previous work done in the field of dynamic difficulty adjustment, and should thoroughly understand the software developed for this paper. The reader should also understand the difficulty of creating a dynamically adjusted game and recognize that dynamic difficulty adjustment provides a potential benefit in terms of user enjoyment and performance.

Git Repository for Senior Thesis
Senior Thesis


Junior Thesis: An Exploration of Procedural Level Generation Algorithms

My Junior IS focused on exploring procedural content generation, or the action of generating entities for media during the program's runtime for a variety of purposes. I focused on level generation algorithms for roguelike games. As a result, I started by exploring Rogue's own level generation algorithm, and adapted the code into a GLUT and OpenGL software to create example levels. Additionally, I explored other algorithms that seek to improve upon the original Rogue design, and I implemented the binary space partitioning algorithm. My junior thesis heavily influenced my senior thesis.

Code base for Junior Thesis
Junior Thesis