gpt4 book ai didi

ios - Spritekit游戏在iPad模拟器上出现严重滞后

转载 作者:行者123 更新时间:2023-11-28 13:46:36 25 4
gpt4 key购买 nike

背景:
我是一名高中计算机科学教师,我想拿出一份有趣的作业来测试我学生的编程知识。我很少有用SpriteKit编写iOS游戏的经验,但我认为在竞争环境中集成许多课程概念是一种有趣的方式。
游戏:
每个学生将在一场正面交锋中互相扮演,他们将被要求对一艘太空船的人工智能进行编程,该飞船可以向他们的敌人移动和发射导弹。每个玩家从20分开始,每次被导弹击中,他们的总数减少1分,直到玩家击中0分,游戏结束。每个玩家只能得到10枚导弹,所以他们必须明智地使用它们。如果导弹超出视界或击中另一个对手,它们就会补充。
问题是:
我已经连续几年做这项工作了,每年都只做些小改动。然而,今年在测试期间,一旦游戏开始,游戏的帧速率就会下降到9fps左右。显然,这会带走游戏的大部分乐趣,并且由于延迟而使调试变得很痛苦。
代码结构
节点
只有几个SKLabelNodes用来显示玩家的名字和分数。
太空船都是节点,每一个节点都包含一个由10枚导弹组成的阵列,这些导弹也是节点。宇宙飞船和导弹都有各自的类别来定义它们的特性和行为。
还使用了背景图像。
总共,只有24个对象被添加到游戏场景中,这一点永远不会改变。
班级
初始视图控制器(PlayerPickerViewController)-这允许用户选择谁是玩家1和玩家2。然后它选择要使用的(学生)类的名称以及他们的宇宙飞船的图像。
每个宇宙飞船都有一个静态对象的结构,这样就可以在不同的类中访问它们。
游戏的视图控制器(Game View Controller)-这将获取游戏场景并使其显示在此视图控制器中
游戏场景(gamescope)-处理游戏的所有初始设置,包括创建变量和向视图添加节点。
宇宙飞船和导弹类-这些类处理定义宇宙飞船和导弹行为(即运动、射击、大小等)的方法和属性。学生不得修改此代码,以便在相同的游戏条件下工作。
学生班(“他们的姓”。swift)在这个班里,学生必须编写两个函数(一个用于player1,一个用于player2)。这是学生定义移动和射击策略的地方。每一帧,都会调用相应的函数来移动播放器。
当玩家在PlayerPickerViewController中被选中时,游戏会理解每个帧需要调用哪个学生类(基于他们的名称和名称完全相同的类的名称)。
当我在我的个人MacBookPro上构建和测试游戏时,游戏会按预期运行(没有延迟)。但是,每个学生都在使用以下规格的Mac:
iMac(21.5英寸,2013年末)
处理器2.9GHz英特尔酷睿i5
内存8 GB 1600 MHz DDR3
图形NVIDIA GeForce GT 750M 1024 MB
在我看来,尽管计算机已经老了一点,但它们仍然能够处理这个只有20多个节点的简单游戏。
改变模拟器会有什么不同吗(即iPad Pro 12.9英寸第三代到第六代iPad)?
我很感激你能帮我解决这个滞后问题。
谢谢您。
如果您对代码和类之间的交互方式感兴趣,这里有一个游戏的链接。The GAME
这不是最新的版本,但它与学生目前使用的非常相似。

最佳答案

从在设备上运行游戏开始,缩小问题的范围,并确保问题与模拟器有关。
使用其中一个imac上的乐器来分析您的游戏。这会让你看到是什么导致帧速率如此之低。
在Xcode中选择Product>Profile以在Instruments中分析项目。从模板列表中选择时间分析器工具。以下文章介绍如何使用时间剖面仪:
Finding the Slow Spots in Your Code with the Time Profiler Instrument
因为你的学生必须在他们的Mac上测试游戏,另一种选择是制作Mac版本的游戏。与iOS模拟器相比,这款游戏在Mac上运行起来会更好。在Mac和iOS上,SpriteKit代码是相同的。主要区别在于在Mac上处理鼠标事件,而不是在iOS上处理触摸事件。Xcode有一个跨平台的游戏项目模板,可以让你制作一个同时在Mac和iOS上运行的游戏。

关于ios - Spritekit游戏在iPad模拟器上出现严重滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55325101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com