Ignorance Turned Thin Mist

"A ruin is the final state of an idea - the data has crystallized into matter, latched itself into the material like a tick - and once all the praise has been drained out, it leaves itself at the mercy of passing hours."

  • flavour text of Souvenirs Hauled from Bygone Eras, tutorial node

The Games Foxes Play

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

I have cloned my source code to Codeberg, because as they say, when it comes to backups - one is zero and two is one. Learned that the hard way recently after I casually deleted the backup of my giga-huge DCSS Felid guide a week before the DCSS wiki went splat. It's back now, but that was a bit too close for comfort.

Dissipate the Mists of Ignorance

The research screen remake continues, and now looks snazzier than it ever was before. Animated tab selectors, removal of annoying scrolling, and sprawling skill trees!

In the original version, the code determining the unlock order and prerequisites was a simple database:

    "Vision" : ["Seed","Cage"],
    "Seed" : ["Herald"], ..etc..
}

However, writing all of these connections was becoming extremely tedious with the sheer amount of nodes available. Instead, there is now a simple algorithm to make an imaginary liquid "flow" through the connectors and unlock everything it touches!

On the sidebar, the dynamic description and flavour text box has also been reworked. Just making the colored text work again took over 10 hours. It is bewildering to me how hard such a simple feature is - and the only library I found online is rather unpopular, has a trillion dependencies and is also only available for a deprecated version of my rendering library (PIXI.js). This is the kind of thing that makes me salivate at Rust programmers - when they have a crate, it rarely goes out of date, because it is simply finished. And also, they don't have to deal with the 200 IQ feature that is:

  • measureText("rogue") = 24 pixels
  • measureText("rogue ") = 24 pixels
  • measureText(" rogue") = 28 pixels

I have a question. For the JS gods. Why?

In the end, my final implementation is very sad. It literally writes the text normally all in a single color, then locates all words from a "special words list" and places new Text elements on top with a different color. This basically means that I can't ever have bold text without messing everything up. Oh well.

There is also a mysterious cyan variant of the "liquid flow" unlocking algorithm, which spreads very rapidly across the entire network and unveils truths as if they had been obvious since the very beginning of our protagonist's journey. I hope to build an entire core mechanic around this peculiar infection - and I believe the moment where it finally gets translated from my design document into code will be the big turning point between an amateurish experiment and an actually promising potential game. Over a year later, about time.

Arcane Researchers Toil Alone

I've come to find out that solo game development is very much based on intrinsic motivation. People can give you a thumbs up after you show off a neat screenshot, but there's never really an ear that's willing to hear you unload your entire thought-stream for obvious reasons (this is not a complaint, I certaintly do not want to hear any unregulated thought-streams myself). The process of making the thing in itself requires one to be obsessed with the subject matter to avoid giving up. If I wasn't so attached to the concept and to the characters of this little glyphic imaginary universe, these posts would have dried out long ago. I understand why duo-development projects are quite often more successful... Though the more minds go into the creation of a product, the more diluted it risks becoming. "Dans les petits pots, les meilleurs onguents" (In the smallest jars come the best ointments), as they say in my homeland.

I generally try to read the other posts in this thread every Saturday, though I tend to have trouble parsing the tech-tongued incantations some users here particularly enjoy. I'm just glad to have an anchor to tie myself to every week, even though it might just be a kind of placebo.

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...