A solid advice 😁
Andrew
Creator of
Recent community posts
I’m getting the following error:
standard-module-name-resolver: collection not found
for module path: parendown/lang/reader
collection: "parendown/lang"
in collection directories:
/home/andrew/.racket/8.12/collects
/usr/share/racket/collects/
... [166 additional linked and package directories]
Do I miss some kind of package? How do I install it?..
Readme mentions that I have to correctly install EON framework, but framework’s github page is missing installation instructions 😔 So I’ve just run the windows version using Wine.
That’s quite couterintuitive that menu items should be activated with X key instead of Enter, and hitting Esc seems to make it hang.
Overall, it was quite fun and addictive to play. Congrats on doing 3D game in CL, that’s a rare achievement!
Ooh, nice, another strategy, and with an awesome vibe! Unfortunately, trying to fight some goblin (by the looks of it), I got this error.
Thank you so much for the whole video with your look on installation process! I’ve even updated installation instructions a bit in a git repo.
I’m sorry the game won’t build for you. By the looks of it OpenBSD does only have ancient version 4 of liballegro as a binary package, but there’s port of allegro5 required for the game, so you might have luck with that: https://www.freshports.org/devel/allegro5
As to discussing Lisps, I’m always ready for that 😊 I gather you have a podcast of your own, so perhaps it’d be nice place to talk things?..
Oh, the infamous Wayland. I guess you’ll have to build from source, here are the instructions (the instructions imply you have installed on your system SBCL with Quicklisp, libffi and liballegro). Sorry for the inconvenience!
Oh, and if you’re having problems with recent SBCL version and dissect
package, please install LukyLambda Quicklisp dist by running
(ql-dist:install-dist "http://dist.luckylambda.technology/releases/lucky-lambda.txt")
Note that it is already included in automated build system. Cheers!
Hey! This is gentle friendly reminder that there’s Common Lisp game project template that features choosing back-end media library of your choice (one of liballegro, raylib or SDL2), some basic scaffolding in form of main game loop with interactive development capabilities and automated build system for Linux, MacOS and Windows (only if you host your repo on Github). You can find all of the information on template’s page (tl;dr version: run cookiecutter gh:lockie/cookiecutter-lisp-game
).
If you have any questions or suggestions, don’t hesitate to post ’em here or in Github issues 😊
I think you’re describing an array of structures, and you’re one step away from greatly increasing the performance — if you just reverse the storage and have a struct of arrays with the same semantics, the whole thing would be much more cache friendly (unless, of course, there is value boxing in play, which could be avoided at least for some values in Common Lisp, but is generally a PITA for performance).
The comparison of the syntax for defintions also might be fruitful, I still haven’t figured the perfect way to define entities, components and systems in code. Here’s how your example will look using my library now:
(ecs:bind-storage)
;; provided myentity, position and sprite components are defined elsewhere
(ecs:make-object `((:myentity) (:position :x 1 :y 1) (:sprite "path/to/sprite")))
(defsystem render
(:components-ro (position sprite))
(draw-sprite :x position-x :y position-y sprite-path))
Note how in defsystem
macro I just write the body of code to process the single entity with no looping logic (it is kinda embeeded into macro itself). I also use quasiqoute to build an object spec to be passed to make-object
(kinda similar to your create-world
, but for single object). I can’t remember, does Scheme has quasiquoting?
cannot query on component values
This is correct for most of ECS implementations there are, but I went ahead and implemented hashtable-based indices in my library, akin to the ones in relational databases. They allow to answer the question “which entity or entities has this specific value as this component’ slot?” I think it might come in handy in implementing things like entity names or prefabs. I’m already using those to e.g. distinguish different images in texture atlas: https://github.com/lockie/mana-break/blob/0.0.1/src/atlas.lisp#L13-L18