Welcome, Guest. Please Login or Register.  • Help
SMF Underground
+ SHMUP-DEV » RAPID PROTOTYPE SESSIONS » Older Sessions » Session 14
|-+ kdmiller3's entry [RAVE GUN] (finished, updated link)

Pages: [1] 2  All   Go Down
0 Members and 1 Guest are viewing this topic. Topic Tools  
Read September 01, 2009, 09:02:11 PM #0
kdmiller3

kdmiller3's entry [RAVE GUN] (finished, updated link)

I'm going to use this as an incentive to get my project rolling again.   Wink

My application framework became progressively more difficult to work with as it accumulated overly-generic functionality, so this might be a good time to rebuild, reorganize, and simplify the project. I need to figure out what to do with the GoogleCode project at some point, since it's in dire need of reorganization. I've been putting that off for months now.



Well, I think this is as done as it's going to get.

Download: Rave Gun (updated link)
Prerequisite: Visual C++ 2008 Redistributable Package

Music: F90 by Psychopatic NerD

Maneuver using WADS
Aim using the mouse
Fire main weapon using left mouse button
Launch missile using right-mouse button

Destroy enemies to turn their bullets into pickups (purple diamonds)
Catch enemy bullets with the Beat Field to backlash against the firer (purple sparks)

Collecting 10 pickups upgrades main weapon power
Levels 1 through 3 add spread-fire
Levels 4 through 8 add options

Missile costs 1 pickup per shot
Missile homes towards the cursor and explodes on contact

Note: the game features a prominent strobe effect that might bother some people.

« Last Edit: September 16, 2009, 10:32:34 PM by kdmiller3 »
Offline  
Read September 03, 2009, 02:03:12 AM #1
kdmiller3

Re: kdmiller3's entry

I haven't yet decided how I want to use bullet cancel, but I'm going with an arena shooter this time since that's what my game engine is best at and I haven't seen bullet cancel used with that style.  I'm open to suggestions otherwise.  Grin
Offline  
Read September 03, 2009, 03:00:38 AM #2
jakman4242

Re: kdmiller3's entry

You comment on your game engine quite often.(as a matter of fact, when I see 'kdmiller3' the next thing that pops into my mind is your engine.)

Hmmmm, it sounds like you're due to make a new engine, to me.  Lips Sealed

I've always had the idea a game engine was much like a car engine. That's probably why it's called 'engine' in the first place.
I've kept this idea in mind while making any engine I ever have.(even in game maker)
Because an engine, while it should provide the components to let a mechanic build off of, and make a full fledged car. I don't think an engine should come as an already-completed car that you're free to customize and change layouts.

I think you should take some time to start programming a new engine. Something sleek, something shiny, something fast. Cheesy
I can imagine, due to the complexity of your current engine(as you imply). It would mostly be filtering out the excess that you don't need. But, I don't know how your engine works exactly, so I'll leave that to you!

For your consideration.  Roll Eyes
« Last Edit: September 03, 2009, 03:02:16 AM by jakman4242 »

My game design blog -- A bit outdated, but you might like to take a read anyway~
Or read my new blog!~ (which I do update)
My blog.
Offline  
Read September 03, 2009, 03:42:27 AM #3
kdmiller3

Re: kdmiller3's entry

Haha, true Grin

Starting from scratch would be tough since I only have a few hours a night, so I'd have to restrict myself to a few strategic components.  Most of the framework is game-independent (sometimes overly so), but the player controller and ship physics are the components most heavily geared towards "dual-analog" controls.  My real weakness is level sequencing, and I'm not sure what to do about that.
Offline  
Read September 03, 2009, 04:18:25 AM #4
jakman4242

Re: kdmiller3's entry

Hmmm, well, I did a tutorial on level sequencing a while ago.

It's a pretty tedious process if you're doing it my way, though. But, one way or another, if you want to specifically lay out your sequence, it'll get pretty tedious.

Or, since I just happen to have my C::B open with my projects, I'll just show you some straight code on how I do it.

I could probably snip out a lot for you, but it shouldn't get in the way of understanding the methods I use.

stage1.h
Code:
#ifndef STAGE1_H_INCLUDED
#define STAGE1_H_INCLUDED

#include "meanie_manager.h"
#include "haterpiller.h"

double stage_progress = 0;

