Site Logo


Sparen's Danmaku Design Studio - Guide A4 - Bullet Density - Putting the 'Hell' in 'Bullet Hell'

Part 1: Guide Introduction

Why exactly is danmaku referred to as 'Bullet Hell'? Why is it sometimes translated as 'Curtain Fire'? The answer here lies in density - bullet density to be precise. Unlike shooters where you dodge a small number of bullets that come at high speeds, danmaku games focus on incredible amounts of bullets. However, even within danmaku games, there are different categories and styles, ranging from the reflex-heavy rapid-fire CAVE games to the heavily subpatterned Len'en games to the slow and heavily artistic Touhou games.

In this guide, we will discuss bullet density, how it can be utilized to suggest or blend different dodging methods, how temporal and spacial density differ, how to control density, and how to utilize a lack of bullets to enhance the gameplay or aesthetic experience.

Part 2: Micrododging vs Macrododging - Variations in Subpattern Interaction and Design

We'll introduce out discussion on bullet density with micrododging and macrododging, which we gave rough definitions for in the prior guide. These are two general terms that get thrown around a lot and they are good to understand. Note that it is incredibly rare for a pattern to be pure 'micrododge' or pure 'macrododge' - they exist on a spectrum and work very well in harmony, and they represent a subset of the types of patterns one can find in danmaku.

First, as we begin our discussion on micrododging and macrododging, it is important to get an understanding of what we mean by these two concepts. Both of these are density-based danmaku pattern design styles, and a pattern can make use of any number of characteristics of these by utilizing multiple subpattern and groups in conjunction. Macrododging is characterized by bullets being in a tight formation that requires the player (or the viewer's eye) to move a significant distance, focusing on the pattern as a whole to dodge. Micrododging is the opposite, focusing on bullet arrays that require the player (or the viewer's eye) to focus deeply on a small area of the screen. Note that the actual bullets do not define these two types of pattern design - rather, the visual and mental focus of the person experiencing the danmaku pattern is what differentiates the two. Therefore, although they both have 'dodging' in their name, no player is actually needed for subpatterns to contribute to a micrododging or macrododging design.

The best way to describe these is by example. First, examples of macrododging. Some examples of pure macrododging include the following selection from Sese (Len'en 3) and Lumen (Len'en 2). In these cases, large clusters of 'bullets' force the player to move while considering the objects' size.

Sese's opening boss nonspell - Bones have a very large spin radius and require the player to work around the circular area that they cover while spinning

Lumen's first extra stage spell - large clusters of lasers and bullets force the player to navigate around the obstacles while taking into account their spin.

However, macrododging is best used as part of a larger pattern, where macrododging is just one component. Excellent examples include Aya's nonspells in Mountain of Faith, Momiji's nonspell in Mountain of Faith, and one of Orin's spellcards in Subterranean Animism.

Aya's boss opener - large impassable macrododge rings are utilized in conjunction with wider rings that the player can pass through to create a dynamic, multi-faceted pattern using simple groups and subpatterns.

Momiji's nonspell - giant spirals cover large portions of the screen, forcing the player to dodge around them while also using additional subpatterns to force the player to dodge carefully.

Large spiraling rings of spirits force the player to dodge between them while Orin's other subpattern on repeat adds complexity to the dodging.

Now we'll cover examples of Micrododging. Imperishable Night as a game focuses incredibly heavily on micrododging as a design pattern and is a good example for study. We will showcase examples from Eirin (Imperishable Night), Sanae (Mountain of Faith), and Ringo (Legacy of Lunatic Kingdom). It is worth noting that simply hving a lot of bullets does not imply micrododging - we will cover some of these more surprising concepts in Part 4.

Eirin boss nonspell 4 - Differing starting angles, bullets coming from different directions, and slow bullet speeds result in the player having to focus on every single move they make.

Sanae midboss spell 1 - Star formations disintegrate into slow moving highly-dense bullets from all sides.

Ringo last spell - Complex bullet groups disintegrate into a dense cloud of slow-moving bullets.

