Gamedev in Lisp. Part 2: Dungeons and Interfaces

14 hours ago (gitlab.com)

This is what all technical tutorials should look like. Well-composed and generally free of grammatical errors, spends just the right amount of time explaining each new topic as it is introduced, comes with full code samples, and includes visual samples of what the code does. Also, lengthy enough to treat the material in depth, while still being sufficiently self-contained that I can follow along -- without having read part 1 and without more than a few months of Common Lisp under my belt from a couple years back (tho I've done a decent amount of Clojure and Emacs Lisp.)

Bravo, awkravchuk/Andrew :^)

(Crossposted from https://mxjn.me/2024/10/17/1)

Few (tech) things pull at the heart string more than great projects/articles about Common Lisp. Man what a treat!

Read the first part when it came back, really excited to read this one. Kudos to the author!

This is a very good read. I’m developing a multiplayer, third-person, spell-based shooter game using Lisp (ClojureScript). It’s a 3D web-based game. I’ll also be writing a blog post about my journey, including the tools and abstractions I created for the project. If you’re interested, here’s a demo link: https://wizardmasters.io

Tiled is great. I really wish there was an SVG equivalent though. Inkscape is alright but custom data parameters are really annoying to deal with, and ultimately the tool is built around drawing things to paper.

Wow! Your package.sh and in general managing builds for three operating systems is a master class in itself - reading through the GitHub repo was a good learning experience.

I usually build command line Common Lisp apps in SBCL or LispWorks, but I might do the next one in ECL because having builds for both macOS and Linux would be cool, and it would be fun to try something new.

  • Oh thanks! I've been building that CI stuff on top of CL infrastructure for a few years now, and it constantly breaks :D

Nice, just this week I started developing a roguelike in Python, but Lisp might be cool as well.

This is super solid, but the setup in Part 1 (CL itself, Python, C, lots of steps) I think is indicative of why CL is not super popular, especially with young programmers. Which is a shame. Would be awesome if someone felt like putting in the work to make the language more approachable (installation wise).

  • This doesn't exactly get at it, but https://ciel-lang.org/ is at least attacking part of too-many-steps problem while focusing more on the too-many-choices and long in the tooth defaults (as I understand it).

I feel tricked. I came to learn to make a simple game, ended up learning tons about computing.

Love it!

The event loop is brilliant example for how much `loop` is a full blown iteration DSL... love it or hate it ;)

  • I used to scoff at it at first, but after a few years of CL programming loop is one of my favourite CL constructs :)

    • I'm with you there. Is a bit of a mind bend, as I really disliked it the first few times I saw it.

      For an even sillier mind bend, I'm using tagbody to be able to directly transcribe some of Knuth's algorithms as I am learning them.

      16 replies →

  • Why loop when you can https://iterate.common-lisp.dev/ instead? No s-expr-less alien syntax, no need for `do` to switch to back to Lisp syntax, normal `if`/`when` without the ugly `else`/`end` and generally useful features added.

    • If I used Common Lisp more I'd probably have a go at copying Racket's `for` forms[1]; they're really nice because you can usally tell at a glance what they're going to return - `for/list` returns a list for example. No having to scan the body for a `collect`.

      But in the meantime since discovering iterate I've barely used `loop`. It just feels so much more lispy and I find myself running to the documentation less often.

      [1]: https://docs.racket-lang.org/reference/for.html

      2 replies →