Requesting input on some bullet patterns (Demo inside!)

A place for people with an interest in developing new shmups.
Post Reply
User avatar
ForteMP3
Posts: 178
Joined: Tue Feb 01, 2005 3:15 pm
Location: Somewhere in the Midwest.

Requesting input on some bullet patterns (Demo inside!)

Post by ForteMP3 »

Hey guys, me again. Cavadius' development is moving along slowly but surely. Currently I'm toying around with various bullet patterns for the first boss. While I was initially hoping to make this boss' attacks a suprise in the first public demo, I need some input on its bullet patterns, at least one good shmup player I know has said they're too hard to dodge. I haven't had any issues with dodging most of them (except one really nasty one I made for a Loop 2 difficulty) and so I figure I need more opinions on them. I'll be uploading a file to my angelfire webspace, I don't have anywhere else I can really put it at the moment...Anyway, this is a compiled version of the development version of Cavadius I'm currently working on, it's set to run a debugging room I created for bullet testing.

What I need is an opinion on the bullet patterns I have so far, although the most important ones are the patterns I've made for the Big Core that will be the first boss. Anyway, here's the controls for anyone who downloads.

Arrow Keys-Move Vic Viper.
Z Key-Gives Vic Viper a Speed Up.
X Key-Gives Vic Viper a Speed Down.
WASD Keys-Move objBulletShooter (The Fan that will be shooting at you).
P Key-Opens Bullet Pattern selection window. Replace <Insert Pattern> with a bullet pattern from the list to see that pattern. PATTERNS ARE CASE SENSITIVE. ONLY REPLACE THE BRACKETS AND TEXT WITHIN, REPLACING THE REST OF THE COMMAND WILL RESULT IN AN ERROR. In the event of an error, click ignore, then re-enter the command. If you enter a valid pattern, then enter an invalid one upon re-opening the prompt, you'll recieve an error, but ignoring it will call the last pattern used. The collision box is relatively small, so scraping is possible.

An example of a valid pattern entry is:
timeline_index=bltSimple

Bullets will not destroy your ship, but they will vanish if they hit you so that you know you've been hit. Sorry, you can't shoot back in this demo, as this debug room is purely for bullet dodging tests. Also, while the object shooting at you is a fan, bullets for specific enemies will still fire as if they were firing them (IE, the Big Core shots are fired in the proper spread and from the proper locations)

The bullet patterns availble to view are the following:

bltSimple-A simple three shot burst fired towards Vic Viper

bltScissor-A variant of the sweeping pattern a lot of shmups use. In this case, the bullets sweep inward, like a snipping pair of scissors.

bltLeftToRightAccelerate-A sweep I may or may not keep, it fires small bullets in a left to right sweeping motion, each bullet is shot at a slightly faster speed than the previous

bltMiniCore1-'Opening' type sweep used by the enemy currently designated as MiniCore#1. Uses medium sized bullets.

blt360IntervalBurst-Fires groups of five bullets in intervals, the angle increases each shot, resulting in five shot burts going in almost every direction. There's a small gap between each burst however, so there's plenty of dodging room.

The rest are bullet patterns for the first boss, some of which are slightly tweaked variants:I'm not set on which patterns work best for what difficulty. This is really what I want opinions on, more than anything else.

bltBigCoreForward4-A "normal" quad laser used by the Big Core, only it's a rapid fire version. Same pattern is used for all difficulties.

bltBigCoreRandomFire-Shots fired in random directions, maximum angles are 30 degrees and -30 degrees from the default (Using straight down as the default angle). I may consider making Easy, Normal, and Hard variants instead of using this one for all difficulties.

Okay, and now the REALLY big one...The Quad Sweep. This pattern has several variants, and I need an idea on the top three, keeping difficulty in mind. I want one for Easy, one for Normal, one for Hard. The Quad Sweep basically fires a sweep of rapid lasers from each barrel of the Big Core, the sweeps curve towards the Big Core, depending on their location (IE, the shots coming from the right side of the core sweep left, and vise versa for the left side). The variants all have different fire rates, and some also have different increments for the angles used in the sweep.

