Site Logo


Sparen's Danmaku Design Studio - Guide A1 - The Humble Bullet - The Fundamental Unit of Danmaku

Part 1: Guide Introduction

In this guide, we will cover the bare fundamentals of Bullets and Spawners and will cover types of bullets from a visual standpoint. We will explore different graphical styles of Bullets as well as considerations with regards to Spawners. We will close with a discussion on Spawn Rate and Speed. Angles will be covered in Guide A2. Multiple Bullets in a Group will be covered in Guide A3.

Part 2: Bullet Components and Characteristics

The Bullet. They come in many forms and are an integral component of any danmaku pattern. As the most fundamental unit in a pattern, it is essential that their capabilities be well understood.

Every Bullet has coordinates in space, a movement speed, and and a movement angle. Some bullets may also have acceleration, min/max speed, and angular velocity. Depending on the graphic, we can break bullets down into four graphical categories:

  • Non-Directional Bullets (e.g. circles) that exhibit point symmetry and have no clear render-movement angle correlation
  • Directional Bullets (e.g. ellipses) that have a sprite indicating their axis of movement direction (though the sprite may not have a clear direction in itself). These are often symmetric (i.e. it would make sense if the bullet were moving forwards or backwards given the sprite).
  • Vector Bullets (e.g. arrows and arrowheads) where their sprite visually indicates movement direction. Put differently, the vector of direction (including the exact angle) can be easily inferred by looking at the bullet.
  • Static-Angled Bullets where there is no rotation at all.

Loose and Straight Lasers fall under the category of Directional Bullets, while bullets that rotate independently of their movement direction are considered Non-Directional Bullets. Curvy Lasers are considered strings of Bullets, so the individual components fit into the Directional Bullets category. Run the below example to see examples of these bullet types.


Part 3: Bullets and Spawners

Now that we've covered types of bullets, we'll take a (very) brief look at Spawners.

As mentioned in the previous guide, a Spawner (or Emitter) is where a bullet spawns. This is generally true, though we will go into greater depth with this when we discuss radial offset spawning and line spawning.

Spawners can be static, or they can move. In general, spawners either stay in the same fixed location, travel along a predetermined mathematically-defined path (e.g. rotating around a point), and/or are attached to another object, such as an enemy or boss if there is one. We will discuss these in a later guide.

Part 4: Spawn Rate vs Speed

We will close this brief introductory guide with a brief discussion on spawn rate and bullet speed. We will revisit this topic in the future when we have more complex patterns, but for now, we will observe these concepts with respect to single bullets.

The spawn rate is how frequently bullets are spawned from a Spawner. For example, if the spawn rate is 10 bullets/second, then in a 60 FPS system we have a bullet every six frames, or a bullet every 100 ms. We refer to the time between bullets as the spawn interval.

The speed is how far a bullet moves in a timeframe. For example, if the speed is 60 pixels/second, then in a 60 FPS system the bullet travels at 1 pixel every frame.

While the link between these two aspects of bullet spawning may not seem obvious at first glance, from an aesthetic perspective and from a gameplay perspective, there is a key link - density.

If the spawn rate is high and speeds are slow, bullets will be bunched closely together. If the spawn rate is low and speeds are high, bullets will be far apart. The implications of this mean that a careful balance must be maintained to have the appropriate number of bullets on the screen at any given time.

Try out the following interactive example below. Please note that it runs at 50 FPS, so a rate of 5 will result in 10 bullets/second. The last two rows are user controlled - after changing a value, click outside of the box for the changes to take effect. Please note that interval values must be integers, as internally, Danmakanvas computes a modulus.


Row 5 Speed; Interval:

Row 6 Speed; Interval:

Sources and External Resources

Four-type bullet graphic classification originally created by Virtlux