Friday, 14 September 2012

And then things get artisy

I'm nearing the end of major programing, I still have several things I have yet to build and some parts of the code I'll have to rebuild for better performance however the majority of it is behind me. I got the stat bars art redone, still rough but it now is more along the lines of what I want. I also redid a lot of the buttons with roughs of what I'd like the final version to be. On the instructions page I did some basic color fills for the book, just so you can't see through it. I also updated the instructions page background and redid the art on the garbage pile, rabbits foot and skateboard.

Some bugs that I fixed included the savings box not being killed when the rest of the boxes were. I had an error where the first and second jump power were getting reset to 15, I found a place where I had hard coded that number earlier before I had tweaked with it. I had an error when the percentage that was being saved on the lives wasn't showing up, turns out my math was a little off. I had some trouble with hit detection and  the man hole however once that was working it wasn't a problem. I also has a bug where you could super-fall at a moving cart and either phase through it or go about half way before shooting back up, this was fixed extending the detection rage and changing a multiplier to match that of the max fall speed multiplier in super-fall.

Some things that I've added are manholes that appear in the later levels, they are open to different extents depending on the current level, their position on the screen is also randomly generated ever reset. I added in darkmatter which is needed to super-fall, and it can be purchased along with other equipment at the shop. I added in a falling animation to the manhole along with a rough running animation to the rubbish. Finally I added the feature of being able to continue if you currently have extra lives, this unpauses the level and spawns a new rubbish. This would allow people to not have to replay a 2-4 minute level if they did near the end or got a really sweet drop of good garbage.

Thursday, 6 September 2012

Carts hurt

Today I was mostly working on getting  the shopping cart up and running, but I also worked a little bit on the garbage generation system. While I was doing a test run I noticed that I was sometimes getting ten or more bad garbage in a row. I found this became frustrating  and boring very quickly so I knew I had to make it so that a good garbage would drop every few bad garbage, making sure there was always a goal on screen for the player to work towards. I had to partly rebuild my garbage generation system but it's defiantly for the better now. I was using a while loop to try and generate a piece of garbage, if the garbage selected was too expensive then it tried again. One problem with this was that only the good garbage had a chance of being rejected since the bad garbage doesn't take away from the remaining points for the current level. I fixed this issue by moving the while loop to inside the good garbage generation inside the general garbage generation function. This way if the good garbage was too expensive it would try for another good garbage instead of possibley spawning a bad garbage instead. I also put in a counter that, after four bad garbage have spawn makes it so it automatically spawns a good garbage next, just in case the random numbers keep coming back bad garbage.

For the shopping cart I have it so if your at the front and it hit, the cart bouncing back some and your rubbish is pushed the other way for a second. It also takes away one health when it hits. I get around having to make giant leaps over the whole cart I added in that if you land on the top of the cart it bounces you up to near the top of the screen, you can't jump any more after that but you can fall quickly if the down arrow is pressed. In the video that's posted the bouncing off the top of the cart hadn't been added yet.

The last thing I add is that once a jump is started you can only travel in one direction. After coding it though I didn't think it was as fun to jump around so I've commented it out for the time being, however I might change my mind after I've tweaked with the jumping some more.

Wednesday, 5 September 2012

Isn't Jumping Fun??

Today I worked some on the gravity levels, max fall speed and base jump power for the rubbish, I was finding that you couldn't jump high enough, and then you seemed to just float down. So after some tweaking I was able to find a level where there is still lots of room for upgrading your jump power but you still are able to go quite a lot higher. I also added in the functionality to the down button which allows the rubbish to descend rapidly from the air, faster then the max fall speed would normally allow, in case they need to hit a rat or grab a garbage that's below them. I think that I'm going to make an upgrade that allows you to do this instead of allowing the rubbish to do it from the start of the game.

I also added in a very basic cart which only appears after level 7. So far all it does is spawn on the right side, roll across the screen then kill itself once it's off the left side of the screen, however I plan on making it so if your rubbish gets hit by the side of the cart they take 1-2 damage. I was also thinking of allowing the player to bounce off the top of the cart if they are currently falling, this would add more strategy to the game along with extending the amount of time a player can stay up in the air, however they wouldn't get their jumps back.

Tuesday, 4 September 2012

Select Your Side

Today I've spend about 3-4 hours working on my game, I've gotten the double jump working, bad garbage can now hit and kill rats, and the level selection page is working.

For the double jump, I was having a hard time getting it to do what I wanted, but after taking a look at the code I've been trying to use I realized something, it would be far easier so just delete the guts of the function and start over. After looking back I saw just how complicated I had been making it, when in reality I was able to cut down between 5-10 lines of code and get it to work perfectly.

When I wanted to get the garbage to his the rats as well as the rubbish I first didn't think it would have to be done any differently then the hit detection I have for the garbage hitting the rubbish or the rubbish hitting the rats, however after did some thinking I had to consider that all the garbage and rats only has two targets they were looking for, one is the single rubbish and the other is the non-moving ground. This was easy enough to do if I just kept track of the rubbish's current x and y, along with it's height and width, but since there could be multiple rats and bad garbage I had to think of a different way. I ended up making a 2D array, with each position containing a smaller array containing information about that particular bad garbage. It has it's current x and y positions, it's width and height, if it's been removed from the screen(I used a Boolean) and it's name. This allowed my rat, every time it tried to move, to scan through this array using a while loop, checking to see if it was currently colliding with any bad garbage that was still on screen. The rat kills itself then modifies the array referring to the garbage that hit it, so when the garbage updates it see's that it's collided and shouldn't be on screen anymore so it kills itself.

The level selection page wasn't that much extra work because I've been coding this game so far so it works off what the current level it, so all I have to do when a different level is selected, is to then assign stats.currentLevel to the number of the button clicked. I did have a few problems trying to catch the event that was dispatched when a level was clicked but I was able to fix this by having my map page listen for the buttons on it, then dispatch it's own event to the main page controller when something was clicked. In order to place all the different level buttons using code but without taking too much time I ended up using 2D arrays again with a while loop. Each array inside the main array just contains the x and y position of each level button, this way all I have to do is change those two numbers, which are all in one location, in order to get the buttons to move around. I'm starting to use arrays more and I have to say they really cut down on not only the lines of code that I have to write, but it also makes it easier to go back and make changes later, if you arn't a big fan of arrays I'd really suggest finding a few tutorials and trying to slowly incorporate them into your projects, before long you'll hopefully find them as helpful as I do.