My final year project was to investigate different methods used to procedurally generate game environments in the hope of eliminating repetitive gameplay. There are many different ways to generate environments however I decided to focus on the Wave Function Collapse (WFC) algorithm.
The WFC algorithm uses a predesigned set of modules which fit together based on a complex set of rules to create a scene or environment. This process creates seemingly random results each generation. The slideshow contains examples of the various development stages of the modules.
This image shows how pieces from the final set of modules fit together. Each module has 6 connectors, one for each face that determine which other modules can be placed beside it.
This video shows WFC algorithm building a scene from a library module set. The algorithm looks to assign a module to each slot in a grid, the green dots mark changes being made to a slot, red dots indicate the algorithm is stuck and it will begin backtracking to find a solution.
Finally, here is a slideshow of some interesting generations.
I found inspiration for the art style of this project from the Belmont library in Castlevania.
Insipritation for the choice of algorithm was found in a post by Marian42 (https://marian42.de/article/wfc/)

About me
My name is Ben Laycock, I am a final year student studying Computer Games Programming at Teesside University. I enjoy all aspects of programming, love learning new skills and I am always open to new ideas and opportunities.
Knowledge and skills:
- Unity Game Engine
- Github
- Visual Studio
- Blender
- C++
- C#
- HTML
- CSS
Employment, Work Experience & Volunteering
I currently have no previous work experience from within the game industry however I have been involved in several personal / team projects outside of university.
Interests
Outside of university, I enjoy gaming with friends, going to the gym, mountain biking and furthering my programming knowledge. I am also working as part of a team on several programming projects across various platforms eg Roblox, Android, Unity and C++ / OpenGL. My main focus has always been programming but I also have a keen interest in developing other skills such as basic 3D modelling to provide environments for my projects.