void update_stage_progress_1(meanie_manager<haterpillar>* haterpillar_queen, meanie_manager<antiant>* antiant_queen, SAMPLE* sfx_spawn, SAMPLE* sfx_die)
{
    double stage_var = stage_progress/60;

    if (stage_var == 3)
    {
        play_sample(sfx_spawn, 255, 0, 1000, 0);
        haterpillar_queen->spawn_bug(-25, 50, 2, 0, sfx_die);
        haterpillar_queen->spawn_bug(-40, 50, 2, 0, sfx_die);
        haterpillar_queen->spawn_bug(-55, 50, 2, 0, sfx_die);
        haterpillar_queen->spawn_bug(-70, 50, 2, 0, sfx_die);
        haterpillar_queen->spawn_bug(-85, 50, 2, 0, sfx_die);
        haterpillar_queen->spawn_bug(-100, 50, 2, 0, sfx_die);
    }

    if (stage_var == 5)
    {
        play_sample(sfx_spawn, 255, 0, 1000, 0);
        antiant_queen->spawn_bug(240, -10, 300, 240, sfx_die);
    }

    if (stage_var == 5.5)
    {
        play_sample(sfx_spawn, 255, 0, 1000, 0);
        antiant_queen->spawn_bug(480, -20, 300, 150, sfx_die);
    }

    if (stage_var == 6)
    {
        play_sample(sfx_spawn, 255, 0, 1000, 0);
        int i;
        for(i = 0; i <= 15; i++)
        {
            haterpillar_queen->spawn_bug(480+(15*i), 180, -4, 0, sfx_die);
            haterpillar_queen->spawn_bug(-100-(15*i), 90, 3, 0, sfx_die);
        }
    }

    if (stage_var == 7.25)
    {
        play_sample(sfx_spawn, 255, 0, 1000, 0);
        antiant_queen->spawn_bug(240, -20, 240, 240, sfx_die);
    }

    if (stage_var == 8)
    {
        play_sample(sfx_spawn, 255, 0, 1000, 0);
        antiant_queen->spawn_bug(0, -50, 180, 120, sfx_die);
    }

    if (stage_var == 8.25)
    {
        play_sample(sfx_spawn, 255, 0, 1000, 0);
        antiant_queen->spawn_bug(300, -50, 215, 135, sfx_die);
        int i;
        for(i = 0; i <= 5; i++)
        {
            haterpillar_queen->spawn_bug(-10-(15*i), 140, 3, 0, sfx_die);
            haterpillar_queen->spawn_bug(300-(10*i), -10-(10*i), 0, 3, sfx_die);
        }
    }

    if (stage_var == 10)
    {
        play_sample(sfx_spawn, 255, 0, 1000, 0);
        antiant_queen->spawn_bug(0, -25, 300, 180, sfx_die);
    }

    if (stage_var == 10.25)
    {
        play_sample(sfx_spawn, 255, 0, 1000, 0);
        antiant_queen->spawn_bug(50, -25, 350, 180, sfx_die);
    }

    if (stage_var == 11.5)
    {
        play_sample(sfx_spawn, 255, 0, 1000, 0);
        antiant_queen->spawn_bug(480, -25, 180, 180, sfx_die);
    }

    if (stage_var == 11.75)
    {
        play_sample(sfx_spawn, 255, 0, 1000, 0);
        antiant_queen->spawn_bug(430, -25, 130, 180, sfx_die);
        haterpillar_queen->my_meanies.clear();
    }

    stage_progress++;
}

#endif // STAGE1_H_INCLUDED

Sorry if I kind of misunderstood what you said when you said level sequencing, but I can only assume it's that since your games seem to have non-specific procedurally-generated sequencing, and such.


My game design blog -- A bit outdated, but you might like to take a read anyway~
Or read my new blog!~ (which I do update)
My blog.
Offline  
Read September 03, 2009, 04:41:06 AM #5
kdmiller3

Re: kdmiller3's entry

The way I'm doing it is fairly similar to the way you're doing it, though driven by XML files instead of pure code.  The main problem is that I don't have a good sense for how to make good shmup levels.  The timer-based scheduling I use really isn't cutting it...
Offline  
Read September 03, 2009, 04:51:35 AM #6
jakman4242

Re: kdmiller3's entry

I would probably be better off using XML, it would certainly save the compile time after compile time. Tongue

