如果序列化,这会在磁盘上占用巨大的空间…

在Unity中构建盒头迷宫

20年前,我离开了电子艺术,开始独立制作游戏。后来,这导致盒头在Flash门户网站、移动设备和网络上被播放了数十亿次。现在,我正在发布下一个章节:

https://seantcooper.itch.io/boxhead-dungeons

我想分享一下在Unity中为WebGL构建它的开发挑战。

1. WebGL开发 - 内存和优化

在Web上构建大型动作游戏是非常困难的。所有的东西都在反对你:

  • 浏览器内存限制
  • Unity序列化膨胀
  • 下载大小
  • GC峰值
  • 着色器复杂性
  • AI缩放
  • 纹理内存
  • CPU峰值在混乱时

最大的挑战是:如何让游戏感觉像爆炸一样,同时保持内存使用量小?

最终,我重写或简化了大量系统:

  • 极端池化
  • 轻量级AI
  • 运行时大图集
  • 简化着色器
  • 减少分配
  • 大量清理Addressables/依赖项

我惊讶的是,优化实际上改善了游戏设计。约束迫使:

  • 更干净的视觉效果
  • 更快的可读性
  • 更简单的游戏循环
  • 更好的战斗清晰度

2. 流体运动 - 使混乱感觉平滑

运动是最难的部分之一。我想要:

  • 双杆射击响应性
  • 巨大的敌人群
  • 平滑碰撞流
  • 快速躲避
  • 紧密的迷宫空间
  • AI导航而不引起混乱

最终,我大量使用Unity NavMesh系统以便它们可能没有设计的方式。玩家运动融合了:

  • 直接输入
  • NavMesh投影
  • Crowd推动
  • 持续碰撞流
  • 动态避免

大部分的工作都是不可见的。玩家只会注意到运动当它感觉不对劲时。 我花了几个月的时间调整:

  • 敌人密度
  • 楼梯/斜坡处理
  • 角落运动
  • Crowd流动
  • 炮塔放置
  • 碰撞压力
  • 路径平滑

目标是:最大化混乱,减少摩擦。

3. 设计 - 一些旧的但新的东西

不太忙

我不想重做旧的盒头。目标是:保持动作射击的即时性,但在下面层叠现代进展系统。结果是一个混合:

  • 双杆射击
  • 霸王征服
  • 洛尔格进展
  • RPG轻型升级
  • 资源收集
  • 运行期间建造

核心循环很简单:

  1. 杀死敌人
  2. 收集资源
  3. 升级武器/建造/玩家
  4. 变得极度过载
  5. 生存更久

难点是可读性。在混战的顶峰,屏幕上包含:

  • 数百个敌人
  • 火箭
  • 炮塔
  • 爆炸
  • 资源捡起来处处都是

但玩家仍需要立即理解:

  • 危险在哪里
  • 奖励在哪里
  • 他们的建造是什么变成的

平衡混乱和清晰度成为核心设计问题。

4. 宫殿设计 - 形状优先,图形后面

一个巨大的工作流程变化是如何建造关卡。我停止了以艺术为起点。相反,我以纯粹的游戏形状开始。

过程变成:

  1. 创建战斗空间
  2. 测试运动流
  3. 测试敌人压力
  4. 然后添加视觉效果

早期的迷宫基本上是抽象的灰盒。核心房间模式是:

  • 长方形房间
  • C形
  • T形交叉
  • 岛屿布局(中间被阻塞的区域)
  • 城堡布局(四个更大的房间通过走廊连接)

每种形状都创造不同的游戏行为。例如:

  • 长方形创建开放的追逐
  • C形创建狭窄和埋伏
  • T形强制方向选择
  • 岛屿创建循环运动
  • 城堡布局创建多方向压力

最初的房间看起来很糟糕。只是立方体和地板。但是,如果在灰盒形式中战斗是有趣的,那么几乎总是会在添加视觉效果后保持有趣。 一旦游戏玩法工作,我就添加了:

  • 墙壁
  • 道具
  • 灯光
  • 破坏
  • 环境细节

重要的是:艺术支持游戏形状,而不是反之。 这有助于在巨大的战斗时刻保留可读性。 大部分这个游戏是在我卧室中开发的,最近几个月我都在患病。现在我基本上恢复了,继续管理它。 20年后重新发布盒头游戏感觉像梦一样。 我真的很想从其他Unity开发者那里获得反馈,特别是那些在WebGL或试图优化大规模游戏系统的人。