@awkravchuk@functional.cafe
@awkravchuk@functional.cafe avatar

awkravchuk

@awkravchuk@functional.cafe

#Lisp aficionado

This profile is from a federated server and may be incomplete. Browse more on the original instance.

awkravchuk, to devlog
@awkravchuk@functional.cafe avatar
awkravchuk, to random
@awkravchuk@functional.cafe avatar

For the last 10 months I've been working on a microframework, cl-fast-ecs, and I've just published a part 1 of in-depth tutorial for it. Let me know what you think 😊

https://awkravchuk.itch.io/cl-fast-ecs/devlog/622054/gamedev-in-lisp-part-1-ecs-and-metalinguistic-abstraction

awkravchuk,
@awkravchuk@functional.cafe avatar

@rml Thank you 🤗

eniko, to random
@eniko@peoplemaking.games avatar

so far the plan that's slowly coalescing in my mind for my little osdev adventure is

  1. finish my riscv emulator to the point i can run bare metal riscv on it (mostly just some csr crap left) with a link to the local filesystem and console via mmio

  2. use gcc to write an extremely minimal bare metal shell which includes a simple assembler

  3. ???

  4. self-hosted profit!

awkravchuk,
@awkravchuk@functional.cafe avatar

@eniko in my experience, writing anything in pure assembler, even with advanced fasm-like macros, is much harder than even pure C, literally like nailed-down wooden toys.
Nice effort tho, I'd love to peek at both the process and the end result :)

awkravchuk, to gamedev
@awkravchuk@functional.cafe avatar

In 10 minutes, I'm going to be some in at my channel. Today I'll be fixing some fundamental bug in my ECS framework, cl-fast-ecs. Feel free to drop in and say hi :)

https://twitch.tv/awkravchuk

amoroso, to Lisp
@amoroso@fosstodon.org avatar

Building the CMUCL Common Lisp implementation from source has always been an arcane process. Building from source the CMUCL-derived SBCL is as simple as executing sh make.sh, a testament to the great work its developers did.

awkravchuk,
@awkravchuk@functional.cafe avatar

@amoroso well, SBCL’s build process is not perfect, e.g. there is no cross-compilation

awkravchuk, to Lisp
@awkravchuk@functional.cafe avatar

I've just published an excerpt from my yesterday stream showcasing Entity-Component-System framework called cl-fast-ecs: https://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.

awkravchuk,
@awkravchuk@functional.cafe avatar

@rml Thanks! Well, the sprites are drawn by videocard, but the rest is done on CPU yes :)

eniko, to random
@eniko@peoplemaking.games avatar

controversial opinion: neoliberalism should be illegal

awkravchuk,
@awkravchuk@functional.cafe avatar

@eniko just passing through, but you know who else hates liberals? Putin and his cronies. Not even exaggerating, liberals are deemed responsible for all of the regime failures in the state propaganda.

tbh sometimes I'm bewildered by the political views of fellow mastodon enjoyers

awkravchuk,
@awkravchuk@functional.cafe avatar

@Junepi mate, you're so incorrect in a multitude of levels. I've fled from that country, so let me tell you that he is indeed not.

grumpygamer, to random
@grumpygamer@mastodon.gamedev.place avatar

When I started making games I used a .txt file as a todo list, then I moved to Trello, after that I used Notion and now I'm back to .txt files. I crave simplicity.

awkravchuk,
@awkravchuk@functional.cafe avatar

@grumpygamer Excuse me sir, do you have a moment to talk about EMacs org-mode?

eniko, to gamedev
@eniko@peoplemaking.games avatar

Working on games is cool cause they're antithetical to clean code. I'm sure some people will argue but clean code relies on systems that obey a set of distinct rules. Those rules are almost always absolute

So you start your game with your clean rules. In context A you can do B but not C

But an unfortunate part of game design is that the most interesting powers you can give players are the ones that break the inherent rules of the system. So inevitably you'll wind up with a bunch of code that works around your baseline rules and that always turns into a goddamn mess

awkravchuk,
@awkravchuk@functional.cafe avatar

@eniko this sounds like an option of person who never tried flexible enough programming languages.

Radical_EgoCom, to random

Our grief ridden reality

awkravchuk,
@awkravchuk@functional.cafe avatar

@Radical_EgoCom OTOH, why is it that every time we try communism, it devolves into mass killings and starvation?

awkravchuk, to random
@awkravchuk@functional.cafe avatar

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

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 , 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 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 :)
abcdw, to random
@abcdw@fosstodon.org avatar

Is there is a good reason to have multi-value return in ? It seems returning a vector does the trick quite well. Am I missing something?

awkravchuk,
@awkravchuk@functional.cafe avatar

@abcdw I think this generally might be related to low-level optimization, like compiler being able to spill mutliple values into registers, as opposed to vector, which should be honest-to-god allocated in heap (or on stack).

  • All
  • Subscribed
  • Moderated
  • Favorites
  • anitta
  • Durango
  • ngwrru68w68
  • thenastyranch
  • magazineikmin
  • hgfsjryuu7
  • DreamBathrooms
  • Youngstown
  • slotface
  • vwfavf
  • PowerRangers
  • everett
  • kavyap
  • rosin
  • normalnudes
  • khanakhh
  • tacticalgear
  • InstantRegret
  • cubers
  • mdbf
  • ethstaker
  • osvaldo12
  • GTA5RPClips
  • cisconetworking
  • tester
  • Leos
  • modclub
  • provamag3
  • All magazines