Tuesday, April 9, 2013

Earthbound Dungeon Design

 
Earthbound, the quirky little SNES RPG everybody knows and loves.  As an RPG, it obviously has a few dungeons, so let's talk about those, shall we?
 
You'll find that Earthbound likes to point out general tropes about other RPGs.  For dungeon design, we get Brickroad, the budding dungeon designer.  So, what does he say about dungeons, and how does Earthbound follow those guidelines?
 

"Items that are easy to get are usually disappointing."

 
You've surely been on the recieving end of this tactic.  Your walking along a hallway in a dungeon, and up ahead, just a few steps off the main path, is a glorious treasure chest.  Excited at your discovery, you rush over to recieve your bounty.  What do you find?  The much sought after Rock of Does Nothing.
 
It's a pretty all pervasive thing in games.  If you found it easily, it's a piece of crap.
 
Now, that chest behind the spike traps, across the bottomless pit, surrounded by a lake of lava?  You definitely want that one.
 

"Congratulations, you finally made it!
There's a sign upstairs that says that."

 
RPG dungeons tend to go on forever.  Just when you think you've reached the light at the end, the door's locked, or you need to go find an old lady's cat.  Whenever you go into a dungeon, expect to be in it for the long haul.  If you're lucky, there might even be save points.  But probably not.
 
Earthbound is full of little nods to RPG design of the time.  Keep an eye out for the the next time you play.


Sunday, April 7, 2013

Intro to GML Part 2: The if Statement

Now that you've learned a bit about what variables are, let's use them to do stuff.  Probably the most basic statement you will run across in GML (and most other programming languages) is the if statement.  It helps control the flow execution in your code.

Here it is in the most basic form:

if (condition){
   //Do Stuff
}

That might look scary if you haven't done much work in code, but the idea is really simple.  Whenever your script gets to this part, it evaluates the "condition."  It can be any number of things, but usually it's a comparison between two values. If the condition is true, it does the stuff.

Now, let's use it together with some variables, shall we?  Let's make a variable called condition, and set it to one.

condition = 1;

Ok, now make another variable, and set it to 2:

anotherVariable = 2;

We can use the if statement to compare these two things, like this:

if (condition == anotherVariable){
      //Do Stuff
}

So, do you think we will reach the "Do Stuff" part?  Nope, not in this case.  The if statement asks, "is condition equal to anotherVariable"?  The answer is no, of course 1 isn't equal to 2, so the stuff inside gets skipped over.

Basically, it works like this:

if (true){
   //Do stuff
}

if (false){
   //Don't do stuff
}

The if statement has a wide range of uses, so it's pretty important to know.  In future posts, I'll show you how to put it to work in your games.

Thursday, April 4, 2013

Intro to GML Part 1: Variables

Here's part 1 of a multiple (as yet undetermined) part series on GML (Game Maker Language).  I've seen a few posts of people having virtually no idea about using GML, and hopefully this series will solve that.

What Are Variables?


A variable  is used to store information in GML.  They can store a lot of things, ranging from numbers to strings.  You can then manipulate them to achieve a number of purposes.

So, how do you use variables in GML?


Well, you have to declare them and identify them.  Usually this is done in one step, like this:

aNumber = 1;

This sets a variable named aNumber equal to 1.  You can then use this variable to perform different operations.  Let's say you wanted to add 1 to aNumber:

return aNumber + 1;

You'd get 2 as the return value.

Built-In Variables


GML has a bunch of built-in variables that you can use.  You don't even need to declare them.  Here's a short rundown of a few common built-in variables:

x
The horizontal position of something in the coordinate system
y
The vertical position of something in the coordinate system
hspeed
The pixels per step and object is moving horizontally
vspeed
The pixels per step and object is moving vertically

You use these variables to move objects around, and find out where things are in your game.  Of course, GML has many more built in variables than this, but it's best to take things in small bits at a time.

Ok, hopefully this gives you some idea about how variables work in GML, I'd be happy to anwer any questions in the comments.

Wednesday, March 27, 2013

Indie Game Marketing is Tough


Admittedly, Fungicide isn't quite finished yet.  It is certainly in a playable state, but some stuff still needs to be worked on and added.  Still, to get some feedback and have people actually PLAY my game, I've tried to spread it around the Internet a bit.  The results have been...mixed.  I don't even know what GOOD results would look like.

For those of you interested, here is my basic marketing plan:

Increase general online presence.


I just go around and comment on as many things as I can, and try to keep up posting good content.  Indirectly, I hope this will drive some traffic to the game.

Post Fungicide on forums.


Most likely, this will take place more in the future.  Right now, it's only on one forum, without many comments.

 

Upload to freeware portal.


I've already done this.  Fungicide is available for download on Game Jolt, and has had a grand total (as if..) of 17 plays in the last 6 days or so.

Things I haven't done


Fungicide isn't near polished enough to submit to larger sites for review.  I don't know if it ever WILL be.  I may try when it's much more refined.  By then, I would expect to be able to charge something for it.  Probably around $2, would be a rough estimate.

Right now it's free, though.  Maybe you should give it a try.

Friday, March 22, 2013

Long Night Programming and Testing Multiplayer

It was a long road, but the 2-player online for Fungicide is off the ground, even if just barely.  A number of errors and bugs are still around, especially around the end of a game, but it's functional.  The refining comes next.

The version up here doesn't have the multiplayer capability yet.  I have a bit more testing to do before I put it up.  I can tell you how it works, though.

Over LAN, all is well.  The Host has an IP, and the Guest uses that IP to connect.  They can then play a little 5 minute game of Killing Spree.  It was quite entertaining, with my cousin helping me to do some tests.  Everything seemed to sync up well, and the experience was great.

Over the Internet?  I have no idea.  I haven't had any chance to test that out, but it probably catches fire.

Through that testing, I learned a lot about my game.  First, working together makes things easier.  Second, having a partner easily doubles the entertainment value.

A lot of work remains, but things are progressing well.

I expect to have a working multiplayer version available here by Sunday.