Friday, July 27, 2012

Kingdom Of Loathing

So I've been playing that game in the title quite a bit now, and have decided to form a guild, it has a fully kitted out rumpus room, and I've started to building a clan wars army.

The guild is of course named after this blog.

Thursday, July 26, 2012

Sorry

Yeah no update yesterday, but I have a really good reason. You see something whent wrong with Game Maker for awhile there, but YOYO Games finally got around to fixing it.

So I spent yesterday catching up on my work. See? I told you it was a good reason. Or at least it's a good reason to me.

Monday, July 16, 2012

Another Shooter, Update 1

So I promised an update on Monday and here it is. Unfortunately no download this week as some of the changes I'll be mentioning are taking a while to implement. Part of the problem is that I refuse to release a version with known bugs.

New upgrades- Even more dakka to upgrade to!
New Level!- And with the extra time I may even finish more levels!
Increased Viewing Area - This one is taking awhile, but the game will be much better with it!
Second Level Boss is Now the Boss of Level 3
New Second Level Boss!

New Decorative Boss Items
Decreased Enemy Bullet Speed - They moved way too fast before.
Tons of Bug Fixes! - Yes the health item actually works now!
The Explosions are Now Blue- Too keep bullets from being lost among them.
Rusher Enemy Exp Gain Increased! - From .1 to .5
This Guy
Level 1 Redesigned!

And Likely Much more as I continue working on it!

Thursday, July 12, 2012

The Boring Mechanics of Another Shooter, Part 4


Told you there would be another one of these.

Today I think I shall cover, the basic turret.

I've covered the power of harnessing  variables and objects so you should know where I'm going with this

mygun = instance_create(self.x,self.y,t1)

So the first step is to have whatever you want your gun attached to create the gun and give it a variable.
This is of course to prevent your turrets getting confused about what they should be attached to.


Getting the gun too stay is also fairly simple.


in the end step event
mygun.x = x
mygun.y = y


This tells the gun to move to the center of the object, you can use + or - to make an off center gun, like this-

mygun.x = x + 5
mygun.y = y



That will move it 5 pixels to the right.


Now for the most important part, as what is the point of a turret if not to point at stuff you want dead?


if instance_exists(player) [1]
then image_angle = point_direction(self.x,self.y,player.x,player.y)
[2]

As for firing, well you should already know this.

And that's all the typing I feel like doing at the moment, see you next time






1:This is to prevent errors if you die.
2:The first set of coordinates is the origin, self uses the objects origin, the second set is what you want to point at, in this case the player.[2a]
     2a:For a player aiming with the mouse substitute mouse_x, mouse_y for the second values.

An Update About Updates, How Meta of Me

So I think I've come up with a good schedule for my blog and it is as follows-

Monday: Update about whatever game I happen to be working on at the time as well as a new download if available.

Tuesday - Thursday: New entries in the current series, i.e. The Boring Mechanics of Another Shooter, Part Whatever.

Friday: I put up a new Q&A answering any questions I've gotten over the week, and if nobody asks me anything I'll just make stuff up like I did in here.

Saturday & Sunday: I think I'll take these days off, maybe do a bonus update as a thank you for any donations I get.


I'd like to note that the schedule starts today, so The Boring Mechanics of Another Shooter, Part 4 will be up later.

Wednesday, July 11, 2012

Announcing the Winners!

And here are the Winners.

Left 4 Dead 2 - http://steamcommunity.com/id/BuildMoarBeds
The Orange Box - http://steamcommunity.com/profiles/76561197994743020/ - aka Compybuilder
Dungeon Defenders - http://steamcommunity.com/id/VIPER-SVB

Due to the way steam gifting works I'm going to have to add you to my friends list, so don't be surprised to see a friend request from "Freak". Accept it and I'll send you the game.

The Boring Mechanics of Another Shooter, Part 3

So tell me, what's the most important part of a bullet hell game? Why the bullets of course, they are the true star of the show!


So let's talk about one of the more common patterns used shall we?
By which I mean the swirly doom pattern.


So how does one go about making this pattern? Well this is slightly less easy than those other things I said would be easy. Time to examine some code!

