Monday 31 October 2022

Halloween Horror Space Year 2022

Behold The True Horror This Halloween!

 More terrifying than any cosmic horror dredged from the neurosis of HP Lovecraft ... it's the global debt clock

Okay ... have you recovered from this ghastly Halloween fright? Then we shall continue with October's dev blog.

Finally I discovered the true source of a long running bug. I have spent months slowly chipping away at this bug, narrowing down the source and timing, even fixing the crash and suppressing the Out Of Bounds Array messages. Should have known that it would be an audio emitter issue.😫

 So it turned out that a lot of events happen when a player buy's Swag in Monsters Loot Swag, effects sparkle, audio plays, icons appear, objects spawn, marker objects hide and if there's a lot of other stuff happening at the same time ... and it's a game where there's always a lot of stuff happening at the same time ... the audio emitter can get out of synch when it wants to disable.

The solution was to stop everything from happening in the same engine tick with a simple schedule to make it all happen in order, giving the audio emitter a good half second to turn itself off and make sure it's ghost update of the network doesn't go tits up. Hurray, fixed and understood the cause. 😓

And speaking of audio bugs ... years ago I  noticed that sometimes the audio went ... iffy. It would start going off-key and warble intermittently. Not long before shipping the start of the Early Access game on Steam, I realized that this was caused by the camera being offset from the player location and thus camera and player could end up fighting for who got the audio source, with the sound cutting out if the camera was further away from the audio. At the time I threw in an emergency workaround by making the radius of all audio emitters large enough to swallow the camera.

Eventually I got around to coding a proper solution, use the camera rotation and the player object's location. This took a fair bit of maths as I could not remember which column of the matrix transforms I required to get to mix together ... until help on the Torque Game Engine Discord Server pointed out that there were already helper functions for matrixes and I could just use matrix.getPosition(); in cpp - boy did I feel dumb. 😅

The Takiyasha Ornamental Water Garden - early image

So, I have spent this month working on Level 6 for the next big update ... which I was hoping to have released this week but will probably take longer as I have redesigned the boss monster twice aleady. It's the Takiyasha Ornamental Water Garden and it builds on the environmental hazards which I introduced previously in Level 5. Behold water! Water is an environmental hazard as it slows down both the player and enemy monsters. I have designed the level so that if the player wants to get somewhere fast they're wanting to go through the water, but slow movement and enemy missiles are bad, so the player could decide to stay out of the water and go around it, thus preserving speed and the ability to dodge better.

I've also coded a lava type of liquid which only damages the player - more on that in Level 7.

Level 6 early testing gameplay

Level 6 is the home of the Stone Golems, high DPS, low HP, but very strong, range-based player characters have much lower strength than melee ones and so have a hard time barging them aside, and can easily get surrounded and trapped.

Once I finish up the level boss, Lady  Kaeru The Horticulturist, who is not going to fight you, and her giant champion who is going to fight you, I will be uploading the third big update to Steam, and the Early Access game of Monsters Loot Swag will be around 60% complete.

In the meantime, don't have nightmares!