bltBigCoreQuadSweepE-Candidate for 'Easy' mode. Is laughably easy to dodge.

bltBigCoreQuadSweepN-Candidate for 'Normal' mode. Relatively easy to dodge.

bltBigCoreQuadSweepNAlt-Candidate for 'Normal' Mode. Fires faster than N version, a bit harder to dodge.

bltBigCoreQuadSweepH-Was initially for 'Normal' mode, has been promoted to hard due to second opinion. Uses a relatively fast rate of fire and narrow angles for the sweep. Fairly difficult to dodge.

bltBigCoreQuadSweepHAlt-Second hardest variant of the sweep to dodge. Angle is the same as H, but the firing rate has dramatically increased. Rather difficult to dodge.

bltBigCoreQuadSweepH2-Candidate for the Loop 2 version of the sweep on 'Hard' mode. Fires TWO of the Quad Sweeps, the second sweep starts where the first one normally ends. INSANELY DIFFICULT to dodge.

Now, these don't necessarily have to be chosen for the difficulties they represent. For example, if you think the N version of the spread is more appropriate for an Easy difficulty, then please say so. Also, while I haven't implemented it yet, the Big Core will punish you if you try to fly to its side (and out of its field of vision) to dodge shots. Can't let it be /that/ easy, can I?

Thanks in advance!

Oh, and the demo URL is...

http://www.angelfire.com/retro/fortemp3 ... ullets.zip
(Copy and paste into your browser)
YOU ARE APPROACHING THE TARGET OF ATTACK! THE MISSION STARTS NOW! ARE YOU READY?!
User avatar
Thunder Force
Posts: 1773
Joined: Wed Jan 26, 2005 11:21 am
Location: research and development facility for Vasteel Technology.

Re: Requesting input on some bullet patterns (Demo inside!)

Post by Thunder Force »

ForteMP3 wrote:http://www.angelfire.com/retro/fortemp3 ... ullets.zip
(Copy and paste into your browser)
Doing that gave me this error message
Angelfire does not allow direct linking
from offsite, non-Angelfire pages,
to files hosted on Angelfire.
This practice of 'remote linking' reduces
our ability to serve out the homepages
of our members quickly and efficiently.
"Thunder Force VI does not suck, shut your fucking mouth." ~ Shane Bettenhausen
User avatar
ForteMP3
Posts: 178
Joined: Tue Feb 01, 2005 3:15 pm
Location: Somewhere in the Midwest.

Post by ForteMP3 »

Odd. As long as you aren't clicking on the link directly, it should work. What browser are you using? IE, Netscape, Firefox?
YOU ARE APPROACHING THE TARGET OF ATTACK! THE MISSION STARTS NOW! ARE YOU READY?!
User avatar
Thunder Force
Posts: 1773
Joined: Wed Jan 26, 2005 11:21 am
Location: research and development facility for Vasteel Technology.

Post by Thunder Force »

My mistake, I actually *was* clicking on the link directly. Must be a habit. :P I've pasted it right into the browser without clicking on it now, but I get "Internet Explorer cannot download cavadiusbullets.zip from angelfire.com. Internet Explorer was not able to open this Internet site."
"Thunder Force VI does not suck, shut your fucking mouth." ~ Shane Bettenhausen
User avatar
ForteMP3
Posts: 178
Joined: Tue Feb 01, 2005 3:15 pm
Location: Somewhere in the Midwest.

Post by ForteMP3 »

Again, odd...Copying and pasting the URL into the address bar works fine for me.
YOU ARE APPROACHING THE TARGET OF ATTACK! THE MISSION STARTS NOW! ARE YOU READY?!
Zhon
Posts: 141
Joined: Wed Jan 26, 2005 1:12 am

Post by Zhon »

Angelfire checks your referer (sic) and blocks direct linking.
User avatar
shiftace
Posts: 435
Joined: Tue Jan 25, 2005 10:18 pm
Location: yes

