Posted May 03, 2019 by bitbulldotcom
Yup, it’s been a while (again). I’ve really had my head down trawling through a list of bugs and small(ish) improvements that I’ve been noting down in Trello over the past few weeks. Desperately trying to keep the motivation up. Have also had a bit of contract work on (which is welcome given the current state of the BitBull coffers) which isn’t over yet either. But, I'm extremely glad to say that a very long TODO list is now all DONE!
So I’m just gonna bore you with a long list of these bugs as this shit is all part of the joy of gamedev. The improvements, which I’ll cover in the next post, are rather more interesting. As well as these there’s been a ton of other minor fixes and a lot of just going through and checking stuff over.
1. Max Out Weapon Damage
Weapons that dealt out damage for more than one frame were often inflicting more damage than they should if they came into contact with an enemy over the course of several frames. This was particularly apparent on bosses which often have a large vulnerable area and multiple ‘proxy’ parts that do damage to the main character. I now keep a ‘damage record’ for these weapons over the course of their lifespan to ensure they don’t exceed the maximum damage to any particular enemy.
2. Fake Frame Rate Judder
Sometime it could appear that the frame rate was juddering if multiple enemies were destroyed in quick succession. This is because I deliberately drop a frame with each explosion to add to the jolt effect. I’ve now implemented something so that this ‘drop frame’ can’t happen too much in quick succession.
3. Palette Fixes
There were multiple issues with things being drawn in the correct palette – particularly with weapons that should be drawn in the same palette as the enemy that fired them. These issues were exacerbated by the fact that I’ve now added three possible palettes for different enemy types. Been through and fixed all these.
4. Bones and Rubble Not Wrapping
Enemy bones and the rubble from destroyed buildings weren’t wrapping with the rest of the world in relation to the player. This had me scratching my head a bit at first – there are a ton of these sprites so I don’t want to check them for wrapping every frame. In the end I figured I could get away with just checking one per frame (the wrapping doesn’t have to be accurate as it always happens way outside the player’s view). This works fine and has zero performance impact!
5. Check Level Up Rate and Damage Scaling for All Enemies
Some of these were wrong so I’ve been through the laborious process of checking all the scaling parameters =for every enemy.
6. Splitting Crawlers
Under some scenarios the ‘crawler’ enemies were doing weird shit, splitting in two and stuff. I think I’ve fixed this (it was to do with the algorithm that positioned them sometime positioning them out of the player’s ‘wrap zone’) but it was such a hard bug to replicate I can’t be sure so I’ve also added some code to ‘paint over’ the bug should it happen again (I hope)!
7. Levels Completing Too Early
This could happen with enemies that split into multiple offspring when destroyed. Had to write something toi account for this in teh code that checks for level completion.
8. Parallax Scrolling Glitches
Keen observers may have noticed this on some of the GIFs – elements of the parallax scrolling kept moving when they shouldn’t and, on very rare occasions, could completely glitch out. This was a real pain in the arse to fix for something that should really be pretty simple – in the end I re-wrote pretty much all the parallax scrolling code from scratch.
9. RPG Anim Playing Constantly Post-Mutation
RPG weapon would glitch out if the enemy that was armed with it mutated. This was another one that was a real pain in the arse to fix (hard to replicate). In the end I figured out it was to do with object pooling.
10. Flamethrower Not Working On Egg Sacks
Easy fix
11. Jetsuit Pickup Not Wrapping
…and doing other weird shit like disappearing. I’d implemented this in a rather hacky way for some reason so went back and wrote it as a ‘proper’ pickup.
12. Invaders Getting Stuck
Blocks of invader enemies could get wedged between a high building and the top of the screen and end up not moving. Fairly straightforward fix.
13. Title Screen Glitch
Title screen could get weirdly offset if the player exited the game whilst in a treasure chamber(!). Fixed this along with a few other game over / exit issues.
14. Treasure Chamber Escape
Player’s could jump out of a treasure chamber using the jetboard attack and end up falling endlessly through the void beneath! Fixed.
15. Buggy Bombers / Gravity Hammer
Bomber enemies were glitching out sometimes when struck by the gravity hammer. Fixed this and have also gone through and checked a bunch of other enemies against the gravity hammer (which has probably ended up being the most PITA of all the weapons).
16. Player Jump Anim Constantly Playing
This could happen sometimes after a jetboard attack. Was surprisingly difficult to fix, largely because I haven’t touched that part of the code for something like three years now!
17. Teleports Skipping Levels
Fixed various bugs to do with the selection of levels when teleporting.
18. Teleports Blocking Chamber Entrances
Sometimes teleports and warp gates could appear over the treasure chamber entrance making it impossible to enter the chamber. Easy fix.
19. Disappearing HUD
Sometimes the HUD wouldn’t appear correctly on the upgrades screen meaning the user had no idea how much cash they had to spend. Fixed.
20. Enemies Appearing ‘Inside’ Buildings
Problems with some of the algorithms that position enemies as they teleport in. Fixed.
21. Scanner Rendering Of Destroyed Buildings
The scanner rendering of destroyed buildings was glitching out if the building was destroyed after it had wrapped relative to the player. Fixed, with some difficulty. At least this one was easy to replicate!
22. Explosive Raycasting Issues
There were some issues relating to the removal/blocking of enemies in the raycasting checks that are carried out for explosive weapons. Fixed these and also tweaked the raycasting code for much better damage distribution, plus made all explosive items inherit from the same class and got rid of a load of dodgy ‘cut and paste’ code.
23. Squockets Getting Stuck On Buildings
Sometimes the ‘Squocket’ enemies could get wedged somewhere and just keep banging their heads against a brick wall. I wasn’t entirely happy with the tracking code for this enemy anyway so re-wrote the bulk of it.
24. Limpet Mines and Collision Proxies
Limpet mines were sticking to collision proxies that weren’t transferring damage in their current state, rendering them pointless. Does that mean anything to you? Probably not, but it was an easy fix.
More interesting visuals coming in the next post... anything is better than BUG DAY!!!
Dev Time: 7 days (very approximately)
Total Dev Time: approx 275 days