Part 2a: Implementing Macrododging

Earlier we described macrododging as a way to make the player focus on the pattern as a whole and to pay attention to a large part of the screen. In addition, we used Sese and Lumen as examples of pure macrododging, where the entire focus of a pattern was on dodging large obstacles. However, we don't need multi-directional crazy patterns to demonstrate macrododging. In fact, we covered the foundations for macrododging in the previous guide.

Here we will demonstrate two of the many techniques that can be used to create macrododging environments - walls and same-angle rings. Other techniques, like the spinning radius method employed by Sese and Lumen, the variable shape method, and the large object method popularized by Utsuho sunspam/Unzan brofist + derivative troll scripts, will not be covered here (but you should definitely take them into consideration).

We'll start with walls. In the following example, we will have rings of spreads. Each spread will have a fixed angle range, and there will be a control slider that dictates how many bullets will be in the spread. Imagine that you're the player - what is it like dodging with very few bullets per spread vs dodging with many bullets per spread?


Number of Bullets in Spread:

As you will have noticed, there eventually comes a point where the bullets in each spread are so close together that it is no longer for the player to dodge between the bullets within a spread. This is the point where the spread becomes a 'wall', and where the player is forced to dodge around the entire spread. From a gameplay perspective, this requires the player to dodge the pattern while taking into account the fact that they cannot go straight through these obstacles. From an aesthetic perspective, clear walls provide visual structure to the pattern and since they are easy to identify, can be used for that property to create strong focus points for the viewer's eye.

Now we'll cover the technique employed by Aya - the same-angle ring. In the previous guide, we covered how we could spawn rings with a set offset radius from a center point. The Same-Angle Ring is a technique whereby we spawn the bullets this way, but where all the bullets making up the ring move at the same angle and speed. We will use an example similar to that of Aya in the following canvas - again, experiment with the number of bullets in the ring.


Number of Bullets in Ring:

Ring Radius:

Like with the walls, as the density of bullets goes up, it no longer becomes possible for the player to enter the ring, and as such it becomes a large obstacle. Note that this depends on the radius employed, similar to the spread angle for walls. With a large radius, more bullets are needed before the ring seals itself and prevents the player from entering or leaving.

Hopefully this section has provided some examples of how to implement macrododging (other than the tried-and-true method of just using large bullets).

Part 2b: Implementing Micrododging

To implement micrododging, we must clarify some aspects of its definition. First and foremost, micrododging requires the player to pay extremely close attention to a confined area of the screen. By definition, this means that very fast bullets and streaming are NOT considered micrododging. We will discuss the former in more detail in Part 3 and will discuss the latter in Part 4.

Micrododging, therefore, requires that there be bullet subpatterns interacting such that the player or viewer has a need to focus. Random variation and bullets coming from different directions with time for the player to react are all important components of micrododging. The former ensures that the subpattern is not predictable. The latter ensures that the player must exert more focus. An example of only having the former would be Eternal Meek - there is no micrododging, even if the speeds were slower, since all the bullets originate at a single location and are therefore predictable. An example of only having the latter requires no effort on the end of the player once the first bullet is dodged.

So how can we implement micrododging? We will give more complex examples in Part 3 when we cover spacial density, but for now we will turn to the death fairy before Mokou in Imperishable Night.

In the Imperishable Night example, many different subpatterns layer on top of one another to create a slow-movng, dense cloud of bullets from all sides that requires intense concentration. Now we will demonstrate a much simpler version. We will fire three subpatterns in the following example - a ring from the center and spreads from two points rotating about the center.


There are many ways in which you can create a micrododge heavy pattern, but in general simple layering of different subpatterns is the easiest way to do so. Place your eye on an empty space in the above pattern and pretend you're the player. Before you know it, you'll experience mental filtering (as discussed at the end of Guide 2) and you'll be focused solely on wherever your 'player' is (though the quickly rotating spawners may catch your eye as well). That's the essence of micrododge.