Post by shiftace »

I played with it for a couple minutes. It's quite primitive, but I hope you'll accept that it has to be primitive in the beginning, and I hope you take the comment as incentive to keep going rather than to give up.

Ship motion is pretty jerky. there is clearly a way to get around that, but I don't know exactly what it is. I imagine it's something like to check the input at each frame and do fractional pixel movement per frame. It can still be done in fixed point.

Anyway, the patterns:

- I couldn't get it to run LeftToRightAccelerate.
- If Scissor is from the other thread, it's not quite what I was trying to describe. What I had in mind was actually more like a reduced version of your Big Core Sweep.
- The Big Core sweeps got pretty hard. I did dodge H2 a couple times, without flying above it. It feels doable with about 6-12 speedups, but there's no movement precision, at those speeds, with the current input framerate.
User avatar
ForteMP3
Posts: 178
Joined: Tue Feb 01, 2005 3:15 pm
Location: Somewhere in the Midwest.

Post by ForteMP3 »

Yeah, I've noticed the jumpy movement, and sadly, this may be an issue no matter what, as GameMaker seems to use a 'jump to coordinate' method for movement, as opposed to a smooth transition.

...This project may end up on hiatus if I don't find a solution, because I'm beginning to lose faith in GameMaker's shmup creating abilities with an issue this big. In fact, you can sometimes pass through a bullet completely with enough speedups, and a collision never occurs.
YOU ARE APPROACHING THE TARGET OF ATTACK! THE MISSION STARTS NOW! ARE YOU READY?!
User avatar
Thunder Force
Posts: 1773
Joined: Wed Jan 26, 2005 11:21 am
Location: research and development facility for Vasteel Technology.

Post by Thunder Force »

I've tried the link again from a connection that doesn't pass through a proxy, and this time I could download the file. However when I click on the .exe in Win XP it just brings up a custom loading bar for a few seconds and then nothing appears.
"Thunder Force VI does not suck, shut your fucking mouth." ~ Shane Bettenhausen
User avatar
landshark
Posts: 2156
Joined: Wed Jan 26, 2005 5:27 am
Location: Chicago 'Burbs

Post by landshark »

Can you post some screenshots?
User avatar
ForteMP3
Posts: 178
Joined: Tue Feb 01, 2005 3:15 pm
Location: Somewhere in the Midwest.

Post by ForteMP3 »

I'll try and put up some shots later. Right now I've got some major issues that'll need working out if this project is going to continue being developed on GameMaker. If they aren't solved, well...I'm gonna need another way to program this shmup.

EDIT-I found a way around the collisions not occuring at higher speeds, but it's not an option I want to use, and that's increasing Vic Viper's hitbox to a considerably larger size. Scraping will barely be possible if I use this.
YOU ARE APPROACHING THE TARGET OF ATTACK! THE MISSION STARTS NOW! ARE YOU READY?!
User avatar
raiden
Posts: 862
Joined: Tue Jan 25, 2005 11:41 pm
Location: Cologne
Contact:

Post by raiden »

suggestions:

- repeat the pattern that was chosen automatically. That way, you can experiment with ways enemy movement produces pattern combinations.
- shorten the pattern choosing process by just asking for a number or a letter instead of the whole name. Makes it easier to test things.
- if you use random patterns, saving replay files becomes pretty hard. Using a fake random algorithm can solve this problem. Another problem with random patterns is the fact scores become less comparable.
User avatar
ForteMP3
Posts: 178
Joined: Tue Feb 01, 2005 3:15 pm
Location: Somewhere in the Midwest.

Post by ForteMP3 »

Hm, that's a good point Raiden. Though I don't fully understand what you mean by psuedorandom. Could you perhaps give me an example?

Patterns will automatically loop themselves in the future, thanks for the suggestion.

Also, thanks for the input on the Big Core's current patterns. Yes, they're primitive, but I wanted to create something relatively simple yet good looking for a pattern, as this will be the first boss. Later bosses will likely have more patterns and more complex attacks to deal with.

