Wednesday, April 30, 2014

Jumping Box Final!

So... that took two weeks. Kind of not really...

At the end of that first week I had a rough idea, and a lot of hope. I ran in to plenty of trouble in the 48 hours I spent putting the game together.

I'm 2 days in to a new week, and just now publishing, but that's OK. I am publishing. And now it's time for the breakdown...

What Went Right?

The whole thing turned out the way I wanted. I was hoping to explore rotating the player box as it was jumping, but never got to it. movement, and even level creation went fairly well. I have not spent any time making sense out of the math of how I got the avatar to jump like I did. I just know, its working. I've pretty much figured out points, and I'm happy with the resolution's I've come up with to answer the question of "point reversion" upon death. For the most part this is the product I was looking to put out. As always, I learned/realized a lot along the way. 

What Went Wrong?

Player movement strategies with sine, bullet, and anything else that was not part of the "Platform" behavior. Shortcuts are  nice, but I'm starting to see the flaw in this system when it comes to learning about the more intricate things. I still have no idea how to manually make something "Jump". I also found out that if you stop a sine wave, you cannot revert it back to the first step, you just continue on if you try to use the sine wave again on the thing. I'm certain this is another one of the sacrifices for the sake of convenience. Not a bad thing, when looking a the whole picture, but a bad thing when looking at part of it.

At one point the avatar, upon jumping would stop on the floor, but once you jump again, it continued the wave through the floor instead of "jumping". combine things like gravity, and bullet behaviors, and it was like watching a rocket fly around with no control. 

Does it work? yes it does! I feel proud I sucked it up, faced my fears, ran in to roadblocks and powered through. The game does what I wanted, and is pretty good. I've confirmed that I am terrible at these jumping games as this one is probably a game I've play tested the most. I used a friend for alpha testing to confirm that it was not just my skill, and event then, half the times I failed, they were successful.

Thanks for reading. In case you've missed it, you can go here to play my game. Let me know what you think in the comments below?

Tuesday, April 15, 2014

Jumping Box! - Day 2 Aaarrgg and Yay

Skipped out on yesterday due to personal reasons. Got back in to it today a little and was smashing my head on the way.. My plan is/was to have a flat surface, with mo movement, and have obstacle just.. come at the player. As long as the colors matched it would feel like the player was moving along a surface.. as opposed to just dodging incoming objects. Makes sense to me right?

The only down side to this is I pretty much either had to build out this massive level of jumps thousands of pixels wide, and just bullet them towards the player. After that your golden.. But what a weird thing to work on. I might still do it like that, it's possible. But as I looked at it, and once I went back to Lessmilk's examples I noticed that he did the game in pieces like 3 or 4 jumps in a level, and just go to the next one. 

Player actually moves however, making your brain skew a little when it comes to timing your jumps.

The more I think about it, I might try for both.. maybe.. doing guesstimaiton I'm saying 3-5 jumps per tile 30 tiles. Ever tile.. 600 pixels.. so 1800 pixel wide game 200 pixel's tall. stick to 2 colors, and it should still be damn fast.. but how to deal with place holders.. checkpoints!

Yes! I will create my 600 pixel tile's place checkpoints at each one, and just.. move the pieces as needed.. I may be able to create 2 games at once.. using two different methods after all!

Sunday, April 13, 2014

Space Intruders: Day 7 - Final

It's been a quiet week this week as far as you know... but on this side it has been crazy. I ran in to a lot of speed bumps, and walls. Some I over came, some I got around, some will have to wait for another week.

Play it here

What I've Got:

As it is right now I have a pretty nice start on a top/down shooter. The level is only 30 seconds long howver. I was able to figure out sine, and with it I've got some neat patterns. Though to be fair, it is a little too time consuming for me to make a proper job of it so I just have a couple waves of fighters just for kicks. Proof of concept and what have you.

The title and game over screen are good. Though exhaustion keeps me from playing with Game Over vs Mission Accomplished depending on your health level.

I'm happy I was able to figure out the health and power bars. I have random (ish) power up drops. I was hoping to get them to have a chance of spawning @ enemy location upon death, but I could not figure out how to do it (see What Didn't Work). Initially I had power ups randomly spawning too close together so you would get 2, or 3 health or power pickups in a short amount of time. Will explain that fix later on as well.

What Went Wrong:

Pick-up problems all over.

Initially I wanted Power, and Health pick-up's to drop on dead enemy locations. However I could not figure out how to pick x, or randomly choose a number to determine if an item is dropped, and if so, if it's health, or power.

I decided after a couple of hours to just have pick-up's randomly spawn, and make their way down the screen. I set this up, but noticed that I would get a couple of power ups in close succession. I wanted it more spread out so I tried to do the following:

