Cycle of Evil postmortem

It’s about time to recap my Spring Lisp Gameam ’24 entry. Here are some thoughts without any particular order:

  • While developing the game, I’ve done a bunch of commits to my libraries and even released a new one.
  • Having your own Quicklisp distribution is nice, you can have specific libraries versions you need when making the build of your game.
  • Generally I’m starting to see the future shape of generic 2D Common Lisp game engine that I’m dreaming to create (but still haven’t come up with catchy name yet).
  • Thinking and designing the game in terms of ECS is terrifically fun, fast and flexible. You come up with some basic orthogonal pieces of data, like “child object”, “position”, “sound effect”, “sprite” etc., and then you creatively combine them.
  • It’s also nice to have working, well-tuned and well-optimized A* pathfinding algorithm, but there were hiccups with discreteness of game space. Quite often a character obeying A* would start to run from his current position to the center of the tile he was in, which does not always look naturally.
  • Declarative UI is awesome, even if it has sharp corners of underlying C library Nuklear, as it does in my case.
  • I finally found weak link in terms of performance. I initially thought this would be behaviour trees creating one ECS component and one ECS system per node, and there were some pretty thicketed trees in-game, like this one for peasants gathering meat from sheep. However, the slowest thing turned out to be passing C structures via stack using CFFI. Namely, the function drawing the sprites on the screen requires a color structure passed via stack. So when there’s more than a hundred characters on the scene, FPS drops to 130 (from initial thousands!), which is quite low for a 2D game. If it would drop below typical monitor refresh rate (which is 75 Hz nowadays give or take), my perfectionist ass would consider that as a personal insult 😅
  • As I did many times before, I’ve made the mistake of postponing making actual game content to the very last day. I really should make generic game engine already and spend more time on the content.
  • I’ve been making the functionality of poisoned meat the whole Sunday morning to make it one of the game’s meta mechanics, but in the frenzy of looming deadline, me and my game designer mate forgot about that 😢
  • MacOS build seems to work 😊 Although there’s no custom cursor, like in other OSes.
  • Generally, the game we made could be easily converted to full-fledged RTS, this just haven’t been the part of our initial plan. So again it is labeled as “indirect player control” 🤣

I’ll share more gruesome technical details on this Saturday devlog video on my Youtube channel, so stay tuned 😊


cycle-of-evil-0.0.1-setup.exe 28 MB
55 days ago
cycle-of-evil-0.0.1.dmg 26 MB
55 days ago
cycle-of-evil-0.0.1.AppImage 36 MB
55 days ago 10 MB
55 days ago

Get Cycle of Evil

Leave a comment

Log in with to leave a comment.