4 Hugues Ross - Blog: Space Douchebag!
Hugues Ross
Showing posts with label Space Douchebag!. Show all posts
Showing posts with label Space Douchebag!. Show all posts

12/13/13

Space Douchebag! - 9 - DONE!

Guess what?


That's right, Space Douchebag is complete! As you might've guessed, I've done quite a bit in the past two weeks. For starters, I added an entire level and boss to the game. There are enough changes to warrant a list, though, so here's the rundown on what's new:

  • I've added 4 new enemies to the game. These only show up in Stage 2, and they're much more dangerous than Stage 1's enemies. 
  • I made stage 2, and its' boss(naturally). They feel a bit lacklustre since I was running out of time when I made them, but they're not too bad.
  • I changed the particle system to use multithreading, although I don't think I made any decent speed gains in the process.
  • SWAG! The game's got plenty of it now, and you unlock it through a variety of means. The SWAG is as follows: Beer Hat, Slotted Shades, Bling, Red Spoiler, Unfortunate Tattoo. To see how to unlock them, refer to the video above or just experiment a bit!
  • The game now ranks you at the end based on deaths, SWAG, and score. You know you've got the best rank from one of these if it's highlighted in yellow on the win screen.
  • I added the game's story in. If you sit at the title screen for about a minute, you'll see what I mean... In addition, beating the game will wrap things up.
  • Temporary powerups were never part of the design, but I added them in later for balance purposes. One makes you invincible, one powers up your weapon for a short while, and the last will fully restore your ego if it's low.
  • I accidentally forgot to re-enable the graphics adjustments, so they're effectively gone. In addition, you'll need to relaunch the game if you run out of lives, or things will glitch up slightly.
Right, I think that's it. I've been working really hard on this game, so please enjoy it. It should be up on the Games page today, under In Progress.

...Wait. Why in progress, you might ask? Well, I think I can do better. Space Douchebag hasn't reached the lofty goal that I held for it, and I'm going to remake it. For the moment, I'll leave things at that, but expect some more info during this coming week.

11/27/13

Space Douchebag - 8 - Level One, Complete!

Well, I've gotten quite a bit done this week! I started out by adding graphics settings, so that people on less powerful machines could get a good framerate. In addition, if the game detects that it's running slowly, it automatically lowers the settings a bit. The main reason for for adding all this, though, is that I'm home on break thanks to Thanksgiving. Obviously, I can't just drop an entire week of potential work time, so I need to make the game run smoothly on the old family computer. Alternatively, I could use my(significantly better) laptop, but that would require installing my dreaded enemy, Microsoft Visual Studio, on it. If you know me, you know that I'm the type of dev who writes his own makefiles and programs on in a terminal window. I'm not letting Visual Studio anywhere near my laptop.

Obviously, I've added more than that. I finished implementing a new enemy, which tries to avoid being in front of the player. I also added some nice area transitions. At the start of each area, the player flies in from the side as the screen fades in from black. At the end, he zooms out the other end as the screen returns to black. It's a nice little effect, and I think it makes the game feel more polished. I added additional details to some of the backgrounds, and gave the first boss their own area. While I was at it, I added many new sound effects that had been previously missing, and fixed a bug that had been causing an issue similar to z-fighting amongst a number of sprites.

All of that's tiny, though, compared to the major additions that I made this week:
Focus, Scripting, and Shaders!

Focus

Focus is the final ability in Space Douchebag's arsenal. When activated, everything slows down to a fraction of its' normal speed. You continue to fire at a normal rate, however. This ability doesn't last long and charges slowly, but it makes aiming and dodging much easier.

Scripting

The first level is just about finished, and the enemy spawns aren't as random anymore. I'm using the term 'scripting' here pretty loosely, to be honest. Still, I can now define how the levels play, something that I've wanted to do from the start. It isn't a very elegant system, but it does the job rather well. The important thing is that I can now write up a text file that defines when specific enemies spawn, how the camera moves, and where the level begins and ends.

Shaders

In order to get those level transitions working, I had to write a shader system. The transition fades themselves are governed by a pixel(fragment) shader, and I can now define specific shaders by to be applied on an area-by-area basis.(by the way, for those of you who don't know what shaders are, just think of them as filters from a graphics program. It's the same general idea.)


So, that's a nice bunch of work!
I don't have many interesting things to screenshot, I'm afraid, so I'll leave them for next week. I'm also considering continuing this project after the end of the semester, although I don't have any kind of timeframe on when I'll do it.

11/20/13

Space Douchebag - 7 - Boss Time

Well, I didn't get enough work done on Space Douchebag this week. I did, however, still get more than enough done to warrant a post. I started the week off by making a couple more enemies. First, there are flying turrets that aim directly at the player and move in erratic patterns. I also added bulkhead doors that must be destroyed before they crash into you. Finally, I made asteroids that randomly split when destroyed. Gotta have 'em in your shmup!