Part 2c: Finding a balance between Macrododging and Micrododging

Micrododging and macrododging work best together. Finding a balance between the two, like was done with Utsuho in Subterranean Animism, can make a pattern dynamic and enjoyable. This isn't to say that pure macrododging and pure micrododging aren't dynamic or enjoyable, but they put intense strain on the player or viewer and should not be the only component of your game or visualization. Try to combine the two in order to create patterns that require the player to dodge large bullets while also needing to pay attention to smaller ones.

Remember - these are tools in your toolbelt as a danmaku designer. What kind of movement do you want your player to make? Where should the focus of the pattern be? What speed do you want your player to move at? Take these things into consideration and your patterns will be more vibrant and enjoyable as a result.

Part 3: Spacial and Temporal Density

Back in Guide 1, we touched upon spawn rate and bullet speed. Now we will go into further depth as we cover spacial and temporal density.

Bullet spawning can be dense in the spacial sense (bullet density, including spawn rate, spawn quantity, and speed) as well as the temporal sense (timing & pacing). Think variation over space and time. Spacial density is the more obvious component - the more bullets in a given area, the more dense the area is spatially. Temporal density is a less obvious component - the timing and pacing of the attack can create and disperse density.

We'll first show how adjusting spawn location and spawn time can completely change a pattern. Then we will take a closer look at bullet speed and how it affects both forms of density.

Part 3a: Creating Patterns from Fundamentals

Patterns are rarely comprised of a single subpattern. Different subpatterns interact on the screen both in space and time, and the interactions between subpatterns (and how they are designed) is a fundamental part of the pattern. Given two subpatterns, spawning them in different locations or displaced over time can cause them to interact in completely different ways, and determining how to take advantage of these displacement techniques is one of the most powerful abilities a danmaku designer can have.

In the following examples, we will have two subpatterns. One is a repeating dense green ring. The other is a repeating stack of orange rings. They have the same angles, number of bullets, and speed. Each will be spawned approximately once a second.


Now we will utilize these two subpatterns in a variety of examples. The only difference in how they are spawned is where and when they are spawned. Throughout these, consider how the bullet density changes when different subpatterns collide, as well as how the timing and location affect this.


In our first example, we will use one of each, spawned at the same time at the center of the screen. This pattern uses the two subpatterns as if they were groups, with a single dominating pattern. Note how all bullets originate from a single point. The two subpatterns complement each other visually but from a danmaku perspective, this is visually boring over time.


In our second example, we will offset the second subpattern by half a second. Note how the two subpatterns, when compared to before, are now highly distinct components. In addition, the bullets do not overlap nearly as much spatially either. Instead of concentrated bursts of bullets, there are more frequent but different types of patterns.


Let's kick it up a notch. We'll separate the two spawning and alternate them on the sides. Now the two subpatterns are interacting at different angles and at different locations. In addition, by adding spacial offsets, each subpattern is now interacting with the subsequent spawning of themselves, especially for the stack of rings.


Adding to the prior example, let's offset each subpattern by half a second. Note how much more 'dynamic' the pattern is compared to the prior example. However, also observe how the bullets cross and interact - the entire pattern shifts the focus of spawning simply by virtue of having offset timing resulting in consecutive spawning bursts at each side. This pulls the viewer's attention to one side and then the other and back.


Let's crank it up even further with some actual density. We'll fire five instances of Subpattern 1 in a ring over time. To not make this overwhelming, each spawner will fire every two seconds instead of every second. Observe how the different rings interact, crossing and diverging. Also observe how there are locations where bullets from multiple rings collide - consider how this affects the viewer's eye and where they are looking as how the momentarily clumping of bullets affects the density at that point. By controlling density in such a way, you could for example create a situation where a player must micrododge temporarily in an otherwise micrododge-free pattern.



Finally, we will close with an example where two instances of Subpattern 2 are on the sides and alternate with two instances of Subpattern 1. The three buttons dictate what fraction of a second offset is used between the subpattern spawns. The timing of this gap allows the subpatterns to interact in different ways - test the three out. Observe how the bullets interact (and how the time difference causes them to meet at different places). Default is the first option (Sub1 - 0.75 - Sub2 - 0.25 - Sub1)

