全部资源
  • 全部资源
  • - 交通工具
  • - 动物昆虫
  • - 场景模型
  • - 建筑模型
  • - 植物模型
  • - 武器模型
  • - 独家资源库
  • - 科幻模型
  • - 角色动画库
  • - 角色模型
  • 知识干货

学习Unity引擎下的RTS游戏如何同时在屏幕上展示数千个实体

Cataclismo的故事与玩法机制

我们进行了一次头脑风暴,旨在构思新的项目想法。创意/设计总监维森特为游戏提出了一个概念,内容是关于建造城堡并防御一波波试图摧毁它们的敌人。他和工作室内的许多人都曾玩过乐高积木,并被其在游戏中如果能够赋予玩家自由无尽的设计选择所吸引。团队还对《They Are Billions》和《战锤》系列的元素充满热情,在验证这一构想后,我们决定开始进行该项目的开发。

学习Unity引擎下的RTS游戏如何同时在屏幕上展示数千个实体次世代模型库

学习Unity引擎下的RTS游戏如何同时在屏幕上展示数千个实体次世代模型库

选择Unity引擎

团队在多年开发Moonlighter的过程中积累了丰富的Unity引擎使用经验。因此,我们对于采用Unity来开展新项目感到自信且舒适。当我们意识到许多可能遇到的性能瓶颈可以通过使用ECS/DOTS得到解决时,我们的选择就变得明确起来。

在即时战略游戏中,经常会有大量动作同时发生。处理来自瞄准系统的大量计算(例如单位之间的相对位置、攻击范围、寻路等)、频繁创建/删除游戏对象以及场景中的垂直性布局都颇具挑战性。在游戏中某一时刻,可能会有超过50个玩家控制的士兵/单位面对1000个敌方怪物,同时还有玩家用来构建塔楼和城墙的无数块砖块。这就是DOTS/Jobs对我们来说成为转折点的地方。我们有一个Unity展示案例,详细介绍了这些技术,有兴趣的读者可以深入了解。

 

优化策略

为了确保屏幕上能够显示尽可能多的敌人和物品,同时保持流畅、响应灵敏的游戏体验,我们充分利用了所有可用工具。建筑物和物品基于Unity的gameObject/component系统构建,提供了灵活度和迭代的便利性。每个实体的功能被分解成多个组件,由一个“主”类进行控制。

对于单位和敌人,我们在navmesh功能一推出便立即应用,并根据需求调整了代理设置,从而增强了对寻路请求何时何地解决的控制能力。我们针对navmesh进行了调优,确保只有在修改时才重新计算受影响的部分。此外,我们还利用Unity Jobs系统实现了自定义版本的流场算法。所有这些改进使得我们能够在不大幅降低性能的情况下实现游戏中恐怖群集般的群体行为。

学习Unity引擎下的RTS游戏如何同时在屏幕上展示数千个实体次世代模型库

我们还使用DOTS构建了一个定制的目标处理系统。该系统涵盖了实体(友军或敌军)决定攻击目标的逻辑,以及防止单位聚集或互相阻挡的逻辑。简而言之,我们的实现方式能在短时间内完成游戏中实体所需路径规划和仇恨计算的运算。

我们依赖于GPU实例化和draw mesh间接调用来尽可能减少渲染调用次数。同时,我们还在GPU上使用烘焙动画(预先计算并存储在纹理中),以便在任何时候都能让大量实体出现在屏幕上。

学习Unity引擎下的RTS游戏如何同时在屏幕上展示数千个实体次世代模型库

未来计划

Cataclismo的开发已接近尾声,目前的重点在于打磨和完善,确保游戏平衡(对于一款RTS游戏来说说起来容易做起来难!)。游戏正式发布时将包含完整的战役模式,跟随Iris的故事探索迷雾背后的秘密;遭遇战模式,由开发者精心设计的一系列关卡,旨在给 Hogar 的老练建设者们带来终极挑战;生存模式,通过设计并防守一座能抵挡无尽难度递增的敌群围攻的堡垒,考验你的知识与技巧。我们预计将在2024年第二季度发布完整游戏。

学习Unity引擎下的RTS游戏如何同时在屏幕上展示数千个实体次世代模型库

结论

我们热衷于那些拥有积极参与社区的游戏。我们认为提供玩家设计和分享关卡的工具将带来更丰富多元的游戏体验。我们计划通过Steam工坊整合提供模组支持,允许玩家自定义游戏内容、分享自己的作品并与他人竞赛。

标签

评论