Liquorice

Liquorice is a system for constructing levels by writing algorithms to describe the geometry. A Liquorice program is a series of instructions to move a virtual "turtle" or "pen", which define the walls, floors, rooms and monsters as it goes. Liquorice was closely inspired by WadC, and was written by Jon Dowland.

Liquorice is an embedded domain-specific language (eDSL) within the pure functional programming language Haskell.

Similar to WadC, Liquorice's strength is with structures that can be : a function can be written to create a pillar, for example, and then invoked any number of times to create many pillars.

Example script
The following script generates a triangular Sector with a different texture on each Sidedef.

-- simple example, triangle (for orientation); unique texture per line import Liquorice.Monad import Liquorice.Render main = buildWad "example1.wad" $ runWadL $ do    mid "ZZWOLF1" draw 128 0 mid "ZZWOLF2" draw 0 128 turnaround mid "ZZWOLF3" draw 128 128 rightsector 0 128 160 turnaround step 64 32 thing

In comparison to WadC
In WadC the current state of the map is being constructed in the "background" and does not provide the user with direct access to those data structures. Once a Line is placed, it is permanent. In comparison, a Liquorice user has access to the complete context at all times, and can modify existing structures. The example, a conversion of a similar WadC program , include geometric structures which are impossible to construct in WadC.

As Liquorice is a library within Haskell, the user can use all of Haskell and other libraries in the construction of their maps. In particular, infix numerical operators are much more convenient than Polish notation in WadC.

WadC is reasonably mature software with a GUI for development. Liquorice is experimental and requires the user to be familiar with Haskell and have a Haskell development environment installed.