# For Keep’s Sake!

I did another game jam. This time, I made For Keep’s Sake!, for PROCJAM 2020. It’s not really a game, it’s just a toy procedural thing / tech demo. Still, I had fun making it and I hope you enjoy.

# Lucky Fluke

This year I decided to enter the 48 hour GMTK Jam. I teamed up with the excellent Praeto and jhicks to make a little shooter based on the theme: Out of Control

# Tessera Pro Released

Due to demand, I’ve now released Tessera Pro, an upgraded version of Tessera which comes with source code and some extra features. Hopefully with more features to come.

I’m really pleased with how the project has been recieved so far, and am hoping to see some awesome games made with it.

Check it out on the Unity asset store.

# Tessera 3d tile level generation

After a lot of work, I’ve prepared my first ever commercial release. It’s an addon for Unity that lets you procedurally generate levels and other things based on a simple tile setup.

# DeBroglie v0.1

Introducting my latest project, DeBroglie.

DeBroglie is a C# library and Windows command line application implementing the Wave Function Collapse algorithm with support for additional non-local constraints, and other useful features.

Wave Function Collapse (WFC) is an constraint-based algorithm for which takes a small input image or tilemap and procedurally generating a larger image in the same style, such as.

DeBroglie is stocked with loads of features to help customize the generation process.

Basically, you can use it to generate cool tile based stuff.

# Barycentric Perlin Noise

Perlin noise is a classic procedural texture. It gives a wavy grayscale image, that has all sorts of uses in computer graphics. Commonly, it’s used to blend two textures together.

But what if you want to blend three or more textures together? Well today I have the answer.

# Random Paths via Chiseling

I went over a previous project to randomly generate paths between points and came up with a much more efficient and versitile algorithm.

The algorithm is simple. Start with the entire area covered in path tiles, then and remove tiles one by one until only a thin path remains. When removing tiles, you cannot remove any tile that will cause the ends of the path to become disconnected. These are called articulation points (or cut-vertices). I use a fast algorithm based on DFS to find the articulation points. I had to modify the algorithm slightly so it only cares about articulation points that separate the ends, rather than anything which cuts the area in two. After identifying articulation points it’s just a matter of picking a random tile from the remaining points, and repeating. When there are no more removable tiles, you are done. Or you can stop early, to give a bit of a different feel.

I call it “chiseling” as you are carving the path out of a much larger space, piece by piece.

See on github .

# Celtic Knots 1.0 – Now with Twills

I’ve just released a new update for an old blender addon, bumping the version to 1.0.

The addon can now generate a much wider variety.
Check it out on github.

# Blue Noise Particles

I’ve released a plugin generates a random arrangement of particles with a blue noise distribution. This is also known as Poisson Disk Sampling.

This distribution of particles guarantees no two particles are very near each other. It’s often considered a higher quality particle arrangement than Blender’s default uniform sampling. It’s particularly useful for organic arrangements, and randomly arranging meshes without collisions.

# Axaxaxas

I’ve released a Python based string parser on GitHub. This was part of a much more ambitious project that fell through, but I extracted the good part.

Axaxaxas is a Python 3.3 implementation of an Earley Parser. Earley parsers are a robust parser that can recognize any context-free grammar, with good support for amiguous grammars. They have linear performance for a wide class of grammars, and worst case $O(n^3)$.

The main goals of this implementation are ease of use, customization, and requiring no pre-processing step for the grammar. You may find the Marpa project better suits high performance needs.

Documentation can be found at: http://axaxaxas.readthedocs.org