使用HTML和JS的iPhone游戏中的性能问题,以及appMobi



在用Java为Android创建了一些游戏后,我正在用appMobi制作我的第一个游戏。我基本上打算创建一款无尽奔跑者街机游戏,2d,俯视图。

我使用的是带有普通JS和CSS3的appMobi(没有任何其他库,如Impact)。

我首先用画布做了一些测试,并创建了一个非常简单的演示,在这个演示中,你可以用加速度计控制一个球(基本上是用画布渲染的一个圆圈),并需要收集其他球。我用我的Galaxy S2和iPhone 4测试了它,看起来iPhone运行得更好,所以我开始编写一个简单的引擎来使用dom元素。我基本上创建了一个连接到标签的对象,并保存了一个位置向量,还添加了一个draw函数,该函数基本上可以执行以下操作:this.element.style.left=x+'px'(top和y也是如此)。

在我的主循环中,我调用了对象上的draw函数,并根据我的游戏逻辑更新了它们的位置,并使用这个窗口重新调用了mainLoop。requestAnimationFrame包装器:

window.requestAnimFrame = (function(){
       return  window.requestAnimationFrame       || 
              window.webkitRequestAnimationFrame || 
              window.mozRequestAnimationFrame    || 
              window.oRequestAnimationFrame      || 
              window.msRequestAnimationFrame     || 
              function( callback ){
                window.setTimeout(callback, 1000 / 60);
              };
    })();

然后我继续创建一个相机对象来控制屏幕定位,并使用css背景位置属性成功地滚动背景。我已经用我的新Galaxy s3和带有一些图形的s2进行了测试(2个200x200 pngs和背景),一切都以大约60 fps的速度流畅运行。我对结果很满意,在iPhone 4 iOS 4.x上测试真的很兴奋,但令我失望的是,它以2-3 FPS的速度运行!比我的安卓系统慢30倍。我开始做很多更改(目前我使用的是720x1280的视口),所以我尝试使用320*480,使用画布,删除滚动背景,调整图像大小,但都无济于事,而android在所有变体上都表现良好。

我得到的最好成绩是5 FPS。我有另一部iPhone要测试,一部带有iOS5的iPhone 4S,FPS非常不稳定。范围从3-50,但是不可打的-没有机会任何人会玩它,我甚至还没有开始包装它的内容。

我真的很想利用跨平台的优势,如果我放弃苹果市场,那将是一种耻辱,所以任何提示或建议都会受到热烈欢迎!

谢谢,Gabriel

这是我在appMobi论坛上得到的答案,如果有人有这个问题的话:

使用直接画布

无论怎样,JS/CS3在每台设备上都会表现得很糟糕。这个iOS(Safari)中的股票浏览器已启用NitroJS,但在UIWebView。。。但如果你有时间,读一读,你会发现你如果不使用硬件加速,就无法编写JS游戏直接画布。

在这里找到一些示例和链接,开始使用directCanvas:

http://www.appmobi.com/documentation/index.php?DOC=DIRECTCANVAS_SDK

最新更新