After that, I finally implemented the first boss. It's not quite complete, but it's close. It has several different attacks. First, it can charge at the player. It scoots back a little right beforehand, which is the cue to get out of there. It can also summon a number of enemies from the stage, and at half health it can fire a large beam. Finally, it has a continual attack thanks to its' many limbs. each limb moves independently and can occasionally fire an aimed shot at the player. At half health, these limbs fire 3 shots, and at 25% hp or lower they fire 5 and a homing missile.

Speaking of missiles, I decided that the player didn't really have enough incentive to actually kill the jumping worm enemies, and made them fire missiles from their tail. I've found that this works rather well, and makes the game a little more hectic.

Finally, I have a bit of good news: while all of this was happening, I finally finished AMAZE's animation system! I've been working on it bit-by-bit since, although I don't really have enough new content to make a post yet.

Edit: Here's a screenshot of the first boss!
Click to see it at full size


11/13/13

Space Douchebag - 6 - Nice and Late

I can't believe how late I am, after such a nice few months of relative promptness too! Anyways, I'm temporarily going to shift my programming posts to Wednesdays because that's when my class meets, and it's also when my development targets are due.

So, what have I gotten done lately? Quite a bit!

For starters, the old stuff is all finished. Along with the original two enemies, I've added segmented mechanical 'Serpent' that will leap out of the sands of the first stage, and I also started on a floating gun turret.

Peter has made decent progress on the game's music, completing 2 tracks and starting a 3rd.

I've finished the first of 2(3 if I have time) weapons that can be chosen at the start: The spread blaster. As the name implies, this weapon fires in a cone rather than straight, with higher level versions also adding bullets to protect your sides.

I've implemented the two required powerups, both of which are fairly standard. One pumps up your speed, and another increases your weapon's level. If I have time, I'll be adding missile and shield powerups too.

Finally, I've added the hero's 3 fabled Douchebag Powers, of which you can choose one. They can be toggled at will, and drain energy which is replenished by killing enemies. To be more specific, they are:

  1. Super Ego: Health Regen
  2. Aggression: Temporary weapon level increase. This can power a weapon up beyond the game's normal limits.
  3. 'Can't Touch This!': The player cloaks, and no longer collides with enemies/bullets/other hazards.
As you can see, I haven't just been sitting around. I'll leave you with a screenshot of Stage 1, and the Serpent enemy. Note that this screenshot is a bit old, and there's a nice little UI in the newest version.

11/3/13

Space Douchebag - 5 - Final Preparations

Sorry for the late post. I've been a bit preoccupied for the past couple of days, and I didn't get a chance to write my programming post on Friday.

Now that the semester has worn on for quite some time, the final project for graphics programming has begun. Of course, I'm going to try and finish Space Douchebag for this.
This first week is mostly just a matter of rewriting the engine. I've been just haphazardly slapping on new things each week, and the current engine has become rather difficult to expand easily. I've already remade most of it, and I ought to have it done by Wednesday. The new structure allows me to expand the the game's content much easier. I've also added a full menu system to the game, as the last version's menus were pretty terrible. I've also seriously improved the game's input handling, which will make input stuff easier to write and more reliable as well.
I am missing some stuff, though. Enemies haven't been added yet, and neither particles nor shaders have been implemented at this point. In addition, while the menus all work most of their entries do nothing right now.

I don't have much else to write at the moment, but this feels a bit short. I may write another post later this week, once more of the old stuff has been rewritten.

10/18/13

Space Douchebag! - 4 - It Gets Shinier

Suddenly, the stars look slightly nicer
Well, the shaders are in. I've got some (not too great) bloom, as well as some new particle effects. Most notable of these are some nice trails that I've added to enemies. The screenshot to the left shows them off rather nicely, I think. Also pictured are the second enemies I've added, which I've dubbed 'mosquitos.' these light ships are slow and weak, but usually come in large groups. I also made the explosions look nicer along the way.
Currently, my goal is to add in the first planet within a week or two. The way I see the levels going is an initial space section, followed by the main level. Most of the levels will be actual planets, with various themes. The first will be a desert planet, which I've already begun work on. The fire effect shown in the screenshot will probably feature on some volcanic planet further down the line. The last thing that I want to get done this week is some kind of stacking powerup. Currently, surviving is rather hard but with ship upgrades I think it will be much less difficult, and the space section of level 1 will be in working order.

10/2/13

Space Douchebag! - 3 - Shiny Things

Well, week 4 ended and week 5's just about done too. Let's talk updates.
Space Douchebag! is coming along rather well, overall. Last week, I added in enemies and got things set up so that they could spawn in the background. You still couldn't interact with them at all, but it was a step in the right direction. This week, I made Space Douchebag! into an actual game by letting you shoot them. Score has been added as well, and enemies begin spawning at greater speeds as time progresses. They can kill you too, though the collision detection on your ship is a bit spotty.