Part 3b: Bullet Speed and Spacial Density

Now that we've shown some examples, it should be clear that the way you space and time your subpatterns can have a tremendous impact on the flow and aesthetics of a pattern as well as how bullets bunch up or spread out. However, it's worth noting that throughout these, we never actually varied the speed of the bullets themselves. In the previous section, we noted that micrododging involves heavy viewer/player focus on a small area and that fast bullets did not constitute micrododging.

Why is this so? The faster a bullet, the larger area the player or viewer must pay attention to in order to understand the trajectory of the bullet. By definition, this means losing focus on a certain area of the screen. As the player's focus expands, it becomes harder to track many bullets, and spacial density is typically lost or traded in for techniques that are easier for the player/viewer to keep track of (e.g. streaming). A natural consequence of faster bullets is that they leave the field of view faster - affecting both spacial and temporal density. The opposite of this holds true as well - slower bullets leave the field of view more slowly and allow the player to focus on a much smaller area of the screen.

We'll illustrate this by showing examples of the first three above side by side with a version with double speed.


In this first example, note how subsequent burst catch up with the former - behavior that was not in the first example. If the canvas size was larger and there was an actual player, imagine how it would be dodging at the bottom where the two patterns overlap.


In this example, the double speed pattern feels less dense precisely because it *is* less dense. Look at the bullet counts and how they differ. Note that the visual structure present in the first example is lost in the second due to only one ring being present on the canvas at a time due to increased speeds. However, remember that this example is exactly the same as the one above, just with staggered spawn times. Compare the two - this is an example of how changing the timing of a subpattern can create one set of patterns with one speed, and actually lessen the distinctness of the patterns at a higher speed.


Here, as in the prior examples, overlaps between patterns are reduced and the pattern seems to lose some structure. However, imagine if the ring was a stack of rings - the gameplay with stacks would be completely different from the slower speed version. Different speeds can allow for different types of groups to shine.

By now you should understand that with faster bullets, overall spacial density is lowered and patterns can lose their form. However, it is also an opportunity for other potential subpattern components to shine, and so you should continue to experiment and see what kind of bullet speeds work well with one another. In addition, by upping the pacing, the character of the pattern can change, so be aware of how the temporal density of your pattern changes and how that affects how the player or viewer experiences your pattern.

Part 4: Controlled Density - Fewer Bullets != Lower Difficulty

Earlier, I noted that streaming, even with thousands of bullets, is not micrododging. This is because the player can literally close their eyes and tap in one direction a few times to completely dodge the subpattern. More bullets does not mean higher difficulty. And, vice versa, fewer bullets does not mean a lower difficulty.

First, let's start with an example where a pattern with many bullets turns out to be comparatively easy to dodge.

Sengo (BoSM Extra) - A massive swarm of bullets spawns along a line near the top of the screen. However, most of these bullets leave the screen immediately and the structure of the pattern provides clear paths for the player to dodge along.

The above is just one example of the phenomenon - in a future guide we will discuss in greater detail how small changes in a pattern can make it completely different difficulty wise (e.g. different change in angle). There are some perhaps unexpected occurrences here due to the way the math plays out.

But now let's discuss the opposite of the above. When it comes to bullet density, a shocking amount of difficulty can be drawn from a small number of bullets without needing curvy lasers or complex gameplay mechanics. The structure of a bullet group and its timing can prove to be more deadly than sheer numbers. For example, a seemingly innocuous pattern can merge to form ridiculously high spacial density at the very moment the player tries to dodge it. Sometimes how the player dodges determines the difficulty.

For this section, I will default to examples of patterns with fewer bullets but unsuspectingly high difficulty.

Miko - Bullets with angular velocity are too dense to pass at the top, and cross over where the player typically dodges to form a wall if the player does not time their movement correctly. By the time they are less dense, they are at the edges/corners of the screen, and so the density drop cannot be taken advantage of by the player.