Also, when I do make the Big Core as an actual boss for the demo, flying to its sides to avoid its lasers won't work, just a fair warning. ;)

So what about some of the simpler patterns that use small bullets? Would these be okay if they're used by several onscreen popcorn enemies? Or should I tone down those patterns a bit?

EDIT-Additional note. While I have not been able to do anything about the 'jumpy' movement at higher speeds, I've come up with with some fixes, though the first is far from what I'm sure people want to see, it's honestly the best I can do at the moment.

#1-Speed Ups will not determine the only speed you move at. True to modern shmups, a "slow" key will be provided for precise, smooth movement when needed for tighter bullet patterns. Basically, Speed Ups will simply determine what your "fast" speed is.

#2-I've successfully imported that BulletML based collision code, and it seems to work perfectly. In fact, it's even faster on my project, likely because it isn't trying to read a bulletML file at the same time (reading external files can slow GM down quite a bit, afterall). This means that collisions will occur, and it won't be possible to "cheat" the system by moving at higher speeds to pass bullets up.

On another note, I'm not sure when I'll be able to add custom key/joypad support to the game, I'm still attempting to learn how a custom keymap setup works. Because of this, I'd also like a bit of input on the controls I've been using thus far, and if they would be acceptable until a custom keymap system is in place.

-For the keyboard-
Arrow Keys-Move Vic Viper
Z Key-Shot/Missile Button
X Key-Powerup Button
C Key-Slow Button (Hold to move slower. I've debated making this the Shift key instead)

-For a Gamepad/Joystick-
X Axis-Move Vic Viper Left/Right
Y Axis-Move Vic Viper Up/Down
Button 1-Shot/Missile Button
Button 2-Powerup Button
Button 3-Slow Button
YOU ARE APPROACHING THE TARGET OF ATTACK! THE MISSION STARTS NOW! ARE YOU READY?!
Zhon
Posts: 141
Joined: Wed Jan 26, 2005 1:12 am

Post by Zhon »

Fake randomness is when a game makes a decision based on a reproducible factor, rather than true randomness.

One possible way is to use an in-game number that's likely to be different in different playthroughs of the game. Let's say you have a boss that chooses one of four attacks to use. Instead of using a truly random number, you could use its hp modulo 4. Or the score, or player position converted into a 0 to 3 factor.

Another way is to use a random number generator with a fixed starting seed. This is basically equivalent to having a fixed list of numbers that are used in sequence whenever you would have called for a randomized number.

The benefits to fake randomness is that replay files can be saved without having to save every randomized number. However, if the player plays exactly the same way, then the game will end up being the same for that player - but if you choose a factor to measure that is unlikely to be exactly duplicated, then that won't be a problem. The precise player location in terms of pixels would be something difficult to reproduce, for example.
User avatar
ForteMP3
Posts: 178
Joined: Tue Feb 01, 2005 3:15 pm
Location: Somewhere in the Midwest.

Post by ForteMP3 »

Ah, I see. Well, I don't think replays will be a feature. I can see what you're getting at though, and I might consider it down the road. Right now the random generation is simply a number ranging from 0 to 60 (Basically, how many degrees to alter the shot's angle by. The starting angle is 210, so a random number from 0 to 60 is added onto it to determine the angle the lasers are shot at. This angle changes every shot as well)
YOU ARE APPROACHING THE TARGET OF ATTACK! THE MISSION STARTS NOW! ARE YOU READY?!
User avatar
shiftace
Posts: 435
Joined: Tue Jan 25, 2005 10:18 pm
Location: yes

Post by shiftace »

Some time ago there was a discussion about RNGs and replays, and someone came up with the clever observation that you can include the random seed in a replay file. ZUN's games, or at the very least Perfect Cherry Blossom, probably do this.
User avatar
CL@$$!C
Posts: 30
Joined: Tue Mar 29, 2005 4:29 am
Location: WA

Post by CL@$$!C »

The scissors and 360 interval burst are cool looking...

Of the Big core sweeps, i found H Alt to be easy as long as u didn't try to dodge it from straight in the center of the path (like off to a wing of it). A good regular 1st boss attack for hard mode i suppose, or maybe a manic last-ditch effort from a normal boss.

H2 is too damn hard to dodge by instincts and reflexes. It's a ''memorize an open hole'' type of pattern. Trial and error. At least, that's how I found it.

EDIT: I just found out u could speed up... doh. Maybe I should reevaluate.
Treasure.
User avatar
raiden
Posts: 862
Joined: Tue Jan 25, 2005 11:41 pm
Location: Cologne
Contact:

Post by raiden »

you can include the random seed in a replay file. ZUN's games, or at the very least Perfect Cherry Blossom, probably do this.
I have yet to see a random pattern in a ZUN game. Just because patterns are chaotic doesn´t mean they´re random. Random is when the pattern changes each time you play the game. Could you give an example for Perfect Cherry Blossom (preferably in the first 3 stages)?
Zhon
Posts: 141
Joined: Wed Jan 26, 2005 1:12 am

Post by Zhon »

You don't need to see an entirely random pattern for a random or pseudorandom number generator to be needed. If a boss's movements or choice of attacks does not follow the same sequence in every playthrough, then most likely (pseudo)randomness is already used in that respect.
User avatar
raiden
Posts: 862
Joined: Tue Jan 25, 2005 11:41 pm
Location: Cologne
Contact:

Post by raiden »

You don't need to see an entirely random pattern for a random or pseudorandom number generator to be needed.
yeah, but you don´t need to store the random seed number then, either. That´s why I was asking.
If a boss's movements or choice of attacks does not follow the same sequence in every playthrough, then most likely (pseudo)randomness is already used in that respect.
this can also be rank.
User avatar
nullpointer
Posts: 66
Joined: Tue Jan 25, 2005 11:12 pm

Post by nullpointer »

random generators dont just control patterns and directions they can also be used to control fire rates, enemy movement etc. In some of my games the enemy craft have a percentage chance of firing a pattern every frame tested against a random roll of 100 (for inst 1% chance means a fire every 100 frames or so) . As stated before, most RNGs have to be seeded with a static number, and every game seeded with that number will result in the same sequence of subsequent random outputs. The initial seed is usually taken from the internal CPU clock so as to get a nearly random init. For replays you would simply store the seed for that run in with the replay file. Which would insure a identical replay. RNGs are often used for lots of other elemenst such as homing missile accuracy and graphical effects (rotating meteors or pulsing/strobing lights etc).

In my games a rank increase also increases the percentile chance of an enemy firing (based on the random roll). But I agree that it is entirely possible to have no random methods in the control of firing, especially in games where a repeatable static stage design is key (ikaruga for eg)
Zhon
Posts: 141
Joined: Wed Jan 26, 2005 1:12 am

Post by Zhon »

Hehe - Ikaruga does have randomness - in its scattershots (including the on-destruction bullets), in slight alterations to a number of enemy formations (especially noticable in the rush through the chapter 3 enclosing walls).
User avatar
shiftace
Posts: 435
Joined: Tue Jan 25, 2005 10:18 pm
Location: yes

Post by shiftace »

raiden wrote:I have yet to see a random pattern in a ZUN game. Just because patterns are chaotic doesn´t mean they´re random. Random is when the pattern changes each time you play the game. Could you give an example for Perfect Cherry Blossom (preferably in the first 3 stages)?
I could swear that the spam patterns vary from game to game. Now that isn't enough to prove that the replay saves a random seed, because something like player movement could be used to seed the geenerator. The claim I heard was that the Phantasm stage has random patterns at the beginning that will vary even if you don't move or fire. That would require an outside random source in order to replay properly, e.g. putting the seed in the file.

Even if that doesn't happen in ZUN's games, storing a random seed in the replay file is still a good idea, IMO.
Post Reply