Fortuitous A.I. Mechanics

Kristen is out of town today which means I have some free time to drill down and work on my little game side project. The working title is “Lucy’s Adventure” (Lucy being the fox). It’s a Super Meat Boy/Boshy inspired platformer that aims to be progressively difficult, but in a non-bullshit type of way. Translation: death happens a lot, but the game telegraphs to the player how. The goal is for the player to feel like every death could have been avoidable.

After completing the game’s first two levels, aptly named “Baby Steps” and “Mechanics” I started work on level 3: the game’s first boss fight. In this fight, Lucy picks up an M16 which initiates a battle with the Boss of the first three stages: Lava Lord.

Sometimes when programming, the funniest and/or most unexpected things can happen. In my case, this usually is from a result of lack of understanding, a mistake, or more often: laziness. These two images sum this up perfectly:

For example, I didn’t want to redraw or edit sprites to have the gun move with Lucy, so the gun destroys itself and redraws every frame on Lucy’s position. It works great, and looks hilarious. Perfect.

😂

Even more funny was when I started programming the Boss’ A.I. It’s a pretty challenging process in itself, lots of function tail calls and recursion until certain conditions are met, signalling the boss to change states. I created some states to bring what I’ve considered abstractly to the game. When I ran my build, I just about lost it:

Holy…

The problem was obvious: I was calling the function that handled the Boss’ attack incorrectly. However, the outcome was better than if the game were working properly: it was harder to dodge, and actually looked pretty cool.

LAME

After I fixed it (he only throws a single fireball, which was the original intention) it felt… lame. Obviously the movement will be sped up, but a single fireball at this point seems unfulfilling.

I wonder if I should change it back. If I do, I wonder if creating so many instances of the fireball object like that will run poorly in some browsers or devices. I wonder if I should find a way to make it look like that properly without devastating that poor Android device running KitKat.

I wonder how many developers work on software and make mistakes that become features. It’s really a great feeling. I imagine it’s like painting a picture and spilling the paint bucket on the canvas. While you’re initially worried that you screwed up, on second look – that blotch kind of looks like something, let me add a few more colors. Wow, that mistake really made the piece!

At a minimum, I definitely think I need more fireballs on this canvas 🔥.

One comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.