# Constrained Text Generation with AI

I was discussing how AI text generation, such as ChatGPT, might end up getting used in computer games. So far, designers are fairly reluctant to adopt the technology. One of the key problems is that you just can’t control the output enough. Language models will break character or respond in inappropriate and toxic ways. Finding a good solution to this is a huge research field, and not likely to get cracked soon.

For the foreseeable future, AI in games is much more likely to be used offline – assets and dialog generation generated up front, so it can be vetted before being integrated into the game.

But it got me thinking, can we vet the AI’s output in advance, but still get the benefits of intelligent decision making at runtime? It turns out, we can! I doubt it’ll be useful in every circumstance, but I can certainly see uses for it, like chatbots, games.

# VoronatorSharp

I’ve relased a new library, VoronatorSharp.

VoronatorSharp is a C# library that computes Voronoi diagrams. The Voronoi diagram for a collection of points is the polygons that enclose the areas nearest each of those sites.

Voronoi diagrams have applications in a number of areas such as computer graphics.

This library features:

• Computes Voronoi diagrams and Delaunay triangulations.
• Voronoi polygons can be clipped to a rectangular area.
• Uses a n log(n) sweephull algorithm.
• The implementation attempts to minimize memory allocations.
• Integrates with Unity or can be be used standalone.
• Uses robust orientation code.
• Handles Voronoi diagrams with only 1 or 2 points, and collinear points.

# Mosaic Paint

As a side-project of a side-project, I’ve made a little painting program. It’s like a normal paint program, only you paint on a tile grid instead of pixels. You can create mosaic and stained-glass style images.

Try it out!

# Chiseled Paths Revisited

Back in 2017, I described a method of random path generation called Chiseling. It gives very nice wiggly paths, but I was never satisifed with the performance. I later revisited it, and found a faster algorithm, but it was a bit complicated to implement.

I’m pleased to say that I think I’ve finally found a way of implementing it that is both fast and simple.

# Varia 1.0 released

Announcing Varia, a new Unity asset for adding small random variations into your games.

Spice up your levels, remix your gameplay, and make your assets go further for you. It’s FREE!

Get it here

# Infinite Modifying in Blocks

I’m going to share with you a technique I’ve found for doing lazy, reliable, deterministic, constant-time infinite generation of tile based levels using Wave Function Collapse (WFC). But first, let’s cover some background, Modifying in Blocks, and lazy chunk based infinite generation.

# Tessera: A Practical System for Extended WaveFunctionCollapse

I’ve been working a lot on Tessera. I presented a paper at the most recent PCG Workshop of FDG, where I explain how Tessera makes WaveFunctionCollapse somewhat less daunting, and go into some of the details of its features.

That may not be news for users of the software, but here I explain how things work, and what parts work well / I’m especially proud of.

Paper

# Junkbot Arena

I entered the GMTK Jam again. This year, I was in a larger team, working together on the theme Joined Together.

You can play it on itch.io.

# 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