Boghog's bullet hell shmup 101

From Shmups Wiki -- The Digital Library of Shooting Games
Revision as of 20:15, 21 September 2022 by Boghog (talk | contribs)
Jump to navigation Jump to search


A glossary to get you started :

This doc covers the fundamental aspects of designing a bullet hell (danmaku) shmup. This is heavily skewed towards CAVE’s style of games, but a lot of the things discussed here can be carried over to other styles.

Knowing these fundamentals is important even if you’re going to break every rule in the book, because it helps you make informed choices instead of taking shots in the dark.

I’ll include examples when appropriate but for practical purposes, I will avoid too many counterexamples, edge cases and other complications. The goal is to give a good idea of how to make a typical CAVE-style shmup. If you want to branch out past that & make something different you’re on your own!

And don't forget, first hand experience is everything! Play shmups a lot, you don't have to get 1cc's or good scores but getting to a point where you can watch a good replay of your favourite game and understand what the players are doing is a must. Game design requires good intuitions for what feels right, and the best way to build that intuition is through experience.

Here is the doc in its original form :


The Play Area

This is where all the action happens. The play area can either be contained by the screen, or it can be wider thanks to horizontal panning seen in many vertical shmups. The size of the play area is relative to the size of the game’s objects and hitboxes.

The tiny hitboxes of Danmaku games make for relatively large play areas which allows them to fill the screen with bullets. This has downsides however - large play areas funnel games into relying on lots of projectiles for challenge. It makes it much harder to rely on simple patterns.

The same kind of challenge with different hitboxes, the Danmaku style example has more than twice the bullets.

A game's movement speed and shot type has to be tuned to match the size of the play area, narrow areas can afford to (and can benefit from) slower move speeds and narrow shot types to emphasise small differences in positioning and give enemies time to do their thing (examples : Gunbird 2, Dragon Blaze). Wider play areas tend to use faster speeds, wider shots or some kind of multi directional weapons to compensate for the large distances the player has to travel (examples : Mars Matrix, Under Defeat HD).


The most fundamental source of challenge in danmaku games is identifying, predicting and manipulating different bullet trajectories and making precise movements to dodge bullets and control screen space. Because of this, giving the player as much control, consistency and awareness as you can is the top priority, the movement should feel seamless.

For consistency’s sake, it’s best to avoid different directional movement speeds, such as the ship moving faster on the x axis than the y axis, or faster diagonal movement. Don’t forget to normalise your diagonal movement! There are some great games with faster diagonal movement like Battle Garegga and Armed Police Batrider, but they are rare.

Movement inertia should be avoided entirely because it adds an unnecessary layer of lag to the movement that players have to adjust to, without adding any interesting gameplay dynamics. Even the smallest amount of acceleration will be noticeable to experienced players.

If your movement doesn’t “feel smooth”, then it’s most likely the result of lacklustre visuals rather than a lack of inertia. Some tricks that can make movement feel smoother - beef up your shot/rate, add an afterimage (see Symphony of the Night/Megaman ZX), match your ship’s banking animation speed to movement speed, have the ship leave trails (see Danmaku Unlimited 3), give your ship’s options (floating bits near your ship) some inertia.'

Normal/Focus Shot

Danmaku games often feature a focus shot mechanic, which was popularised by CAVE. The player’s ship has 2 states with their own speed, a fast wide shot mode (tapping the button), and a slower focus shot mode (holding down the button) usually represented by a laser or another kind of concentrated shot.

This is useful because it gives the player more control and creates some basic but rewarding gameplay dynamics - the players have to think whether they need to use fast movement to quickly get into position, use slow movement to make dodging more precise, or accept slow movement for the sake of additional damage-per-second.

The transition between normal & focused speed is usually (but not always, see Touhou) interpolated to create a smoother, more gradual transition. The speed difference between the normal and focus shot itself varies depending on game & ship (focus being ⅔ of the original speed is a good middle ground).

The gameplay effects of different speeds are highly varied, the usual archetypes you have are fast, powerful ships with narrow shots, or slower weaker ships with wide shots.

Hitbox and visibility

During gameplay, players won’t have the time to look at their ships, instead focusing on enemies, their patterns and places they are moving to. They will roughly estimate the ship’s position based on the stream of bullets they shoot out, the general silhouette of the ship & additional visual elements (like HUD elements, flashing colours) near the ship. As a result, giving players thick, fast, noticeable bullet streams can not only enhance your game’s feel, but also the visibility. Perfectly centering the hitbox is also important because it keeps things consistent.



