如果序列化,这会在磁盘上占用巨大的空间…
在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轻型升级
- 资源收集
- 运行期间建造
核心循环很简单:
- 杀死敌人
- 收集资源
- 升级武器/建造/玩家
- 变得极度过载
- 生存更久
难点是可读性。在混战的顶峰,屏幕上包含:
- 数百个敌人
- 火箭
- 炮塔
- 爆炸
- 资源捡起来处处都是
但玩家仍需要立即理解:
- 危险在哪里
- 奖励在哪里
- 他们的建造是什么变成的
平衡混乱和清晰度成为核心设计问题。
4. 宫殿设计 - 形状优先,图形后面
一个巨大的工作流程变化是如何建造关卡。我停止了以艺术为起点。相反,我以纯粹的游戏形状开始。
过程变成:
- 创建战斗空间
- 测试运动流
- 测试敌人压力
- 然后添加视觉效果
早期的迷宫基本上是抽象的灰盒。核心房间模式是:
- 长方形房间
- C形
- T形交叉
- 岛屿布局(中间被阻塞的区域)
- 城堡布局(四个更大的房间通过走廊连接)
每种形状都创造不同的游戏行为。例如:
- 长方形创建开放的追逐
- C形创建狭窄和埋伏
- T形强制方向选择
- 岛屿创建循环运动
- 城堡布局创建多方向压力
最初的房间看起来很糟糕。只是立方体和地板。但是,如果在灰盒形式中战斗是有趣的,那么几乎总是会在添加视觉效果后保持有趣。 一旦游戏玩法工作,我就添加了:
- 墙壁
- 道具
- 灯光
- 破坏
- 环境细节
重要的是:艺术支持游戏形状,而不是反之。 这有助于在巨大的战斗时刻保留可读性。 大部分这个游戏是在我卧室中开发的,最近几个月我都在患病。现在我基本上恢复了,继续管理它。 20年后重新发布盒头游戏感觉像梦一样。 我真的很想从其他Unity开发者那里获得反馈,特别是那些在WebGL或试图优化大规模游戏系统的人。
评论 (0)