This is all in the alarm zero event. Yep all this just for one simple pattern.
if shootstage = 0 {
if shoot > 0 {
[1]

mb1 = instance_create(self.x,self.y,heavydakka)
[2]
mb1.direction = angle1 [3]
mb1.speed = 5
angle1 = angle1 + 10
[4}

mb2 = instance_create(self.x,self.y,heavydakka)
[5]
mb2.direction = angle2
mb2.speed = 5
angle2 = angle2 - 10

shoot = shoot - 10
alarm[0] = 2 }
else { shootstage = 1
[6]
shoot = 180}}

if shootstage = 1 {
if shoot > 0 {

mb1 = instance_create(self.x,self.y,heavydakka)
mb1.direction = angle1
mb1.speed = 5
angle1 = angle1 - 10

mb2 = instance_create(self.x,self.y,heavydakka)
mb2.direction = angle2
mb2.speed = 5
angle2 = angle2 + 10

shoot = shoot - 10
alarm[0] = 2 }
else {alarm[3] = 30}}
[7]


I think that's enough for now.

 



1: The shoot variable is used to tell how far the sweep should go, the shootstage variable is used to reverse the sweep for another go.
2: This part of the script tell the game to create an instance of the bullet and assign it a variable, in this case the variable is mb1, short for My Bullet. The variable will then be reassigned to the next bullet fired and so on.
3. Adding the variable to the front of the command tells the game to perform it for the object with said variable, in this case telling the bullet to move in a direction equal to the variable angle1 at a speed of 5.
4: And of course you need to increment the angle variable in order to get that nice sweeping motion hence this part of the script.
5: I wanted it too fire two waves at once so I added another set of variables this time assigned to mb2, that moves in the opposite direction
6: This is where the firing arc reverses, it simply says if shoot is zero, and has thus traversed the full 180 degrees, then set shoot stage to 1. The following actions are all the reverse of the first ones making it sweep it's bullets back to the front.
7: After the shoot variable is zero again alarm 3 will get set instead of alarm 0 [7a].
     7a: The alarm is basically a timer saying wait x then perform actions with x being the amount of steps you set it to.

Ads

I know they're annoying but I need the money, Badly, which is why I've submitted an application to become a publisher on Project Wonderful.

If it works I promise to exercise some restraint.
I'm thinking I'd put one at the top and one at the bottom of the page.

So why Project Wonderful you might be wondering? Well the answer is simple, they seem to provide the best service and a lot of the ads they provide seem to be things that are worth checking out...

And I would like to add that I'm totally not brown nosing for the reviewer.




Wish me luck I guess.

Tuesday, July 10, 2012

Game Giveaway

To celebrate the opening of this blog I have decided to run a giveaway, I have a copy of the Orange Box and Left 4 Dead 2 to give away.

To enter simply leave a comment saying which games you'd like and a link to your Steam account so that if you win I can get the game too you.

I will pick two winners at random 24 hours from now.

Update! I now have a copy of Dungeon Defenders up for grabs!

Update Part two - Update Harder: Last call for the first Left 4 Dead 2 drawing, it is in 10 minutes.

Update 3 - Congratulations to just4u on winning the first game!

Update 4 - Last call for the main drawing, it starts in 20 minutes!

The Boring Mechanics of Another Shooter, Part Two

Hmmm, what should this post be about? Oh, I know, how about all the minor stuff that doesn't warrant a full entry of their own? After all it's the small stuff that really sets things apart.


Well let's start with how to make two different sprites sync up.
I bet you didn't even notice that the glowing parts of the normal player sprite and the one when you fire match.

It's simple, use a variable to keep track of what frame the animation is on and when you need to swap sprites have it use that variable to skip to the appropriate frame.

This is all in the Step Event
if sprite_var < 15
then sprite_var = sprite_var + 1
else sprite_var = 0
[1]

if s = 0
[2]
then {sprite_index = players [3]
image_index = sprite_var
image_speed = 0}
else {
if s = 1
then {sprite_index = playershoots
image_index = sprite_var
image_speed = 0}}
[4]





Thanks to that code these two separate sprites sync up.