That's great, but there's one other piece of news that makes me very happy with myself: As a surprise for my professor, I wrote an entire particle engine from scratch ahead of time! Take a look:
I realize that this isn't the best picture, but taking
screenshots of explosions is hard.
The explosions look quite nice in motion, and have a nice cartoon vibe to them. I think I just managed to hit a sweet spot with the settings. In case you don't quite understand what a particle system is, allow me to explain. Particles are tiny, simple objects that don't generally interact with anything else, and die soon after being spawned. They usually are created in large groups, with some randomness, to make various effects. This could be fire, explosions, rain, halos around bright objects, sparkles, smoke, and many other things. Particle emitters are simply objects that generate these particles, usually from a set location. The way my explosions work is that they fire off a ton of particles for a split second, going out in random directions. the particles, initially orange, slow down and turn gray before finally disappearing. This makes a nice smoke ring, as shown above.

For this week, we were not only required to make a blog post about our work(which is why I'm posting now of all times), but we also needed to implement a design pattern. I'm not sure where exactly to start with these things. They're quite cool, but difficult to explain. I suppose you could equate them specific plays in chess. Someone smarter than you came up with some elegant strategy, and now it's accepted by most as a very good move. I couldn't really think of a good way to implement any of the design patterns that I knew, so instead I designed my particle system in a manner similar to(though not exactly the same as) the decorator pattern. Essentially, I made my particle emitters particles. They act like particles for most purposes, in fact. The only difference is that they can make particles themselves. This means that in order to make more complex spawning patterns, emitters can make more of themselves, and tell them to move in certain ways. Then, the new emitters can make particles however they want. Here's a simple illustration of how it works:

Normally, this would be a huge pain to get working properly. However, here it's as simple as any other particle system. So while I agree that this setup isn't exactly the same as the decorator pattern, I feel that it demonstrates the same general concept(making additional functionality for an object using related objects).

Finally, I was going to add shaders this week as well, but I ran out of time thanks to a few other school projects. Maybe I'll do that next week. As promised, there will be a dev update for AMAZE on Friday. 

9/20/13

Space Douchebag! - 2 - The Story Thus Far

First off, apologies for not posting this earlier. I meant to post this last weekend, but then I guess it slipped my mind. Anyway, I'm going to use this post to talk briefly about what I've done on Space Douchebag! so far.

  1. Week 1/2: Our beloved hero, the mighty douchebag. 
    1. First off, I came up this weird concept. I wanted to do something simple, like a shooter, but I didn't know what to do for a story. I then realized that most of my shooters are just a dude who shoots everyone ever-regardless of anything. Figured that was rather douchey, and the concept was born.
    2. One of the main game mechanics came from laziness. I wanted to make collision simple, so I stuck a circular collision area on the cockpit. I then realized that I could put it in the story. His ego is so big, that his invincible ship can no longer hold it and it physically manifests itself. Unfortunately, his ego will shrink when shot, and we don't want that. Thus, I got a cool concept: a hitbox that shrinks as you take damage.
    3. Shooting was next. I wanted to do something different, and this ended up manifesting itself in an aiming mechanic. As you move up or down, your ship turns, moving both your ego and making you fire in a different direction. this has led to several cool maneuvers, like rapidly tapping up and down to spray bullets.
  2. Week 3: Boring menu week.
    1. Last week was a little on the boring side. We needed to make a menu system, along with a few other things. In the end, I chose a cool pane based layout for the menus. It looks terrible right now due to time constraints, but it'll look much nicer soon enough.
    2. I also came up with a new concept: Fanmail. Space Douchebag has many large hordes of fangirls who love him for his huge...ship, and they send him intergalactic fanmail. He can only hold so much, but reading it is a huge ego boost. That's how I'll handle health pickups, methinks.
    3. Finally, I made the player's shots grow ever so slightly as they move. It's a subtle, but nice effect.
  3. Week 4: The next step.
    1. Week 4 will be next week, but I've got my assignment already. It looks like it's all about depth effects, so the game may get some nice new graphical sheen. It is a graphics class, after all.
    2. I'll also try to add a basic form of enemy.

So there we have it. Next week will definitely have pictures, and I may post about the art style and such sometime. The nice thing about this project is that results will be much more visually obvious, so there's that. It's all Xna, though, so it's probably going to stay Windows only. 

9/13/13

Space Douchebag! - 1 - Don't Panic

Please don't panic. I haven't stopped development on AMAZE or anything. I'm going to use this post to explain what's going on, and the next few will focus on actual development.

First, AMAZE is in a bit of a slow spot. I finished rewriting the import/export stuff, but now I need to add more to some of the files as well as making other various changes. The binary file stuff has only recently shown just how bad an idea it was, but I'm pretty much committed to getting it working now. Obviously, it sucks and makes me not want to work much, dragging on the process further.

Second, I've had my programming time seriously cut into by college. I knew it was going to happen, but I'd forgotten how dramatic a cut it was. I'm also teaching myself how to use Vim in the meantime, which is making me unproductive since I'm still not used to using it. I can feel sometimes how it'll help make me faster once I've used it for another month or two, but it's going to be a while until I can really make use of that latent power.

Finally, my Graphics Development class requires me to program one or more games in C# via XNA, so I figured I could post progress on that stuff during slow weeks. It's win-win. I don't have as much pressure to get work done, and you guys don't have to suffer through another year of boring apologetic updates.


Well, that's out of the way. It's pretty late, so I'll explain Space Douchebag! and get you all caught up on its' development in a later post, probably this weekend.