背景: 我是一名高中计算机科学老师,我想提出一个有趣的/有趣的作业来测试学生的编程知识。我几乎没有使用SpriteKit编写iOS游戏的经验,但是我认为这是在竞争环境中整合许多课程概念的一种有趣方式。
游戏: 每个学生都将在一场正面交锋中互相比赛,他们将为一艘太空船的人工智能编程,该人工智能可以向敌人移动并发射导弹。每个玩家都以20分开始,每当他们被导弹击中时,其总积便减少1,直到玩家击中零并且游戏结束。每个玩家仅获得10枚导弹,因此必须明智地使用它们。如果导弹超出视线范围或击中了另一对手,它们就会补充。
问题: 我已经连续数年完成这项工作,每年只做很小的改动。但是,今年在测试期间,一旦游戏开始,游戏速度将下降至9fps。显然,这会浪费很多游戏的乐趣,并且由于滞后而使调试变得痛苦。
代码结构
节点 只有几个SKLabelNodes用于显示玩家名称和得分。 飞船既是节点,又各自包含10枚导弹的阵列,这些导弹也是节点。宇宙飞船和导弹都有其各自的类别,它们定义了它们的属性和行为。 还使用了背景图像。 总共只有24个对象被添加到GameScene中,并且永远不会改变。
课程
当我在个人MacBook Pro上构建和测试游戏时,游戏将按预期运行(没有滞后)。但是,每个学生都在使用以下规格的Mac上工作:
在我看来,即使计算机变老了,它们仍然应该能够处理只有20多个节点的游戏。
更改模拟器是否会有所作为(例如,iPad Pro 12.9英寸的第三代到第六代iPad)?
感谢您为解决此滞后问题而提供的任何帮助。 谢谢。
如果您有兴趣查看代码以及各类之间的交互方式,请点击这里。 The GAME 它不是最新版本,但与学生当前使用的版本极为相似。
答案 0 :(得分:1)
首先在设备上运行游戏以缩小问题范围,并确保问题出在模拟器上。
在其中一台iMac上使用乐器来配置您的游戏。这样一来,您就可以了解导致帧速率如此之低的原因。
在Xcode中选择产品>配置文件以在Instruments中配置项目。从模板列表中选择“ Time Profiler”工具。以下文章显示了如何使用Time Profiler工具:
Finding the Slow Spots in Your Code with the Time Profiler Instrument
由于学生必须在Mac上测试游戏,因此可以选择制作Mac版本的游戏。在Mac上,本机运行的游戏要比iOS Simulator更好。 SpriteKit代码在Mac和iOS上都是相同的。主要区别是在Mac上处理鼠标事件,而不是在iOS上处理触摸事件。 Xcode具有跨平台的游戏项目模板,可让您制作可在Mac和iOS上运行的游戏。