Oh, and. I just take things one step at a time. Test the game again after each time I add in a new set of enemies. then I just add in what feels right. I try to constantly keep throwing something unexpected or challenging at the player, so it doesn't get monotonous. Or at worst, predictable.(of course, if you've played the level 500 times over, there's no real surprise element anymore.)


My game design blog -- A bit outdated, but you might like to take a read anyway~
Or read my new blog!~ (which I do update)
My blog.
Offline  
Read September 03, 2009, 05:22:36 AM #7
kdmiller3

Re: kdmiller3's entry

I would probably be better off using XML, it would certainly save the compile time after compile time. Tongue

TinyXML For The Win! Grin

Quote
Oh, and. I just take things one step at a time.

It seems like it comes down to iteration.  Things turn out a lot better whenever I implement the core play mechanic early on and leave myself plenty of time for design iteration.  Rocket Bomb was probably the best example of that.

Whenever I end up grinding through a lot of engine tech and only have a day or two to work on the actual content, the result tends to be really dry and uninteresting.  InterXept failed for that reason, though I did build up bunch of neat infrastructure along the way.  Smiley
Offline  
Read September 03, 2009, 05:28:43 AM #8
jakman4242

Re: kdmiller3's entry

I would probably be better off using XML, it would certainly save the compile time after compile time. Tongue

TinyXML For The Win! Grin

Quote
Oh, and. I just take things one step at a time.

It seems like it comes down to iteration.  Things turn out a lot better whenever I implement the core play mechanic early on and leave myself plenty of time for design iteration.  Rocket Bomb was probably the best example of that.

Whenever I end up grinding through a lot of engine tech and only have a day or two to work on the actual content, the result tends to be really dry and uninteresting.  InterXept failed for that reason, though I did build up bunch of neat infrastructure along the way.  Smiley

I'll have to look into that. XML sounds like a much better alternative to hardcode-style.

And, funny how you mention InterXept, as I was playing it earlier. And I did notice the enemy sequence got kind of... Overwhelming after the battleships started coming in.


My game design blog -- A bit outdated, but you might like to take a read anyway~
Or read my new blog!~ (which I do update)
My blog.
Offline  
Read September 03, 2009, 06:00:02 AM #9
kdmiller3

Re: kdmiller3's entry

I'll have to look into that. XML sounds like a much better alternative to hardcode-style.

It leads to a different way of thinking about things--data-driven instead of code-driven.
TinyXML itself is fairly easy to use, though putting it to good use does take some planning.
You can go take a peek at how I use it over at VideoVenture.  The source code and data for InterXept is over there, though it gets pretty gnarly in places.  (I wish I had kept full snapshots of previous projects, since they were a lot simpler then.)

Quote
And, funny how you mention InterXept, as I was playing it earlier. And I did notice the enemy sequence got kind of... Overwhelming after the battleships started coming in.

The Carrier ships are real bastards when you can't get away from them.  Grin
It'd be a lot better if I actually scheduled things instead of just turning on the enemy spigots.
Offline  
Read September 04, 2009, 04:59:10 AM #10
kdmiller3

Re: kdmiller3's entry

Progress report time!

  • Converted InterXept player and enemies to arena shooter style for testing
  • Added a Cancelable component similar to Damagable
  • Updated Explosion to trigger any Cancelable it finds
  • Updated enemy bullets to include a Cancelable
  • Added "tethered" option which cancels on creator death

My idea is to emphasize the "tethered" nature of bullets, making that a central theme of the game.  I plan to show the "tethers" as lines, which might make the game look like something Linley Henzell would make.  Grin
Offline  
Read September 04, 2009, 05:27:24 AM #11
jakman4242

Re: kdmiller3's entry

which might make the game look like something Linley Henzell would make.  Grin

I'm looking forward to this already.


My game design blog -- A bit outdated, but you might like to take a read anyway~
Or read my new blog!~ (which I do update)
My blog.
Offline  
Read September 04, 2009, 05:54:44 AM #12
kdmiller3

Re: kdmiller3's entry

I don't know if I can pull off Mr. Henzell's style, but I hope to at least make something different from my usual.
Offline  
Read September 04, 2009, 07:30:00 PM #13
the2bears

Re: kdmiller3's entry

Very interesting... I'm slowly getting interested in even dusting off my engine Smiley

Bill


the2bears - the indie shmup blog
Offline  
Read September 04, 2009, 07:37:51 PM #14
moosa

Re: kdmiller3's entry

It would be nice for you to join us again 2bears. :O
Offline  
Read September 04, 2009, 07:38:54 PM #15
kdmiller3

