敌人波次系统设计:从 1 到 N 的难度曲线
> 波次系统是射击游戏的"心脏"——它决定了玩家什么时候觉得"难",什么时候觉得"爽"。
## 当前状态:占位符
在 NEON RUNNER 2077 的当前版本里,敌人波次还没有真正实现。`GameScene` 里的 `wave` 变量只是个计数器:
```ts
private wave = 1;
```
`HUD` 里显示 `WAVE 01`,但波次不会变化。波次系统的设计意图可以从代码结构推断出来。
## 波次系统的核心问题
一个好的波次系统要回答三个问题:
1. **什么时候生成敌人?**(触发条件)
2. **生成多少敌人?**(数量)
3. **敌人有什么变化?**(难度)
## 设计方向:基于时间的波次推进
在霓虹射击游戏里,波次推进通常有两种模式:
### 模式一:基于时间(Time-based)
每 X 秒推进一个波次:
```ts
// 伪代码:基于时间的波次推进
this.time.addEvent({
delay: 30000, // 每 30 秒推进一个波次
loop: true,
callback: () => {
this.wave++;
this.hud.setWave(this.wave);
this.spawnEnemyWave(this.wave);
},
});
```
优点:简单,可预测。
缺点:玩家可能觉得"时间到了就该难",而不是"我准备好就该难"。
### 模式二:基于分数(Score-based)
玩家达到一定分数后推进波次:
```ts
// 伪代码:基于分数的波次推进
checkWaveProgress(): void {
const nextWaveThreshold = this.wave * 1000;
if (this.score >= nextWaveThreshold) {
this.wave++;
this.hud.setWave(this.wave);
this.spawnEnemyWave(this.wave);
}
}
```
优点:玩家觉得"是我自己变强了,所以变难了"。
缺点:如果玩家分数涨得太慢,波次会"卡住"。
### 模式三:混合模式(推荐)
基于时间,但允许玩家提前推进:
```ts
// 伪代码:混合模式
this.time.addEvent({
delay: 30000,
loop: true,
callback: () => {
if (this.score >= this.wave * 800) {
this.wave++;
this.hud.setWave(this.wave);
this.spawnEnemyWave(this.wave);
}
},
});
```
## 敌人生成:从 PreloadScene 的纹理到 GameScene 的实例
`PreloadScene` 里已经生成了 `'enemy'` 纹理(红色圆环 + 紫色描边 + 白色中心点)。在 `GameScene` 里,敌人实例应该是这样的:
```ts
// 伪代码:生成敌人
spawnEnemyWave(wave: number): void {
const count = 3 + wave * 2; // 波次越高,敌人越多
for (let i = 0; i < count; i++) {
const enemy = this.physics.add.sprite(
Phaser.Math.Between(40, 1240),
Phaser.Math.Between(90, 590),
'enemy'
);
enemy.setVelocity(
Phaser.Math.Between(-100, 100),
Phaser.Math.Between(-100, 100)
);
this.enemies.push(enemy);
}
}
```
## 敌人行为:追踪 vs 随机移动
敌人的行为模式决定了游戏的"手感":
### 追踪型(Chaser)
敌人追踪玩家位置:
```ts
// 伪代码:追踪型敌人
this.physics.moveToObject(enemy, this.player, 80);
```
优点:紧张刺激,玩家必须不断移动。
缺点:对新手不友好——如果玩家不会移动,会被"追死"。
### 随机移动型(Wanderer)
敌人随机改变方向:
```ts
// 伪代码:随机移动型敌人
this.time.addEvent({
delay: 2000,
loop: true,
callback: () => {
enemy.setVelocity(
Phaser.Math.Between(-100, 100),
Phaser.Math.Between(-100, 100)
);
},
});
```
优点:可预测,玩家有时间反应。
缺点:如果敌人太多,画面会"乱"。
### 混合型(推荐)
波次 1-3:随机移动(让玩家熟悉操作)
波次 4-6:追踪型(增加难度)
波次 7+:混合型(随机 + 追踪混合)
## 难度曲线:从 1 到 10
一个好的波次系统应该有**平滑的难度曲线**:
| 波次 | 敌人数量 | 敌人速度 | 敌人类型 |
|---|---|---|---|
| 1 | 3 | 50 | 随机移动 |
| 2 | 5 | 60 | 随机移动 |
| 3 | 7 | 70 | 随机移动 |
| 4 | 9 | 80 | 追踪型 |
| 5 | 11 | 90 | 追踪型 |
| 6 | 13 | 100 | 追踪型 |
| 7 | 15 | 110 | 混合型 |
| 8 | 17 | 120 | 混合型 |
| 9 | 19 | 130 | 混合型 |
| 10 | 21 | 140 | 混合型 |
这个曲线是**指数增长**——每波敌人数量 +2,速度 +10。到第 10 波,玩家面对 21 个敌人,速度是第 1 波的 2.8 倍。
## 下一章预告
敌人波次讲完了,但 NEON RUNNER 2077 的战斗循环里还有一个关键系统——**子弹系统**。玩家怎么射击?子弹怎么飞行?碰撞怎么检测?下一章我会拆解这个设计。
> 波次系统的核心原则:**难度要递增,但不要递增得太快**。玩家需要"成长感"——觉得自己变强了,而不是被游戏"虐"了。
- 点赞
- 收藏
- 关注作者
评论(0)