Site Logo

Sparen's Danmakufu ph3 Tutorials Lesson 35 - Designing and Balancing Player Scripts

Part 1: What will be covered in this lesson?

Welcome to the second player script tutorial. In this guide, we will cover player script design and balancing. Perhaps surprisingly, this tutorial will not use Danmakufu code at all, as this guide is meant to be general purpose and the same guidelines apply to any bullet hell with a player.

We will start by covering the primary types of player script shottypes, and will then dive into considerations on base shottype design and bomb design. After this we will consider balancing techniques, including for custom shottypes.

Note that there is no standard way to design and balance a player script. It depends on the purpose of the player script (tailored to a specific game/general purpose/etc). Like usual, we aim to give you examples and tools to put in your toolbox - how you use them is up to you.

Part 2: What are the general player shottypes?

First thing's first - standard player shottypes are almost universally grouped into three categories - Wide (Spread) types that do less damage across a wide area, Narrow (Forward Focus), and Other. Marine Benefit Sanae is a very *special* type of 'Other' that we will pretend does not exist cover later in the design and balancing of custom shottypes.

Spread shottypes generally aim to cover a wide range, dealing less damage to an enemy directly in front of them but doing well during stages and with moving bosses. Some of these have very good shotgunning potential if you can get right in front of a boss, though this is risky for the player. Generally speaking, their unfocused shot covers more range, allowing their focused shot to deal more damage to a boss (though shots should always be missing the boss if you aren't shotgunning with a spread type. In rare cases, you get an inverse, such as with MarisaA in Touhou 11 - this is much harder to use in terms of required skill level but can be very rewarding to use as a player if properly balanced for the game.

On the other hand, Forward Focus shottypes fire most of their bullets straight towards the other side of the playing field with minimal spread. These do great at destroying bosses that move slowly or not at all, but do a less good job in stages with large numbers of enemies on different sides of the playing field and boss battles where the boss likes to move a lot.

With regards to the Other category, there are some general archetypes that see use. The most common are Homing shottypes, though the homing is generally only done as a complement and not as the main source of damage.

Besides the general categories, it's worth noting that familiars/player options can be used to add a 'secondary' style to a shottype, and that there is an abundant variety of different styles here. Some familiars track the boss or an enemy, others fire backwards or at strange angles, and yet others lock into position or angle based on whether or not the player is focused or not. There's a wide variety of options to choose from or invent on your own.

Of course, there are a few general things to note. First, the player needs to be able to work in a boss fight. Unless the game is 100% stage with no boss, the player needs to be able to consistently damage the boss. Anyone who has done an Imperishable Night solo run with an unfocused shottype should understand how much longer it takes to clear the game due to the lower focused damage output. Adding homing shots to a spread shot, enabling guaranteed damage (e.g. a familiar tracking the boss), and having area of affect are all examples of ways to counteract this. There are plenty of creative ways to get around this problem.

Part 3: What considerations should I make when designing a player script?

Of course, a player script is more than just its base shottype, even though that might be what you experience the most. There are a lot of different levers to toggle - movement speed, location of familiars, range, firing speed, amount of penetration, bomb type, deathbomb capabilities, and more all play into how a player script is used. Therefore, we will split player scripts into categories once again - in this case, general purpose player scripts and specialized player scripts.

A general purpose player script is one that should be able to handle any situation gracefully. It's very common to see average speeds (default is [4, 1.6], for context), a balance of focused and spread shots, and either a larger number of smaller scale bombs or a smaller number of high impact bombs. These players assume no gimmicks, and follow the same guidelines as any script released for use with any player. Most Reimu/Marisa/Sanae Touhou players in official games are balanced this way, as long as you ignore the more gimmicky players (e.g. Touhou 8, Touhou 11, Touhou 16, Touhou 17).

On the flip side, gimmicky players are typically tied to the gimmicks present in their game. Using Touhou 11 as an example, MarisaA is entirely dependent on the 'bombs are tied to power gauge' mechanic. This also goes for HSiFS Extra, where you can fire backwards. We'll consider these later when we discuss the design and balancing of custom shottypes.

So it comes down to what kind of game the player you are developing is meant for. If you're designing a player for use with any script, focus on balance - a good amount of reliability in their shots, average speed, balanced bombs, etc. On the other hand, if you are designing a player for use with a full game that has a core mechanic, the player should be balanced to work together with that mechanic, and all players used for such a game must be balanced against one another such that none has a clear advantage over the others. Even the gimmicky ones - Youmu in canon games might be terribly hard to use without practice, but she does the job just as well as, if not better than, the other players.

As a final note, all components of a player (unfocused shottype, focused shottype, unfocused bomb, focused bomb, gimmick, etc) should all complement one another. Each option should be superior in a different situation, and each option should cover weaknesses of the others.

Part 4: How do I design player bombs?

Player bombs, like shottypes, come in three general categories - Bullet Wipes, Nukes, and Other.

Bullet Wipes focus on clearing bullets and doing less damage across a wide area. Unfocused bombs tend to be of this category - think Evil Sealing Circle, Non-Directional Laser, Indiscriminate, etc. You typically have more bombs of this category when starting out and missing, as they tend to be more 'spammable'.

On the flip side, Nukes focus on wiping out a boss, and it generally doesn't matter how much of the screen they cover (screen nukes are very satisfying to look at). Tsubakura Lasers, Master Spark, etc are good examples. Typically, on spawn and miss you only get two bombs of this type, and they are typically reserved for particularly nasty parts of a stage that the player finds too risky.

Finally, the Other category includes flash bombs that do little to no damage but are spammable (e.g. Len'en and Touhou 16), as well as unique types (e.g. shields such as SA MarisaC and DDC Reisen; timestop; etc).

Moreso than with anything else though, the bomb is what defines the player script. They need to be appropriately flashy, powerful, and in-character in how they look and operate. You probably won't see Youmu wielding a missile launcher or Ran using a camera.

Part 5: How do I balance player scripts?

We've already given plenty of reasons why player script design is subjective, but there are some tips and tricks that you might find useful.

First, your shottype should clear enemies in a relatively fast (but not too fast) fashion. For a nonspell, a shottype of any form should clear it in between 10-15 seconds (extra nonspells tend to be a second or two shorter). Any longer and it's dragging on. Any shorter and the player isn't even dodging for very long. Spellcards are typically in the 16-28 second range, excluding final spells and survivals.

To achieve this, one important thing to consider is the balance of damage across the shots emitted by a player. For consistency in forwards spread shots for example, the central shots can have higher damage to ensure some level of consistency against a boss, or constant homing shots can ensure damage is being delivered.

Similar tactics can be employed with familiars. Familiars can be placed in such a way that their shots' trajectories run parallel or never hit a boss at the same time as the player's main shots, for example. Familiars can also provide shots at niche angles that can be useful situationally, making some less favorable situations for the player more manageable. An example is with MarisaB in Subterranean Animism, with Patchouli's wide variety of shot formations allowing for an incredible ability to adapt the shottype to the situation (though with a high skill requirement).

As for balancing other aspects of a player, it depends on if you have a general purpose player or are building a player for a game - in the latter case, players need to be distinguished from one another. Perhaps one moves faster and deals more damage, but has a smaller deathbomb window and fewer bombs. Perhaps one has wide spread but also has piercing straight lasers. Build what works best for your game

To close with a final note, a good max DPS is around 280-300 for standard general purpose players. Go up to around 300-320 for spread shots, and go down to 260-280 for players where nearly every shot hits.

Part 6: How do I design and balance custom shottypes?

Finally, balancing and designing custom shottypes. There are many ways to do a terrible job. But in the end, a good job is dependent on the game working with the shottypes.

Here's an example of a terrible shottype for general purpose use, where DPS is entirely dependent on aligning the player's position to be that of the boss but flipped across the middle of the playing field. If the entire game were based around this (including enemy movement and danmaku patterns), it could be a fun way to play. But for general purpose? No.

Earlier I mentioned both MarisaB in SA and Sanae in Marine Benefit as examples of the 'Other' category. MarisaB is uniquely versatile but has a very high skill requirement for the player. Yet due to the variety of shottypes, it is even more imperative that the shottypes *all* be balanced. As for Sanae, SanaeB only works because the game was designed specifically so that the player type was viable - by preventing bullets from emerging at high speeds close to the boss without warning, a shottype that requires proximity to the boss can work. And for SanaeC, the speed of the player, enemies, and shots allows it to work.

But how to design a unique shottype? That's a different and more complex topic. Here is one way to approach the problem - given the gimmicks in play, how would you design enemy patterns to make use of those gimmicks? Then, given those patterns and the types of bosses and stages you plan to have, what kind of traits should a player have to make the most of our the gimmicks while allowing the person behind the screen to enjoy the gameplay? And of course, it should be in-character.

In the end, one of the best ways to balance a player is to build them, then modify them over time to fit needs identified in-game. They don't do well against enemies against the edges of the screen? Adjust the power of their spread shots or give them better movement speed. They can't DPS miniboss stage enemies quickly enough but are doing too much damage against bosses? Take a look at their range, as well as how gimmicks play into the player's approach when facing a miniboss versus a boss. Then adjust shots to work together with the gameplay approach and/or adjust the pattern to promote gameplay that makes use of the player's strengths.

Player design and balancing is an art. I hope you have learned some more techniques to work with.


  • Bullet power levels can be shifted in order to provide different power balances between types of shots
  • Subshots and familiars can enable shottypes to perform better by covering their weaknesses
  • Bombs should be reflective of the player
  • ...Is it really even possible to summarize a concept as nebulous as 'design and balancing' into bullet points?

Sources and External Resources