Boxtype—Level Encoding (Devlog Part 2) Introduction & Context This post describes how levels in Boxtype are encoded in the URL. You may want to look at Part One first: It has many screenshots in it. Encoding Requirements & Comments Encode levels in a single URL parameter. Compress & base64 encode...
Boxtype—Devlog (Part 1) Introduction & TL;DR In January I decided to start learning ClojureScript by implementing some 2d platform game mechanics. After a little while I had a number of game mechanics and level editor features I wanted to experiment with. By mid January I decided to make and release...
I made a 2d platform puzzle game for the browser! The game has an instantly avilable level editor. When you make or find a world you like, you can share it with anyone by sending them the URL. Boxtype screenshot. I would still like to improve the (several of the)...
EDIT: There is a more technical paper about LQN here (PDF). For a while I have wanted to make my own terminal utility for manipulating text files. Some version of Sed, or AWK; or maybe even .jq. And I finally did. So here are the first 25 Fibonacci numbers calculated,...
In the previous post I described how to implement a small macro called select. The macro implements a tiny DSL for selecting items from a list of key/value pairs. I also wrote that while select in of itself is not very useful, the overall approach for making a DSL is...
In the previous post I described an a small DSL to export graph data to .svg using Datalog queries. Here is a shorter version of the core example; with more self-explanatory names: (select (g v svg) (.&edges ?x ?y (?x :path ?y) (.&draw-path :sw 1.75 :so 0.85)) (.&segments ?x ?y...
When working with generative algorithms it is convenient to store the results as you make them. I usually export vector drawings to .svg. This has a few drawbacks. Most notably that the actual graph (topology) is more or less lost in the .svg file. Making it impossible to re-draw an...
In the previous post I introduced my graph data structure (cl-grph), and gave some examples of Datalog queries. Datalog is a Domain Specific Language (DSL) for queries on graphs. Building a Datalog compiler as an example DSL in a blog post is a little ambitious. Instead we will look at...
Since I started learning Common Lisp in late 2016 I have been working on several iterations of my own generative art framework. The first library was named snek. Some time later, snek was rewritten and renamed as weir. The most essential parts of these frameworks were a graph data structure,...
For a while I have been thinking about how to make some kind of volumetric light effect. There are a lot of resources on things like this, but I have avoided doing any research on this on purpose. Figuring out how something works on my own is an interesting challenge,...