Buzzing Holograms

"Some chains are unbreakable. In this case, it is the prisoner that must be broken."

  • Tutorial entry on Shattered Souls

The Games Foxes Play

(complete source code on github | view all previous posts | play 0.4.3 online in browser on itch.io!)

The toiling in the UI mines continues, scorched by the heat of the miniaturized sun that is my laptop CPU every time I cause an infinite loop, and pestered by the buzzing of the feature ideas sparking up while I am stuck in graphical work. Not to mention the fatigue of coming home from the modern aberration known as the 40 Hour Work Week...

It's particularly annoying that so many of these features used to be completed, but have to be remade from scratch due to the rendering code working in a completely different way after my rewrite.

I am now pretty much exclusively debugging and testing my game with Tauri. I really love how smooth the performance is, and also how the game automatically refreshes in seconds every time I make changes to my code for me to test it right away. It's so elegant that it has gotten me to start reading the first few chapters of the Rust book. Ironically, I had bounced off Rust when first trying to choose what language to make my game in (thebracket's tutorial is amazing but very complex for an absolute beginner). I think I would actually stand a chance now that I have honed my skills - but I don't want to risk getting sucked into a new project, so my interest will remain superficial for now.

Glamour Sparks Respect

In the spirit of adding some pizzazz to my otherwise unimpressive minimalist graphics, I added a few extra sparkles. Sorry about the low framerate, still figuring out how to record GIFs on Linux.

  • This awesome glitch effect, which I shamelessly stole borrowed from the Internet, looks absolutely amazing on all things holographic. It depends on a library that has a "no commercial use" license - not that selling this game was my intention, but honestly, this effect is so cool it might just harden my choice even further.

  • The map, minimap and Hypnotic Projectors now use actual tiny tiles instead of boring plain pixels. Next step, making it zoom in when you step into a Hypnotic Projector for that fancy aesthetic?

  • Collecting Souls now makes them faintly bounce around the UI, resulting in a dazzling show when many have been acquired.

  • The "paint cans" used in the Soul Cage now use a bouncing effect instead of a rotation effect. Turbulent Souls stuck in the cage also vibrate in a neater way, though I am not sure if I'll keep the latter.

This week, I have also encountered (and patched) one of the most devious bugs I have ever seen. Every time I passed a door, the frame rate was reduced by approximately 1. This was utterly unnoticeable in short playtests, but after a while, I started to get suspicious, mashed my keyboard on top of a door tile, and reduced my game to a slideshow presentation. I frantically looked around for the cause for 2 and a half hours, commenting out and trying tons of deranged fixes, until I finally realized it was all because some backwater function drawing a tiny button in the sidebar was getting called over and over again and drawing thousands of mini-buttons on top of each other.

Fun.

Trees Of Knowledge Covered In Webs

The research screen is slowly being re-introduced, with a new sprawling design! I didn't like the cramped and claustrophobic previous iteration, so now, I am going for something truly expansive. I have mapped out a very unique (to my knowledge) game mechanic idea related to this screen, and I am so hyped to begin working on it. If only all that pesky UI work could stop getting in the way...

Tail Between My Legs

"A kind being both takes and gives, while a saintly being only does the latter. When that gift is death, suddenly, everything changes. Why is that?"

  • Flavour text of Share the Fruits of Faith, Form component

The Games Foxes Play

(complete source code on github | view all previous posts | play 0.4.3 online in browser on itch.io!)

Well well well well well. Look at me coming back to the JavaScript libraries with my tail between my legs, moments after I said I was done. I tried to resume feature development normally, but after entering the crafting room and seeing my FPS become a slideshow presentation, I realized that my game code has reached its limit. It is bloated by gore and unholy practices from back when I was literally using my own game as motivation to learn how to code. I see now why Kyzrati said "don't make your dream roguelike right away unless you like starting over".

Well I do kind of like starting over. It's refreshing to grab a big metaphorical axe and butcher up the unworthy who think parasiting my 256MB of VRAM with their 1500+ drawSprite() calls every 15 milliseconds is funny.

  • Possibly about half of the game's entire code has just been vaporized out of existence.
  • The entire graphics and UI module has been rewritten from scratch, this time using PIXI.js.
  • In addition to being playable in browser, the game has been turned into a standalone app using Tauri.
  • Tons upon tons of mechanics that had been concocted back when I didn't really know where I was bringing this project have been expunged.
  • Many fundamental concepts, like monsters existing and moving around, have been significantly changed to ensure the player character is no longer some special snowflake with unique functions, but rather just another creature with some "is Controllable" flag set to true.
  • The "Great Wall of Global Variables" has terrorized the populace for too long, and has been rightfully destroyed.

This hurt. It really did. So many hours of work, just gone. But proved to be a worthy sacrifice. At last, I have:

  • Pure 60 FPS crispy goodness (well, when using Tauri, that is)
  • A 1920x1080 resolution that actually makes sense
  • A gloriously juicy UI redesign, unfinished (still need to readd the minimap and many other features...) but already showing promise
  • A code architecture that does not instill desires in me to abandon society and live in the woods when I look at it

That one unholy multicoloured text function had to be redone from scratch, and it was just as horrible the second time around as it was the first time. I spent an unreasonable amount of time trying to get some random npm library to do the work for me, but got crushed under the might of a thousand compatibility errors, and had to do things my way instead. But hey. Now I can have bold and italic text!

I have also unlocked a lot more visual tricks to add some pizazz to my otherwise minimalist graphics, like this annoying blur effect. It is giving me delusions of grandeur to make this game actually look good despite my non-existent art skills. Please dispense a slap to my facial regions to knock some sense into me.