Castle Exterminator

Currently I’m about 60% of the way done in getting the Castle built and in the proverbial “Can” that movie people are always blathering on about. It seems to play pretty well, but at this point it’s a little hard to tell since none of the doors work and the traps exist only as a figment of my caffeine addled brain meat. Which is taking a lot longer than I would have thought. Basically, I always have to plan around the traps that aren’t there yet. Nothing that’s too big a deal, and since I’ve whined about this already I won’t again.

An example comes to mind regarding a new aspect though. There is a level where you hop down from a platform and there is (going to be) a buzzsaw running to the left and right. The player has to time the jump to hop down, run and the hop up to the relative safety of a handhold. I must’ve tweaked that bloody thing a dozen times. The Thief would hop down and get stunned by the drop, minor as it is (who’s bright idea was that anyway?). Usually, the stun is a small inconvenience, something I make the attempt to avoid causing since I have plans to include a Speed Running mode later. In any event, in the case of the blade puzzle, the stun could be lethal. The player hops down and gets stunned and…dead. Now imagine you’re playing on Perfect mode and you can’t continue. Now further imagine going out to buy a new controller after that happens. So yeah, lots of tweaking to accommodate the as yet unseen.

– When I do the puzzles, I force myself to play as if the traps are all there. So I duck when I need to and I jump when I feel I should. Consequently, I’m finding that there are a lot of odd control combinations that I hadn’t come across before, and odd things that happen as a result. One puzzle has some of those spinning blade traps that you have to duck under, then wall jump out when the time is right. The problem is that the system was somehow holding onto the Down arrow in some kind of hidden key queue (that’s really fun to say! Everybody now! {Really? Everybody?}). So when you jumped onto the wall, you slipped off like, oh I don’t know, add your own prophylactic joke here. So that had to go.
It turns out the solution was actually to insert a bug into it. You see, once upon a time I beat on the code so double jumps would work on a single key. The issue was that once a key was looked at, it was forgotten by the system. So what I did was add a quick bit of code to the jumping function. Code that does something by doing nothing:

If KeyHit(DownArrow)

If you’ve seen other code snippets you’ll know that stuff usually goes in between the If and the EndIf. Here, there is actually nothing. However, by the very act of asking about it, it clears just that key. So now the player can duck and immediately jump onto a wall with neither fuss nor muss.
The same thing worked on correcting a bug I called “The Ritalin Thief.” Sometimes, for whatever reason, The Thief would dash off the wall as soon as he hit. Usually, this would end abruptly when physics happened and the ground rushed up to say “bonjour“. It seemed that even though the Dash Bar was empty, the Alt Key press was still being summoned up and saved. So, once the wall was hit, the Dash was triggered and, as Freddy Mercury would say, another one bit the dust. So I went in and added this to the Jumping code:

If KeyHit(AltKey) and DashBar
Same as above, but with the addition of the Dash Bar query. Now dashes still work while jumping and no stupid wall bug.

– I was looking at that great big list over there => and I’m feeling something incredibly dangerous for the first time on the project. I think I’m feeling hopeful. I can see the end, I know what’s left to do and I know how to get there from here. I’m almost home.
At least, I think I am. The stuff that I need to do is certainly doable. Were I to bust ass I could get this knocked out in 2 weeks, probably less. But, it’s not just me here, and it hasn’t been for a long time. We all have our prospective mountains to climb here, but I still think we can all see the top.

I remain confident.

Leave a Reply

Your email address will not be published. Required fields are marked *