Re: kdmiller3's entry

"Jooooin usssssss...!"
Offline  
Read September 04, 2009, 08:19:53 PM #16
moosa

Re: kdmiller3's entry

Oh my gosh you just gave me a crazy idea... I wonder if this might be something like you're planning. :O
Offline  
Read September 04, 2009, 08:58:11 PM #17
kdmiller3

Re: kdmiller3's entry

I'm not doing an airburst weapon this time if that's what you're wondering.  Smiley

(I'd certainly make sense for an updated version of Rocket Bomb, though.)
« Last Edit: September 04, 2009, 09:08:47 PM by kdmiller3 »
Offline  
Read September 04, 2009, 09:22:27 PM #18
moosa

Re: kdmiller3's entry

I don't know what that is... =/
My idea was related to "tethers." Kinda weird. ><

Edit: Is that what you call Missile Command weapons? tongue1
« Last Edit: September 04, 2009, 09:24:50 PM by moosa »
Offline  
Read September 04, 2009, 09:30:39 PM #19
kdmiller3

Re: kdmiller3's entry

In my case, the tethers would be a graphical representation to explain why destroying an enemy unit canceled any bullets it owned.  It did give me the idea to have canceled bullets causing damage to the parent craft, though.  Smiley
Offline  
Read September 07, 2009, 08:08:05 PM #20
kdmiller3

Re: kdmiller3's entry

I'm finally starting to impose a theme on my game, and extended exposure to "Dance/Electronica" on MusicChoice pushed me do a kind of "techno" musical theme.  I'm currently adding a beat-based bullet-cancel field emanating from the player ship.  It's very flashy.  Grin
Offline  
Read September 07, 2009, 08:20:17 PM #21
jakman4242

Re: kdmiller3's entry

That sounds fun.
I love a game with a good beat. Grin


My game design blog -- A bit outdated, but you might like to take a read anyway~
Or read my new blog!~ (which I do update)
My blog.
Offline  
Read September 07, 2009, 08:44:09 PM #22
moosa

Re: kdmiller3's entry

I've always wanted to create some funky, music-themed gameplay (I am a music major). But really I don't even know how, nor am I sure it would even be possible within GM. =/

Anyways, sounds crazy for sure.

The idea I thought of earlier was maybe a bit out there, but it was basically being able to "break" the tethers to cancel the bullets. Smiley
If that inspires anything feel free to go with it.
Offline  
Read September 07, 2009, 08:46:37 PM #23
jakman4242

Re: kdmiller3's entry

When I think of 'breaking' the tethers, I think of cutting them. When I think of cutting them, I think of a sword.

It could be interesting.


My game design blog -- A bit outdated, but you might like to take a read anyway~
Or read my new blog!~ (which I do update)
My blog.
Offline  
Read September 07, 2009, 09:07:33 PM #24
moosa

Re: kdmiller3's entry

I had thought of that too. Smiley Can only incorporate so many mechanics into one shmup though...
Offline  
Read September 07, 2009, 09:32:58 PM #25
worstplayer

Re: kdmiller3's entry

The idea of force-field destroying everything in sight to the beat of some insane techno tune sounds great. Definitely good idea.
Offline  
Read September 07, 2009, 10:08:36 PM #26
kdmiller3

Re: kdmiller3's entry

I dunno about "insane techno" since I'm not a musician, but I'll do what I can.  Grin

I did think of making the tethers vulnerable (and the bullets not), but that would be a collision system nightmare so I'm going to keep the tethers purely visual if I include them at all.  The idea I'm working with so far is that the player ship's "beat field" cancels bullets within a short distance, and the severed tether snaps back to damage the parent unit.  I'm not sure what to do about the shooting aspect, since I'd like that to have something musical going on as well.
Offline  
Read September 07, 2009, 10:17:21 PM #27
jakman4242

Re: kdmiller3's entry

You could have the bullets fire in a rhythmical manner, to a beat, like in Go Beryllium!
« Last Edit: September 07, 2009, 10:20:32 PM by jakman4242 »

My game design blog -- A bit outdated, but you might like to take a read anyway~
Or read my new blog!~ (which I do update)
My blog.
Offline  
Read September 07, 2009, 11:01:00 PM #28
kdmiller3

Re: kdmiller3's entry

That's what I was thinking, too.  Once I get bullet cancel "backlash" working, I'm going to try to add beat sync to the player weapon.
Offline  
Read September 08, 2009, 01:24:41 AM #29
moosa

Re: kdmiller3's entry

I'd offer to work with you on some cool backing rhythms and such, but as it is I'm way behind on getting my own entry anywhere...

If your entry goes anywhere after the session though, I'd be happy to lend whatever musical talents I can.
Offline  
Read September 08, 2009, 02:24:23 AM #30
kdmiller3

Re: kdmiller3's entry

Thanks for the offer Grin

I'm currently using a rhythm loop I hear a lot on Dance/Electronica: [B__|H|H|S__|H|H] (where B is bass drum, H is hi-hat, and S is snare).  It's not particularly techno-ish, but it works pretty well for now.  I suspect I'll end up snagging a tune off Aminet and trying to sync to that.


Offline  
Read September 08, 2009, 06:13:14 AM #31
kdmiller3

Re: kdmiller3's entry

Canceled bullets now turn into pickups that add a small amount to the combined weapon/bomb meter, meaning you now have to work for your upgrades instead of accumulating them over time like in InterXept.  Pickups become score items after you max out your weapon upgrades.
Offline  
Read September 10, 2009, 08:40:48 PM #32
kdmiller3

Re: kdmiller3's entry [RAVE GUN]

Things are slowly moving along.  I starting applying a somewhat different visual style from the usual "bold colors against a black background", setting the background to a desaturated color and giving everything a distinct outline.  I also have bullets leaving very Linley-ish line trails.  So far the look isn't wildly different but I think it adds a certain something.

I accidentally discovered that the momentum on the pickups led to a degenerate strategy. After nodding off late last night, I woke up to the player ship parked in the lower right corner happily canceling enemy bullets and collecting the tokens that sailed straight into it. It had clearly been there for a while since the arena was literally packed with mines dropped by one of the units.
Offline  
Read September 11, 2009, 04:23:23 AM #33
moosa

Re: kdmiller3's entry [RAVE GUN]

Haha nice. I wish I slept at night.
Offline  
Read September 11, 2009, 04:33:21 AM #34
kdmiller3

Re: kdmiller3's entry [RAVE GUN]

Haha nice. I wish I slept at night.

Considering how late I've been staying up lately, so do I.   Undecided
I presume it's not as voluntary in your case, though.
Offline  
Read September 11, 2009, 06:51:32 AM #35
moosa

Re: kdmiller3's entry [RAVE GUN]

Yes and no...
Offline  
Read September 11, 2009, 08:37:45 AM #36
kdmiller3

Re: kdmiller3's entry [RAVE GUN]

OK.  I think I can sympathize there.
(Note the time stamp on this message...)
Offline  
Read September 11, 2009, 01:58:28 PM #37
kdmiller3

Re: kdmiller3's entry [RAVE GUN]

It seems I've fallen into my old habit of polishing things before I actually finish core game elements.  The spiffiest thing is that the rhythm track and "light show" effect change with the player ship's power level so you don't have to look up at the gauge.

On the plus side, all units now have outlines so they stand out against the background.  I even managed to clean up the drawlists for some of them to take advantage of new features that I added since I first created them.

(One of these days I'll post a WIP screenshot...)
« Last Edit: September 11, 2009, 02:23:37 PM by kdmiller3 »
Offline  
Read September 11, 2009, 03:27:15 PM #38
worstplayer

Re: kdmiller3's entry [RAVE GUN]

It seems I've fallen into my old habit of polishing things before I actually finish core game elements.
Heh, tell me about it.
But then again, if you can actually finish your game, some extra 'flash' is always good. Especially in a game with techno theme.
Offline  
Read September 11, 2009, 06:05:51 PM #39
kdmiller3

Re: kdmiller3's entry [RAVE GUN]

But then again, if you can actually finish your game, some extra 'flash' is always good. Especially in a game with techno theme.

I've definitely got my work cut out for me...   Grin

  • Figure out how to synchronize things to a beat
  • Build the titular Rave Gun weapon
  • Add a bullet tether effect
  • Add a bullet cancel "backlash" effect
  • Replace the stock VideoVenture enemies
  • Create attack wave sequences
  • Create a level-end boss enemy?

Also: come up with music beyond the simple one-measure rhythm track.
Offline  
Pages: [1] 2  All   Go Up
Jump to:  

Page created in 0.129 seconds with 18 queries.