In this update3
Full notes
Full Domain of Hallucination update
Read the full published notes in a cleaner layout. The original post stays linked below.
Repeated intro
Hey y'all,
What changed
- Performance
- UI and audio
- Maps
- Fixes
Domain of Hallucination changes
there's a been a pretty big bug that snuck into last version undetected. This is a good opportunity to have a bit of a technical talk about one of the issues when working with the Godot Engine: Circular dependency.
Now, I am a big fan of the engine compared to others that are around. For making 2D games, it is definitely my personal favorite because of how straight-forward most components are, and by enforcing type-safety in the editor, you still get that robust foundation. And it's open source, so anyone can work on it if they wish. All around great stuff, DoH is built on top of Godot 4.3 for those reasons.
But, working with it so much, there is one issue that has cropped up a bunch of times in our projects. It happens when you have scripts that need to load other scripts in order to work. Broadly simplified, if you happen to have multiple scripts that need other scripts to be loaded first to function, and those scripts need that script in order to function, you get something that's called a "circular dependency".
Now, you might be thinking: "this seems pretty avoidable, just don't do it like that!" That's easy to say for the example above. But, when you have so many moving parts & multiple people working on it, your code base starts to look a little bit closer to this after a while:
It gets harder to spot, especially when you're knee-deep inside of a different rework & lose focus of the grander architecture.
Now, this wouldn't be that bad if you could detect that while working on it, and if it showed you exactly where you've added the dependency. Unfortunately, when working on the game in the editor, it doesn't care & handles these dependencies fine, so nothing breaks until you export it. By that point, you get a crash or a bug at a seemingly random point in the game with a vague error message, and you have the scrounge your entire code base to find it.
In our case, I added a feature that would display the available engravings in an area in the HUD. And, if you had no available engravings left, it should display an exp bomb, since that's what you get instead. I figured I'd load the Icon directly from the pickup, if we ever decide to change that icon. However, somewhere in that chain, a circular dependency was created. Now, that meant that in the export, the scene containing the exp bomb was unable to load, so whenever the game tried to spawn one, it just didn't. When trading with the fruit market, it even crashed. Working backwards from that back to the UI was really annoying, especially with having to export everything over and over. The fix was to load the texture directly into the UI.
So, in short, we couldn't catch the error while working on it, and it was a pain in the ass to find it afterwards.
Enjoy the update, folks, and have a good one. Jonas Wiesli Team Quintuple-A
Patch Notes
Changes
Added more obstacles for the crystal biome
"Attacks" -> Split up into "Attack Base" & "Attack Mult" respectively
Bug Fixes
Fixed a bug where trying to spawn an Exp Bomb would either not spawn anything or crash the game
Fixed another bug where bosses would not use their abilities
Source
Changelog.gg summarizes and formats this update. How we read updates.