Shmups are all about shooting. Above all it’s important to make the act of shooting feel satisfying. Achieving a decent game feel isn’t too difficult, but there are a lot of little things to take into consideration. A general bit of advice - when you’re making a game’s objects move, you become the game’s animator. The only difference is that you animate things through code rather than by redrawing frames or moving things around. As a result, studying fundamentals of animation & practising will pay off immensely.

On the mechanical side, the key principle for achieving a good game feel is to skew things in the player’s favour in subtle ways. Give the player a hand & compensate for their small positioning/timing mistakes, while focusing on punishing big ones.

Polish Effects & Small Mechanics

The first thing you want is speed.

Speed is good for conveying force and making impact feel stronger. A fast bullet is a powerful bullet, especially if you combine it with an appropriate bullet splash effect. Speed helps create immediate feedback which is important for enhancing the player’s sense of agency. When the player presses a button they expect results. Speed helps the player keep track of the ship’s position. The faster you can update the bullet stream to reflect the player’s current position, the better they can estimate it.

In animation, a good way to convey the feeling of speed is by using motion blur (smears, trails). Length will create the illusion of motion and make bullets feel even faster. This can be taken to ridiculous extremes and still look good. The opposite will likely read poorly - short sprites will clash with fast travel speed and create a disconnect. As a general rule of thumb, you should always consider the projectiles’ travel speed when deciding the length of its sprite.

An extreme example - which one looks like it’s travelling quickly?

The next element you want is density. Make big, fat projectiles, huge messy streams, cluster bullets together and don’t concern yourself with making things too neat and organised. All of this makes the player ship feel like a force to be reckoned with. Players want to feel powerful, they want to feel like they’re wiping out everything in their path and overwhelming the enemies, even as the game is kicking their ass. Dense bullet streams create this illusion.

CAVE’s shots are rarely too “pretty” or organised, but they work. Chaos feels good!

Dense patterns help the players estimate their position, smoothen out imperfections and let the player’s mind imagine more interesting bullet streams than what’s actually on the screen.

Giving the player’s shots huge hitboxes, and giving enemies huge hurtboxes makes the game feel better by compensating for the player’s minor positioning/aiming mistakes. The player’s shots shouldn’t have massive gaps or dead zones, and their emitters should be low.

Make sure that players can hit enemies while sitting on top of them so they don’t run into frustrating moments where they have to do micro-adjustments in the heat of the moment.

Shot Limit

The on screen shot limit is when games only allows a limited amount of player projectiles to be on the screen at once, it refuses to create new ones until the old ones exit the screen, hit an enemy or are otherwise destroyed.

The shot limit is most obvious in early shmups such as Galaga (which only allows 2 shots on screen) but it exists in almost every other arcade shmup as well.

Born out of hardware limitations, the mechanic has become a staple of the genre because it perfectly meshes with the player’s movement and creates some very fun natural gameplay dynamics. The closer the player is to an enemy, the faster their shot rate (and DPS) will be.

The prominence of the shot rate is different in every game. Games/ships with high fire rates and low on screen shot counts encourage a very aggressive in-your-face kind of playstyle while the opposite creates more dodging oriented games.

A classic example of players using proximity to quickly kill the stage 1 mid boss in Raiden 2.

It should be noted that in addition to this, some games have other forms of proximity damage, such as Dodonpachi’s ship aura, which surrounds the ship and does tick damage. Other unique ways of creating proximity damage are worth experimenting with.

Power Ups

Power ups are all about trickery and illusion. Increasing the damage in a straightforward manner will most likely lead to balancing issues. The player's level 10 shot cannot be 10 times more powerful than their default shot without something breaking.

Shmups get around this problem by simply lying to the player about their power level, increasing damage by a very small amount (for example x1.1). This practice is normal and is seen in most shmups from Toaplan to CAVE.

Numbers aside there are other ways to make shots feel more powerful. Increase projectile width and height, increase their speed, make them look more saturated, add details to the shots, make damage sounds more powerful. You can even decrease the damage values but add additional projectile emitters, like Gradius-style trailing options. Anything that makes the shot more satisfying without causing balance issues or making the lower levels feel terrible is fair game.