返回介绍

移动优化实用指南 – 脚本和游戏设置方法

发布于 2021-06-19 18:03:23 字数 2589 浏览 901 评论 0 收藏 0

本节将演示移动开发人员写入代码并构造游戏,以便让游戏运行更快的方法。本节的核心理念是游戏设计和优化实际上并不是分离的过程;您在设计游戏时做出的决定可以让游戏乐趣十足且运行流畅。

一个历史性的示例

您可能还记得一些老游戏,在这些游戏中,玩家每次只能在屏幕上射击一次,并且装弹速度取决于子弹是否打偏,而不是计时器。这种技术被称之为对象池 (object pooling),它简化了内存管理,让程序运行更加流畅。

太空入侵者的创作者仅拥有非常少量的 RAM,他们必须确保程序无需分配超过可用的 RAM。如果他们让玩家每秒钟射击一次,并且提供 可以将装弹时间减少至半秒钟的动力恢复,那么在玩家尽快射击,并且所有射击都保持尽可能长的有效时间的情况下,就必须确保有足够的内存空间来分配大量爆弹。这可能给他们新的问题,因此,他们仅分配了一颗爆弹,仅此而已。如果爆弹爆炸,它只会变得无效,并在再次射击时复位并激活。但是,它始终在内存中位于同样的空间,而不会到处移动或不断地删除和重建。

优化,或是最佳游戏设置?

这很不现实,但却非常有趣。当外星入侵者接近地面的高潮时刻,压力会不断释放,就像电影或文学作品的高潮部分。入侵者的贴近给熟练的玩家接近瞬时的装弹速度,允许玩家力挽狂澜,通过在完美的时机扣动射击键,保卫地球。交互式叙事方式以及提供 动力的背景技术之间的奇幻空间采用了精良的游戏设置。事实上,要规划这样精良、有效且富有乐趣的游戏并非易事,因为代码逻辑和玩家交互是两个截然不同且异常苛刻的方面,同时使用这两者合成新鲜有趣的游戏需要多方面考虑和反复试验。

您可能难以考虑到游戏的所有方面,同时规划游戏的交互并很好地利用移动硬件。这些双方和谐共处的“最佳设置”更有可能在您实验期间像一场事故一样突然出现。但是,深刻理解代码在您想要部署的硬件上的运行方式,将带来很大的帮助。如果想要了解详细的技术说明,证明技术池是更好的选择的,并了解更多内存分配的信息,请参阅脚本优化页面。

X 在移动设备上是否运行更快?

假设您正开始构建一个游戏,并且想通过大量的动作和闪亮的物体让玩家眼前一亮,应该如何进行规划?如何了解哪些地方存在限制,用游戏术语说,就是要多少金币,多少僵尸,多少对手车辆?这都取决于您如何为游戏编写代码。

一般而言,如果使用简单的方式或最为普遍或通用的方式编写游戏代码,您将更快遇到性能问题。越是依赖某种特定结构和技巧来运行游戏,就可以更好地扩宽视野,也可以在屏幕上呈现更多物体。

简单通用,但运行缓慢

  • 在二维游戏中,刚体限制为 2 维。
  • 爆弹刚体。
  • 经常使用“实例化并摧毁 (Instantiate and Destroy)”。
  • 大量单独的三维对象用于收藏或角色。
  • 每一帧执行计算。
  • OnGUI 用于 GUI 或 HUD。

复杂且受限,但运行更快

  • 为二维游戏编写自己的物理代码。
  • 自行处理爆弹碰撞检测。
  • 使用“对象池 (Object Pooling)”而不是“实例化并摧毁 (Instantiate and Destroy)”。
  • 粒子使用动画子画面代表简单的对象。
  • 每隔几帧执行昂贵的计算,并缓存结果。
  • 自定义 GUI 解决方案。

示例

同时在屏幕上呈现数百旋转、动态光照、金币收集。

  • 不可以:每个金币都是一个附有刚体和脚本的独立对象,以旋转并允许拾起金币。
  • 可以:金币是带动画纹理的粒子系统,一个脚本对所有金币进行碰撞检测,并按照它们与光源的距离设置颜色。

您的定制软体模拟

  • 不可以:这是一个枕头的世界,您可以到处乱扔并将其堆在一起。
  • 可以:您的角色就是一个枕头,且只是其中一个,它所处的环境在某种程度上是可以预测的(它仅仅与球体和轴对齐立方体碰撞)。对于功能并非全面,但是外观精致运行快速的软体模拟,可以为其编写代码。

30 个敌人角色同时向玩家射击

  • 不可以:每个敌人都有自己的蒙皮网格,拥有独立对象的武器,并在每次射击时实例化基于刚体的爆弹。在每帧运行的复杂的 AI 脚本中,每个敌人都考虑到其他同伴所处的状态。
  • 可以:大部分敌人距离很远,并且由单个子画面作为代表;或者,敌人是二维角色且不管如何只有一对子画面。每颗敌人的子弹都由同样的粒子系统绘制,并由只由处理基础物理的脚本模拟。每个敌人都按照该区域内其他敌人的状态,每秒更新两次 AI 状态。

脚本优化的方式和原因

请参阅脚本优化

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文