Jon Posted June 22, 2018 I've just pushed an iniitial release of something I've been poking at in private for (it turns out) a couple of years Liquorice is a system (specifically: A library for the Haskell programming language, impementing an embedded domain-specific language) for algorithmically generating Doom maps from code. It closely resembles WadC which strongly influences it, but it departs in a few ways. I've written it mostly as a what-if but now that I have something that actually works, I think it will be an interesting platform for me (at least) to explore some other ideas I've got. So erm stay tuned for those I guess The code: https://github.com/jmtd/liquorice Example program: https://github.com/jmtd/liquorice/blob/master/birds.hs Based on this existing WadC program: https://redmars.org/wadc/examples/#_birds_wl That Liquorice program generates a PWAD for limit-removing ports, Doom 1, E2M8. Here' it is with nodes: https://redmars.org/liquorice/birds.zip Everything is up in the air and subject to change. Feedback appreciated. Enjoy! 11 Share this post Link to post
Gez Posted June 22, 2018 Could you give some concrete examples of things you can do with Haskell/Liquorice that you couldn't with WadC? For example, you wrote on the GitHub readme.md that you get full access to the context, but what does that actually mean for map-making? 3 Share this post Link to post
Jon Posted June 22, 2018 Good question. I guess the best way to demonstrate that would be in examples. There are a couple of small examples in the “birds” map that I should add comments around, particularly because you can point straight at the wadc version in comparison. But I should add more examples. I actually cut something from “birds” which is impossible in wadc because it exposed a bug I haven’t fixed relating to xoffs on 2s lines, so I might bring that back when I fix the bug. Broadly, the advantage is that, in wadc, once a line is drawn, that’s it, it’s set in stone: but here, you can go back in and manipulate anything. So you could have one set of routines that drew some regular rooms, say, and some other code that went back and warped already drawn lines around some gravity coordinate, or something similar. Also cutting and deleting existing shapes. 7 Share this post Link to post
Jon Posted October 11, 2020 A round up of recent updates, newest to oldest: a random dungeon generator, “blockmap”, ported from the wadc version but using a different approach for marking free/used blocks: things, since we can remove existing things, and query for them (and you can’t in WadC): https://github.com/jmtd/liquorice/commit/907af53036c57f55909bc32c634c2a876b48c899 A basic but functional pseudo RNG, inspired by the approach taken in Doom itself. 100% pure functions, reproducibility via setting the seed etc https://github.com/jmtd/liquorice/commit/3ac19897ddfb55fbfd6d782b726d0d89c5047c9b A whole bunch of useful functions, thing type definitions etc pulled out of one example map and made generally available https://github.com/jmtd/liquorice/commit/f3b2b837628ccc8ad4edf1cbb518c317c447c765 Shawn.hs, dictionary words spliced from the SHAWN texture. Implemented after Fraggle released his python version, in honour of it. https://github.com/jmtd/liquorice/commit/8be9a212938d58bd3fd03e5f167c2c069719360f The stacked demon cubes in the “birds” demo map have fixed texture alignment. I thought this was a bug in liquorice but it turned out to be a bug in the demo. https://github.com/jmtd/liquorice/commit/bb2e117dd84c7b13c9abdfb33d6f0364361dd4af I shall endeavour to upload newly generated PWADs for the demo maps at some point. 7 Share this post Link to post
DSC Posted October 11, 2020 Not gonna lie, when I saw the title for a moment I thought it said Linguicarice... 0 Share this post Link to post