Kutaka - Five rings of bullets accelerate from the four corners of the screen as well as her position. Only a few bullets are ever near the player, but their acceleration and the random variation mean that they will interact in a completely different way each time, and will meet in different ways depending one where on the screen the player is dodging.

Finally, let's discuss a special case - cases where fewer bullets on easier difficulties potentially make the attack harder, or may cause the pattern to be dodged in an entirely different way. These are cases where the density of bullets is actually necessary to detail how to dodge the pattern.

Doremy from Legacy of Lunatic Kingdom is perhaps the best example of controlled density and is therefore simultaneously the worst offender in this category. Many of her spellcards provide a clear movement for the player to follow in order to dodge despite having copious amounts of bullets. However, density and pattern structure are reduced so much on Easy and Normal difficulty that her first boss spell in Stage 3 is most easily dodged a completely different way than on Lunatic.

Watch this attack on Easy, then Normal, then Lunatic. Then compare how the attack is structured (and subsequently dodged) on Lunatic to how the attack is structured on Normal and Easy. How is the pattern telegraphed? What structural changes occur to the subpatterns, and how does this change player behavior? What different ways can the patterns be dodged? And, somewhat importantly, is the apparent change in the dodging method actually better for a player with a lower skill level who is not expected to be able to do perfect circular ring movement?

This is all something to take into consideration when designing a pattern - especially one meant to be played - what are the expectations of your player or viewer, and does your pattern design work well with those expectations?

To close off this section, I'd like to do a little bit of self-promotion.

This spellcard uses covering up expanding parts of the screen as a mechanic. In order to properly telegraph attacks, the solution chosen was to use stacks of bullets. Due to the player or viewer being able to group the bullets in a stack together mentally, it allows them to predict where the hidden parts of it are. This attack simply would not work if there were fewer bullets in the stacks. For more on how this works, I'd recommending watching Gestalt - The Parts and the Whole - Extra Credits - something that is quite useful in game design even if it is not directly applicable to this particular guide.

Part 5: Negative Space - Organizing Chaos into Beauty

We will close this lesson by using Doremy as an example of how a combination of spacial and temporal density can result in patterns that form 'paths' for the player. We've already shown an example above, but the question is how this is actually achieved.

Now, negative space in danmaku doesn't seem obvious at first. After all, the one major aspect of danmaku is to have bullets everywhere. But when we think of negative space as a bullet-free area over a period of time, it becomes an aspect of temporal density - the negative space is created by a specific aspect of the pattern working over time, and the pacing at which it is executed dictates how apparent the negative space is as well as how efficiently it can be used by the player or the viewer as a way to move their focus around the screen.

Above is one of the most well-known examples of how the player can be guided along a path by a pattern's design. Now, looking at it like this, it may be hard to understand how exactly it guides the player. So we'll observe the same pattern on Normal difficulty.

Fundamentally, we have a spawner moving in a ring over time, spawning a group of bullets. Their angle has an offset in the opposite direction of the spin, but that's not fundamental to this pattern. In the example below, all of the bullet groups face away from the center (and therefore face towards the center since I have an even number of bullets).


The important aspect here is the spawn time. Only by having an offset in the spawning do we get the moving area of negative space. In the below, everything spawns at once with no delay.


A lot less dramatic, huh.

So... what's the secret, really? Well, as shown in the canvas below, it's really just hiding in plain sight. Aim at a point. Spawn over time in a ring. Each component of the ring will hit the center at a different time. The resulting shape over time is what we just experienced.


With that, we conclude this guide. Hopefully you have a better understanding of bullet density, pattern pacing, and how they can be controlled, experimented with, and manipulated to discover new and exciting ways to design your patterns. Always keep in mind that things can interact in interesting ways, especially if a few characteristics are tweaked here and there, and keep in mind that sometimes, things are not what they seem. I'll see you all in the next guide.

Sources and External Resources