I'm sure there's a better way of doing it but that's how I figured it out.



Hmmm what else to cover?

Ahhh, here's a quick one most of you should know, but beginners may find useful.

The health bar. The way it works is that player hp is tracked by another global variable. As you've seen before the frame of animation in a sprite can be changed via variable... put two and two together and you get-

image_index = global.hp_player [5]
image_speed = 0 [6]

Put this into the step event of your health bar object, and voila a custom health bar
The experience bar works the same way.


That's enough for now I think, at the rate I'm churning out posts part three should be out in a few hours or so.



1:This is the code that tells what frame the animation is on, obviously there are 16 [1a]  frames.
    1a:Frame count starts with 0.
2:The variable s is short for shooting and is used to keep track of when you are firing the guns, and thus when to change the sprite.
3:I add an s at the end of the name of sprites to differentiate them from objects .
4:In English, if not firing then use the standard sprite with frame equaling the sprite variable, and an animation speed of zero, otherwise if you are firing then swap to the firing sprite and do the same.
5:You'll need to draw one frame for each hit you can take, with frame 0 being an empty health bar.
6:This is how you keep the health bar from cycling through all it's frames.

The Boring Mechanics of Another Shooter, Part 1

Hello my non-existent  audience, lets discuss the way Another Shooter works shall we?

Those of you with short attention spans may want to leave now, as there will be GML.


Earlier I mentioned the simple rpg mechanics, in fact I mentioned them at 12:05 this morning.... wow I post fast.

At any rate I'm sure you know what exp is, but you earn it in a totally original manner, by killing stuff.

Most enemies give a single experience point, boss sections also give one with the core giving 20.

When you get 100 exp you level up, resetting the counter and giving you a new ability.

Almost There

Time to get more technical. I did warn you did I not?

Exp and level are handled by two global variables[1] to put it in GML[2] when an enemy dies this happens-
global.var_exp = global.var_exp + 1 simple I know, but it gets the job done.

But how do you actually level up you may[3] be asking! Well it's simple, or not that simple.
if global.var_exp > 99
then {global.wlvl = global.wlvl + 1
global.var_exp = 0}

See just an if then statement, in english it says if exp is greater[4] than 99 then increase weapon level and reset experience back to zero.

So how does that make you more powerful? Well it's simple, when you shoot the variable global.wlvl[5] is checked, and if it's high enough the good stuff gets fired.

And I think that's enough for this post. Next time I'll talk about some other complicated thing[6].

If anybody actually read this and want's to know something, leave a comment below and maybe that will be what the next update is about.









1:Global variables are variables not assigned to a single instance of an object and can be called by anything.
2:Game Maker Language.
3:Or may not.
4:The greater than is a contingency in case you wind up with more than 100 exp somehow, like killing the core at more than 80 exp.
5: Short for weapon level, in case you where wondering.
6:I love footnotes, especially the snarky ones.


Free Sprites

Say, are you a worse artist then ME?
Well then, you are a horrible person and should feel extreme shame for sinking too an all time low.

But if this is the case then I have good news for YOU, yes you, the one in the blue shirt!
For you see unlike some stingy people who hoard all their assets, I upload them onto the internet free for all too use!*

The sprites can be found here!

And the sounds!


Sound Pack


*Sprites are distributed under a Creative Commons license, I do not require you to attribute the work to me but it would be nice. All that applies to the sound pack too.

Creative Commons License
Sound Pack is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

Another Shooter

I've begun work on something new, and maybe exciting.

And I even have download for you, nice of me isn't it?

Warning Incomplete Alpha Version, Only Two Levels!
Download

Controls:
Space Bar shoots arrow keys move, if you can't understand that, then you have issues.


List of current features.
Lots of bullets!
Lots of stuff EXPLODING!
Modular bosses to destroy bit by bit!
Did I mention the bosses are huge!
Except for the first boss.
Simple RPG mechanics, because that ALWAYS adds to a game!
Unfunny jokes about how generic it is!
I make all the assets so you never have to worry about a cease and desist!
And best of all it's free, it will always be free!

boom





























 Told you they got big, and that's only the second boss!