Nathan M. Williams

Game developer experienced with consoles, mobile, VR & PC. Advance understanding of C# and the Unity game engine.

Open Source Procedural Dungeon Generators

Procedural Dungeon Generation Comparison

I conducted an investigation into procedural dungeon generation techniques in Unity. The project explores three approaches: Binary Space Partitioning, Delaunay Triangulation, and Cellular Automata to create dynamic dungeon layouts for games. These methods were evaluated for structure, performance, and usability in real-time applications.

You can view the open source repository here, or read the full PDF write-up.

Gravity Galaxy

Gravity Galaxy Banner

Gravity Galaxy started life off as a prototype I made over a week called Planet Hopper, where I explored different mechanics I had ideas for and tested out the concept.

Working with an artist friend, we continued to develop and polish the prototype. Eventually, we entered it into a mobile game competition run by Ancient Games D.S. We won the competition, earning $25,000 in funding to develop the game further.

Gravity Galaxy Screenshot 1 Gravity Galaxy Screenshot 2

We used the funding to bring the game to market, eventually releasing it on the App Store and Google Play. Apple featured the game in several regions, and it went on to receive over half a million downloads across both platforms.

Open Source 2D Planet Generator

Random Planets Title Image

This project begins by procedurally generating a unique mesh for each planet, ensuring every shape is distinct.

Generated Mesh

Once the mesh is created, several cellular automata with randomized properties are used to generate individual texture layers. These layers create a variety of surface patterns.

Cellular Automata 1 Cellular Automata 2

Multiple layers are then blended together through interpolation to form the final texture.

Interpolated Texture Result

Finally, a custom shader is applied to give the planet a stylized shading effect.

Final Shader Result

You can explore the project repository on Bitbucket for further details and source code.


Open Source Asynchronous Multiplayer Minesweeper

Minesweeper Banner

As an attempt to gain knowledge in backends and databases, I created a multiplayer version of Minesweeper based off the old MSN game Minesweeper Battle. Players take turns trying to find mines before their opponent and the player who finds the most wins. If you click a tile that isn't a mine, your turn ends and is "sent" to your opponent, who can then watch your turn and take theirs when they get a chance.


Also included in the repository is the engine for the game FlyBy, as this was built using the same engine I developed on top of LibGDX.


You can explore the project repository on Bitbucket for further details and source code.

Gameplay Lobby

Contact Me

Need help with your game or got any questions about my work? Contact me on the e-mail below, always happy to help!

Email: NathMWilliams@gmail.com