Video timelapse of me programming two new abilities for Sonic. And also showing the power of #Lisp.
@algorev I'm using trivial-gamekit under SBCL. The performance is very good right now, though I still don't have much on screen.
CCL and SBCL are, however, awesome in terms of performance, specially because they compile on evaluation. I built games before using FFI bindings to SDL2 and OpenGL using SBCL and didn't have any complaints in terms of performance. Using trivial-gamekit seems more reliable than using these bindings purely, though
@luksamuk Also, what makes you find CL so practical? Also interested.
@algorev Well, there's a lot of things. First, as you can see from that video, the whole Lisp-image thing allowing recompilation of a single procedure is a beast when we're talking about game programming, you just write and test with no delays, not even when a condition makes the program stop (you can recover on runtime).
And I also feel like Scheme and Common Lisp in general remove a lot of friction when coding, it's easier to get to a "flow" state of mind.
@algorev This is also something I wrote on the code's repository, but I believe Common Lisp, specifically, is a very underrated language, being very mature and powerful. Also, perharps not surprisingly, there are quite a lot of useful and well-written stuff on Quicklisp's official repos which we can reuse. trivial-gamekit itself works so well that I regret not using it before, instead of relying on FFI bindings to C libraries directly (though FFI itself is not hard to use in CL).
@algorev There is also the whole homoiconicity thing which is inherent to any "real" Lisp (I mean the s-exp based languages which are not just a Lisp skin to another language). Hardcoding some data in the code when necessary doesn't feel ugly at all, and doesn't even feel like hardcoding (if you messed up or need to change anything, just change and evaluate it again, or use the REPL to reset the mess). I just kind of feel like I'm not doing a mess, the code is so clean in general.
@algorev Just to give an example to make you see this "hardcoding" stuff that I just said, take a look at the way I am registering Sonic's animations.
In any other language, one might argue that I should store it somewhere else where I can deal with it dinamically and reload that file if needed. But in the case of Common Lisp, it is done in the code file itself, and replacing stuff is efficient. It's like, those two things fused in a non-messy way.
@luksamuk I'm trying CL and it's looking really awesome so far! It has all I liked about haskell, but is way more practical because:
1. It doesn't have to be pure
2. The libraries made by the community always work
3. The build system works
I've looked at libraries, and CEPL looks quite nice too. Have you tried it?
@luksamuk Oh, you're making a game in CL? What implementation do you use, what libraries do you use, and how's the performance? I'm very interested.