Monday, October 28, 2013

Rockin' Out in The City

With the preparations for Fungicide's campaign coming along quite nicely, I thought sharing a bit of that progress would be a good idea.

My ability to make music has improved quite greatly since the early days, here's a little taste of Fungicide's soundtrack for those of you unfamiliar with it.


In the Streets - Indie DB

Handling Death

In games, that is!

Player characters can almost always die in games.  It's a way to keep the tension up and give them a persistent goal to work towards (don't die).  Different games, though, handle this mechanic in different ways.  Sometimes it's just a slap on the wrist, other times it comes with major consequences.

Dying usually sets you back a certain amount of gameplay.  You get tossed back to your last save, or the last checkpoint, or if you're particularly unlucky, to the main menu.  These consequences can, of course, be a major frustration to the player and cause them to stop playing.  At the same time, they raise the stakes and give the player motivation to keep going.

How do you like your games to handle death?  Minimal consequences?  Or a major hazard?

What about some sort of middle ground?

Intro to GML Part 3: A Simple Hit Points System

Ok, now that I've shown you variables and the if statement, we can build something useful with them.  Once again, this stuff is specific to Game Maker, so it may or may not be helpful if you're using something else.

Here's some general things you would do to create a hit points system for one of your objects.  First, you'd need to set a maximum the object can have, then fill it up.

So, in the object's create event you'd want:

//In Create Event

maxHP = 100; //Could be any number, change it depending on your needs
HP = maxHP; //Fills up HP to the max

Woo!  Now your object has hit points that do nothing!

The system we're going to use is pretty simple and will only work with games that use collision as being hit.  You know, like Mario games.

How does that work?  Well, you'll need to put this in the player's collision with enemy event:

//In Collision with Enemy

HP -= other.damage; //Player's HP is reduced by the enemy's damage


As is, this system won't work all that great.  Why?  Since collision will be checked every step, the enemy will reduce your HP really quickly.  To fix this, you'll have to add a time after being hit that the player can't be damaged.  There are lots of ways to do this, but this solution will use a "hurt" variable and an alarm.

Add hurt=0 to the create event like this:

//In Create Event

maxHP = 100; //Could be any number, change it depending on your needs
HP = maxHP; //Fills up HP to the max
 
hurt = 0; // Player can only be hit when this variable is 0

We're just using "hurt" as a sort of switch.  If it's 1, the player can't be hit.

We'll need our friend the if statement in the collision event now.  Basically, "if the player has been hit, don't hit the player again."

//In Collision with Enemy
if (hurt != 0) exit; //Nothing after this gets done if the player has been hurt

HP -= other.damage; //Player's HP is reduced by the enemy's damage
hurt = 1;
alarm[0] = 90; //Amount of time you want the player to be "invincible" after a hit
In the alarm[0] event, we tell the player it can be hit again:

//Alarm[0]

hurt = 0;


That's all you need from the player's side.  You'll need an enemy object, and a damage variable in it to have a workable damage system.

Saturday, October 26, 2013

New Fungicide Screens

I've been slowly but surely working on Fungicide, and things are going along quite nicely.  The art work is improving a bit, and I thought I might share a couple of new screenshots.



The campaign is getting worked on right now.  I even have two levels mostly done so be on the lookout for that.  I'm not exactly sure whether I'm going to release it bit by bit, or all at once when I manage to finish the campaign.

Probably the former, since I lack patience.

Also, I'd like to put up a little let's play of Fungicide.  We'll see how that goes.

In case you've forgotten, here're the download links for the game:

On Game Jolt

IndieDB
Fungicide Beta Release

Wednesday, October 23, 2013

League of Legends vs Starcraft

If you play PC games at all, League of Legends and StarCraft are probably front and center in your mind.  One has millions of both players and viewers, and the other is a titan IP that has been around for years.  They're very different games, but that doesn't mean you can't compare them.  With that, off we go!

I played StarCraft II for a couple years after its initial release.  Unforgiving is probably the best word for the multiplayer.  It was fast paced all the time, and God forbid you mess up on something.  Everything felt like it was on a razor's edge.  That tiny little mistake you just made feels like it cost you everything, and there's plenty of time left to screw things up worse!

Given StarCraft's history, though, you knew all this upfront.  I knew StarCraft was like that from the moment I took it off the shelf.  That feeling is one of the things that makes you play it.  It's for the seriously competitive, and nowhere online will you find much of a safe haven from that.

Then there's League of Legends, and the contrast, at least for me, is night and day when put next to StarCraft.  Aside from the player's themselves (I'll talk about them at some point...), League of Legends is a relaxing, almost no pressure game.  It's just not nearly fast paced, and so not as stressful.  At some point, in the crossbreeding process between Action RPG and RTS, a bit of edge was lost somewhere.

League of Legends

StarCraft
 

Maybe League of Legends changes as you climb the ladder.  For now, though, it's just a fun time killer to play with friends.