The condition of (inverted) as long as x power up is on board (theoretically telling the system to check for power up if it is on board, do not run, if it is off the board, run it. 

That failed to catch on, and in order to save time I just set the power-up's to randomly spawn at X second intervals. Making sure that the time span is long enough for pick-up's go traverse the entire screen before another on can possibly show up.

What Went Right:

I've gotten a lot better at figure out how logic needs to work. Most of the issues I did have were features I was not aware of. My use of the features/options I've used before is going smoother. It's easier for me to build up an idea in my head, and put it together in the "code" and have it work first or second run. Second run is usually me going "Why did that do that.. oh yea, because I need to do this too" once corrected things are smooth. I've also dipped my toes in to sine, and keeping track of things.

My patterned attacks at first were attached to game time, but I found out after putting a lot of stuff together that game time keeps ticking on the other layouts, and if I go to one layout, and go back to the game menu time is still ticking, so if you win one game, come back for a second one, the time/clock does not reset, so no enemy fighters came along (as their time had already passed). I basically added a manual clock counting half seconds, attached a wave number to the wave, and set it up so at this .5 second mark, as long as wave number is X than send out this set of fighters and add 1 to the Wave global variable. It took half a day to figure out that attaching a wave number would make it so I would not kick out a set of fighters ever tick for the .5 seconds that the condition was true (producing 30 waves of fighters in half a second).

Patterns were also a slow going process to create, so I only have a few in place. I want to do a lot more, but time is getting in the way.

Health, and power went beautifully, and I was able to figure out corresponding bar/sprite lengths to give the player a helpful guide to what their game was at.

All in all, I feel pretty good about what I have. As far as a game a week stuff goes.  I set out to do more than I thought, and ran in to some trouble along the way. I'm happy I did it though as now I have even more things I know I need to master. I'm really enjoying this whole Game  A Week challenge, I'm learning logs, and building my confidence in Construct2. I'm certain that I've only scratched the surface of how it all works, and that's exciting.

Next week is a new project, Box Jump. Probably the first project where code will be simple, and content is what matters.


Thursday, April 10, 2014

Day 2 (or is it 4?) Sine of the times

Second Day  - Only a couple more to go, and things got.. interesting

At the start of this week I wanted to work on my understanding of sine, and how to make it work for me. More specifically I did not want the random spawning I had in my GISHWHES project, or Lesmilks week 2 project. I wanted patterns, I wanted wings of fighters to swoop down laying out a pattern of fire, and giving more of a challenge to the player.

It's taken all day, and part of yesterday, but I think I have it figured out. My plan is to lay out enemies in a designated time with specific variables to create these patterns. I've done it, and it looks cool. However the work accomplish this for more than a handful of waves is kind of off-putting. It works, so I will take it.

I ran in to some trouble when it comes to dropping power-ups at random. I wanted to be able to kill a guy, randomly pick if it drops anything than randomly decide if it drops health, or power. I have not found a way to do this, or at least, I have not found a way that makes sense to me so that will have to wait for another day. My plan is to just randomly drop power ups and let the player catch them.

Tuesday, April 8, 2014

Space Battle: Day 1+1

A late start, but...

My Plan

This weeks plan is for me to build a top-down shooter like of line the old WWII flight shooter 1942. Or Lessmilk's Pixel War. I've build something similar for the GISHWHES hunt last year, so this go around I'm looking to improve/expand what I know, and try lots of new things. Here is my Laundry list:

  • Figure out sine whatever to add wobble/patterns of flight for the enemies.
  • Energy bars/Health bars.
  • Health/Energy pickups + sound
  • Enemy ships.
  • Enemy fire and sound.
  • explosion sound/animation/sound.
  • High Score list.
It's ambitious, but I have hope. I'm also off to kind of late start, but I feel comfortable. That was last weeks failing so I may crank it up for the remaining days.

My Goal

There is a lot of stuff on that list there, My goal this week is to get it playable first, make it pretty second. The sine stuff is completely new to me. Same with Health/Power bars. The rest (save the top score screen) can be extrapolated from earlier experiences, and implemented easily

What I Did?

Today in 2 hours of work  I've got controls, player limits, enemy, and enemy fire all cleared up. I've included a secondary fire mode with limited energy (see incident variable). Basically the simple laser blaster turns in to a fountain of lasers for 3 or so seconds. I've got the normal ROF for player, and enemy ships in a happy spot. I've researched/watched a video I checked out a long time ago that included bits on how sine works, and more importantly I've gotten some formula's and wording that should allow for some challenging game play. If  you are curious I learned a ton watching the videos that a were posted on ureddit lecture here.

Once I have some basic patterns in place I can blast through a good play tests, and see what needs to be changed. This time I'm going to try to make graphics the thing I'm trying to slam out at 10pm Sunday.

What I Got Wrong

Nothing really. Pretty strait forward stuff, I did have some glitchy laser spawn action, but once I switched the order of operation It was cleared up.

Thanks for reading guys. I'm going to try to have a decently playable alpha by tomorrow night. Good times for sure!

Monday, April 7, 2014

360 Dodge-Ball: Final


It's done!! Click this >> Link

I admit, Friday I did nothing, Saturday, I did more nothing. I honestly was fairly satisfied with what I had. My whole goal with AGAW is to learn the tool I have, and become familiar enough to be able to put out the simple stuff in a quick way. 

With those goals in mind, I rallied a little Sunday and added a couple of features, and cleaned up some other things making the game more playable.

I wanted to add a point multiplier, or possibly some other feature if a ball is caught and thrown back, I just did not have the time.

What Went Right;

  • The balls bounce off each other.
  • The player can catch a ball, and use it to deflect incoming balls while multiplying the score earned.
  • The player can throw the ball as well.
  • Gave the avatar a face, so you know which way you are facing so you can catch the ball.
There are a couple things that did not go so well.

What Went Wrong:

  • 8-direction facing is beyond me this week, you can move in 8 directions, just not face that way. I should probably look up the logic for that I'm sure I'm just doing it in a way that does not allow for 8-directions.
  • Hit detection was good, catching.. was a little sloppy I think. If I had figured out the above 8 way direction it may have been easier to block balls, pretty much anything coming at those 45 degree wedges are probably going to hit the player.

Thanks for reading this, I hope you enjoy the game, or at least understand it. Please leave feedback in my comments section here, or wherever you see fit. Please tell your friends, family members and loved ones. Share the good times.

Thursday, April 3, 2014

360 Dodge Ball Day 4 - Not much goin' on


Not much really happened today. I've included the "Personal Best" point counter so you know where you stand on multiple retries. 

I believe I've gotten catching the ball figured out, or half figured out. I need to finish it up tomorrow.

What Went Wrong?

Order of operation is important. When I was putting together the "Personal Best" function on the Game Over layout I was having a real hard time with the Points being displayed. User had to retry agian, and would presented with their previous personal best, not the current one.

Turns out I was telling Construct to set the personal best text, then actually check/record/set the number.

Sorry this a short one today. No update to test either as I have some things half finished.

Big update tomorrow.

Wednesday, April 2, 2014

360 Dodge Ball: Day 3


Day 3 complete. With the basics in place by end of day 2 I'm now able to focus on refining, and tweaking. I've tightened up the end game menu. I've got a system in place to ramp up the difficulty so the player is not immediately accosted by balls. I've put in some player rotation making it more challenging to dodge balls. I've added sound, and gave some simple graphics to look at. I have absolutely no experience with pixel art. My GISHWHES project's art was done by a friend or pulled from the internet as license free goodies.

Another unforeseen bonus of this project is I'm getting in to more area's I'm not comfortable with (This blog was the first one). The art is the second piece that is completely foreign. The sound was unexpected, never thought to add sound. There is a neat site called that lets you build your own sounds. Thankfully it provides a range of pre-defined 16(?)-sounds that you can adjust, just go to the site, and hit the "Explosion" button a couple times, you will get a new explosion every time. It's perfect for my GAW challenge, and I'm sure I will hit it up as the weeks pass.

Nothing stressful today, just lots of cleanup, and I was never really stumped with what I wanted to do.

I'd love to tweak, add stuff, and experiment now that I at least have a working game. Can the player catch the ball, block with the held ball like my games namesake? Should I include ball collision for the ones being thrown? Dodge ball was a fun chaotic experience as a kid. Part of me wants to make further tweaks to character rotation. I want to include a reference to the player's previous score, Flappy Bird style. I think the toughness curve is a little too exponential, that might change as well.

I've heard that the GAW's should not venture far from their intended idea. I've finished early, so maybe I should experiment.

Play it here. Leave a comment, let me know what you think!

Tuesday, April 1, 2014

Day 2 - Alpha is Public!


Just barely playable in it's entirety is my 360 Dodgeball game! I want to add some additional features, tweak the menu, and touch up the graphics. Some weird roadblocks, but I was able to find an acceptable solution. I'm willing to take a dirty fix over a clean one right now as this is a learning exercise.

What Went Wrong?

I've got to remember that Behaviors (quick n easy chunks of code with common uses) take presdence over written line. In order for the player to score points they need to successfully dodge incoming balls.

I remember from back in the day that unless you tell the ball otherwise, it will keep moving, even after it is off the screen, the computer tracks this movement. and at a rate of around 1 ball a second, your computer could be tracking quite a few if you are any good.

To counter this, you need to destroy the balls once they are outside of the layout. When I initially put this together I added this behavior so I would not have to worry about it later on. I forgot this, and put together an event that stated once the ball was off layout it would destroy the ball, and add a point to the player.

Initially I thought it was a problem of the math/logic not being right, as the score was not going up for dodged balls. When I looked at the debugger, I noticed the balls were being destroyed (as planned). I disabled this destruction in the event to make sure it was just the math/refference to points, and not the entire event that was broken. Once I saw the balls were still being destroyed it hit me. The balls were being destroyed before my custom event could destroy, and add the point.

I also ran in to the challenge of jumpy player fingers. I have the game set to show a game over message, along with player score, and "Press any key to continue".  I noticed while testing that I would frequently press keys after being taken to the Game Over screen.

I fixed this by adding a wait command to "Press any key..." and make sure the game will not respond to key presses if the "Press any key..." message was not viable.

What Did I Learn?

With my past hazy understanding, I did not learn much today. I was able to hit road-blocks, and make my way around those blocks. I've accomplished everything I wanted to.

Thanks for reading this and following me on this adventure. No one knows it now, but some day this will be interesting stuff.