首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在保持60FPS的情况下,在游戏中进行几秒钟的计算

在保持60FPS的情况下,在游戏中进行几秒钟的计算
EN

Stack Overflow用户
提问于 2010-07-13 04:04:09
回答 3查看 340关注 0票数 0

我有一个算法,需要几秒钟才能完成。我正在尝试将它实现到我正在创建的一个60fps的flash游戏中。我想知道ActionScript3中是否有一些条款可以中断计算,以便更新帧并在之后继续计算。可能没有,所以我假设最好的方法是执行x毫秒的计算,测量帧速率之后是什么,然后调整下一帧的计算时间,如果帧速率小于或大于60fps。这样做的缺点是游戏不会以稳定的60fps运行。

关于如何(以最佳方式)在AS3中执行大型计算,同时保持帧率,还有其他想法吗?

编辑:对于好奇的人(计算,也许我应该说是算法):我正在为游戏AI对象创建一个运动规划库(一个用于运动规划)。该算法沿着RRT (快速探索随机树)的路线迭代数千次。

演示链接:http://www.swfcabin.com/open/1279044355

单击以进行运动计划。这个圆可以在任何方向上以固定的大小“推动”。

此外-没有线性速度阻尼(即摩擦)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-13 04:53:04

你能不能分阶段进行“计算”,然后每帧只做一个阶段,直到完成?将它分成几块,你知道这些块可以放入一个框架中,然后随着时间的推移来做。

下面是几个例子:

我做过的一个游戏是计算实体之间的视线。这花了很长时间,而且硬件不是很强大,所以我们每帧只更新一个物体的视线。玩家的视线每隔一帧更新一次,而敌人在中间的帧中轮流更新。

相反,如果您是基于大型数据集计算某些内容,请将数据划分为较小的块,并在每帧中只计算一个块。例如,如果你需要计算出离你的飞船最近的恒星,并且有一百万颗恒星,那么每帧可能只需要一千颗。

也许你的计算并不容易映射到这两者中的任何一个;如果你有一个你试图实现的例子,它将会非常有帮助!

票数 2
EN

Stack Overflow用户

发布于 2010-07-13 21:40:58

根据您的计算类型,您可以编写一个Pixel Bender内核,它使用ShaderJob在后台执行处理:

http://www.boostworthy.com/blog/?p=243

http://www.huesforalice.com/project/47

或者,这里有另一个链接,指向如何在Actionscript中实现伪线程的教程:http://blogs.adobe.com/aharui/2008/01/threads_in_actionscript_3.html

票数 2
EN

Stack Overflow用户

发布于 2014-03-19 23:00:58

更新: flash player从11.4开始支持workers

后台工作者允许在后台执行任务,而不会阻塞主工作者,这似乎非常适合您的需求。作为一个很好的奖励,在多核cpu上,后台工作进程将能够并行运行,而不会减慢主工作进程

不过,AIR mobile暂时不支持iOs上的工作人员(AIR 4.0和AIR 13 beta)。

另外,正如其他人已经说过的,路径查找不应该太长!您应该考虑使用其他算法,因为Rapid听起来与需要几秒钟才能完成的算法不兼容。最著名的路径查找算法是A star (A*)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3231820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档