Email or username:

Password:

Forgot your password?
2 posts total
Andrew Kravchuk

I've just published an excerpt from my yesterday stream showcasing #Lisp Entity-Component-System framework called cl-fast-ecs: youtu.be/oPn5oBMECfY

It shows that the framework easily handles thousands of live objects, and most of the time (around 0.25 ms per 1k objects) is spent drawing them by (non-related to ECS) low-level graphics library, liballegro.

Andrew Kravchuk

So, yesterday my buddy and I spent the whole day being creative and, lo and behold, I released a game for the #LispGameJam in the dead of night. Introducing Thoughtbound: awkravchuk.itch.io/thoughtboun

Now I've caught up on some sleep and ready to provide a preliminary postmortem.

1. The Entity-Component-System architecture is awesome! πŸ”₯ You can easily add new functionality to the game without breaking what already exists.
2. The stock map rendering using CLOS in the cl-tiled library is painfully slow for any practical purposes.
3. Although it's not recommended on various internet forums, it turns out that storing each tile of the map as a separate entity is a perfectly viable approach. By comparison, rendering with cl-tiled consumes around 70% of the CPU (mind you, on a 12-core Ryzen), whereas rendering the same map using ECS with entity per tile only takes 5-6%.
4. Although my implementation of ECS is currently naΓ―ve and memory-intensive, it's not a big deal in a real project. The running game creates about a thousand game objects with 14 different components, but it only consumes around 200MB of memory, which is insignificant by modern standards.
5. The game has a fairly serious narrative aspect, and it even features a storyline with post-modernist undertones, which is atypical for my previous projects πŸ˜…
6. Implementing character collisions with obstacles is tough; I still haven't perfected them completely πŸ₯²
7. Dealing with the Nuklear UI library is quite challenging. Just one wrong move, and you end up in the LDB, and in #Emacs, it's not immediately obvious because the game window just stops updating.
8. Generative artificial neural networks are a fantastic asset in projects like this, especially if English is not your native language and you can't draw 🀣 A little inside info: my imagination is so lacking that I even used ChatGPT to suggest the project name, haha!
9. According to cloc, the entire game code consists of 715 lines, which once again confirms that #CommonLisp is one of the most powerful languages in the world πŸ€—
10. I don't mean to brag, but it seems that our entry boasts the greatest amount of content among the other jam submissions 😊 However, there are undoubtedly some extremely interesting projects from a technical point of view.
11. I solemnly say to you, coffee is the devil's drink. At some point over the weekend, it felt like I had permanently lost the ability to fall asleep 😳
12. It's much more fun to game jam as a duo :)

So, yesterday my buddy and I spent the whole day being creative and, lo and behold, I released a game for the #LispGameJam in the dead of night. Introducing Thoughtbound: awkravchuk.itch.io/thoughtboun

Now I've caught up on some sleep and ready to provide a preliminary postmortem.

1. The Entity-Component-System architecture is awesome! πŸ”₯ You can easily add new functionality to the game without breaking what already exists.
2. The stock map rendering using CLOS in the cl-tiled library is...

Go Up