Mechanic Evolution

  • I’ve been working on my platformer/game engine for about 10 months. At first I set up stuff that I knew it would need, like a user friendly level editor, menus, basic physics, joystick stuff, etc. As all of those things have become implemented, the pressure has increased to come up with good mechanics.

    So, how does one come up with a good mechanic?

    Some people who are smarter than me have said things like:

    “A good video game presents a series of interesting choices for the player to make.” -Stephen Totilo of Kotaku.

    “As a designer, you want to explore each mechanic and make sure it can be enjoyed in 3 or 4 different ways” -Edmund McMillen, creator of Super Meat Boy and Binding of Isaac

    “Mathematicians talk about beauty. They seem to agree that the shortest theorems that carry the deepest consequences are the most beautiful.” -Mark Ten Bosch, creator of Miegakure

    How can these concepts be applied to a game?

    Well, one of the first objects that I made in the platformer was what I call a “Shooter”.

    First Iteration: The shooters could be placed anywhere on the screen, they would shoot fireballs that would move in a predetermined velocity. Each shooter has a timer, and you could adjust the amount of time between shots, and adjust the amount of time it would wait from when the screen loads to when it does its first shot.

    The shooters were implemented very early in development...

    The shooters were implemented very early in development…

    This is a very basic mechanic that is almost ubiquitous amongst platform games. It felt nice to get that implemented, but I knew that more could be done with it. What if I changed the properties of the bullets?

    Second Iteration: Bullet types! What if the projectiles have weight? I did make some basic physics stuff already. I made spike-covered boulders that were affected by gravity as soon as they were launched. Not long afterwards, I had implemented springs. If an object touches a spring, it gets launched in a specific direction. What would it be like if the shooters could launch springs? Now you can have one shooter launching springs, and another launching boulders. The launched springs could either be weightless (like fireballs), or weighted (like boulders). The last bullet type that I added was a moving platform. They also can be weighted or weightless.

    Spike Boulders go right, springs go left. Cross carefully.

    Spike Boulders go right, springs go left. Cross carefully.

    So…. the shooter can launch 6 different kinds of projectiles. What else can we do to riff on this idea? So far, the shooters always launch objects in a predetermined direction….

    Third Iteration: Rotation! I am no genius, I’m just a peasant who lives in the woods and plays guitar. Luckily, math geeks love to explain math on the internet, so I was able to figure out how to rotate vectors by arbitrary numbers of degrees. Now, any shooter can be set to rotate 15, 90, 180, or 270 degrees after every shot. While I was banging my head against the wall, trying to get the math to work out, I stumbled on a really fun way to do rotation….. player position! The shooters can be set to rotate as you move left and right, or up and down.

    The difficulty curve can be more like a spiral.

    The difficulty curve can be more like a spiral.

    At this point, you can see how each mechanic creates nearly exponential new possibilities. However, there’s still more that we can do.

    Fourth Iteration: How does the shooter know when to rotate, and how does it know when to shoot? In the previous iteration, some shooters were able to rotate based on player movement. In a basic platformer, the basic ways a player can interact with the world are:

    • Move Left/Right (X axis motion)
    • Climb/Jump/Fall (Y axis motion)
    • Touch a switch

    So… we had just tried tying rotation to X and Y axis motion…. what if we make it so the shooters only launch an object when the player jumps? What if we make it so the shooters only rotate when a player jumps?

    Fifth iteration: Shot and Rotate Triggers. A shooter can be set to shoot and/or rotate based on its timer, on the room’s timer, whenever a player jumps, whenever an object collides with it, or when a switch is activated.

    Dude, if you stop jumping, there will be less fireballs.

    Dude, if you stop jumping, there will be less fireballs.

    I’m hoping that people like Stephen Totilo will enjoy the game, because he’ll be able to make decisions about rotating and firing the shooters as he plays. Maybe Edmund McMillen will appreciate seeing a basic shooter mechanic get “juiced” in multiple ways. Perhaps Mark Ten Bosch will appreciate the multitude of wacky rube-goldberg consequences that can come from this single object in the game.

    You can judge for yourself very soon if this is a good mechanic or not, I’m hoping to release this game in the next few months. There is a big metroid-vania-esque world that you’ll be able to explore, and you will be able to make and share your own worlds very easily.

    UPDATE: Jumpsmith is available now!

    Leave a Reply

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

    1 + = six

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>