Randomness in Shmup Game Design — Part 5 of 8
Randomness in Enemy Design — Spawning, Behavior, and Fair Surprises
The last four posts were mostly about the player side of the equation: your weapon system, your skill stack, what you are asking players to practice. Today I want to flip it around and talk about the enemy side.
How you design enemy behavior and spawning patterns involves the same tension — but the failure modes are different, and the solutions are different too.
## The Core Question Is Still the Same
The question for enemy randomness is identical to the one for player systems: what are you asking the player to learn?
In a classic shmup, the answer is: the stage. Players learn where enemies come from, in what order, with what patterns. That knowledge is the game. It is why playing a stage ten times feels different from playing it once. You are not just getting luckier. You are getting smarter about a specific, repeatable system.
If you randomize enemy spawning heavily — different enemies from different positions on different runs — you are changing the fundamental offer the game is making. Now you are offering adaptability rather than mastery. That is a different game. Not necessarily a worse game, but a *different* one.
The problem comes when designers want mastery *and* heavy randomness. They usually cannot have both.
## The Types of Enemy Randomness
Like player-side randomness, enemy randomness lives on a spectrum:
**Spawn order randomness.** Different enemy groups appear in different sequences. High-level variance. This is the roguelite approach — runs feel different because the macro structure differs. Works well if you lean into it fully and design enemies to be understood quickly rather than memorized deeply.
**Formation randomness.** Enemies arrive in varying arrangements within a wave. Moderate variance. Can work, but you are making pattern recognition harder. Players may not know if they are seeing a fixed pattern with complexity or a random one.
**Behavioral micro-variance.** Fixed enemies with slight timing offsets, minor position jitter, subtle firing angle spread. Low-level variance. This is the GunVein approach applied to enemies — and it works exactly the same way. The macro behavior is learnable; the micro forces active reading.
**Pure randomness.** Enemies fire in genuinely unpredictable directions with no consistent pattern. This is almost always a mistake in a skill-mastery game. Players cannot learn it, they can only react to it. You are testing reflexes, not pattern intelligence.
## What Makes Enemy Randomness Feel Fair vs. Cheap
Here is the practical test I use: can a skilled player predict approximately what this enemy is going to do?
If yes — even approximately — the randomness is probably in a healthy range. The player still has agency. They are reading the enemy and making decisions based on that read. If their read is wrong sometimes, that is the texture at Layer 4 we talked about earlier. It rewards staying present.
If no — if the enemy could genuinely do anything and there is no predictive signal — you are asking players to be lucky rather than good. That is the boundary of unfair.
The other piece is telegraphing. Enemies that have consistent *tells* before doing something can have random *outcomes* and still feel fair. The tell gives the player an entry point. They can learn "when I see this, something is coming" even if the exact thing varies. That is a reasonable trade.
## The IS2 Approach
Interstellar Sentinel 2 uses fixed enemy formations as the foundation. The stage structure is scripted. Players who put time in can learn it deeply.
What I am experimenting with is behavioral micro-variance on specific enemy types — particularly the ones that players will see most. Similar to the GunVein technique: the enemy does what you expect, except sometimes a bullet comes from a slightly different angle or fires half a beat later. You cannot fully autopilot against them.
What I am deliberately avoiding is spawn order randomness in the core experience. IS2 is a skill-mastery game. I want players to be able to learn the stage. Roguelite variance would work against that.
The one place I am considering more structural randomness is in bonus/challenge rooms that sit outside the critical path — places where the game signals clearly that the rules are different. Opt-in mastery vs. opt-in chaos. Both available, clearly labeled.
---
*Previous: Post 4 — The Skill Expression Stack: What Players Are Actually Learning in Your Game*
*Next in series: Post 6 — The Roguelite Question: Can Shmups Benefit from Run Variance?*