HTML5的未来现在已经是充满光芒的了,华丽,无所不能,强大的取代性。CANVAS,WebWorker,WebSocket等等一切预示着一件事情:HTML5游戏开发会是未来。
websoct实现全双工通信,实现即时,WebWorker实现多线程的JS(虽然暂时没有实现同步锁,短期内不能发挥作用),canvas来实现更加华美的页面效果。
听起来似乎万事俱备了,但是仍然有着许多的弊端需要FE们克服,改革更新总是要面对阵痛,所以让我们来探讨一下:关于HTML5游戏开发的劣势。
1.从早期的纯页面游戏开发开始,我们就面临一个问题:鼠标状态。
如你所知,javascript是运行于单线程环境里的(俺是单县城的汉子),在同一时间轴上如果处理太多的UI事件,他就会堵塞(参照三环下班高峰期),但是他不会等你通过的,堵塞的UI线程,最后的结局就是事件丢失。
2.canvas绘画的能力霸气得侧漏一逼,但是= =、他的性能,成为了他最被诟病的一点。fill(),stroke(),clip()都是效率不高的,其中stroke()最甚。然后不得不说的,就是canvas他是丁克家庭,他是木有子节点的(不带这么计划生育的)。你可能会说:“画一起不就得了呗” 但是如你所知,图层不独立,重绘的部分大大增加,这蛋疼不是常人能忍的。
3.接着就是每一个即时游戏的同一难点——“谁偷了我的FPS?”,时间轴的问题也是一个巨大的蛋疼。setInterval?不靠谱撒,如你所知他在状态最好的时候也是10ms的精量级,如果多几个事件还会堵塞,所以他的FPS十分不稳定。
以上的部分就是关于HTML游戏开发杂谈的难点部分,下次我们聊聊他们的解决方案们