如果canvas用来做游戏。。。

最近一直在学习html5 Canvas,而且网上已经有很多成熟的使用canvas写的游戏,比如宝石迷阵与割绳子,他们都是本来在手机与PC上就比较火的游戏,而在线的html5版也已经和客户端版的体验几乎没有差距,包括声音,图像,以及流畅性。

但我却担心canvas的某些问题,会给他的应用带来一些麻烦,特别是游戏方面。

一个完整的游戏,通常包括音频,图片以及代码,游戏越复杂,则这些素材的数量越多。我曾经尝试下载过html5版宝石迷阵的源码,虽然最终没有成功(也没指望会成功),但让我对他里面的文件数量倒是有了个初步认识。

其中大量的图片就不说了,而且有几个体积不小的主代码文件,都是JS文件,且都在几百KB上下。那个Bejeweled_min.js,别看是个min,但体积却有700KB…

由此看来,开发游戏始终是个不容易的过程。

说到这里我又要提flash了,因为flash几乎一直是开发小游戏的不二之选,所以我列举一些canvas开发游戏与flash的不同。

1,文件的碎片化

相同的一个游戏,分别用flash与html5来开发,那最终我们这些玩家可能会得到两个东西,要么是一个.swf的单文件,要么是一个包含所有游戏文件的文件夹,后者就是html5版的。

如果放到网站上去给玩家玩,那么flash玩家最终会下载一个文件——即前面的swf;而html5玩家则只能无奈的下载一个个单独小文件,如图片,各种音效,代码等。

这就是html5开发游戏的首要弊端,就是文件的碎片化。

这种情况使得游戏资源很容易被盗用,但更重要的是,文件的碎片化导致整个游戏很难下载成功——比如我们在大陆访问那个宝石迷阵,会觉得载入挺慢的,虽然网速原因占了大半,但太多的文件发起的太多的http请求也是一个方面。

只要有一个文件没有下载成功,那么整个游戏就算下载失败了,要么重新下载该文件,要么玩一个有莫名bug的游戏。

2,文件的无加密无压缩

一个swf文件,可以包含代码,图片,声音,而所有的这些都包含在一个文件中,既可以防止盗用的可能,又通过压缩减小了整个游戏的体积。

而一个html5游戏,除了代码可以使用某些工具压缩一下之外,所有的图片,音频,都不能进行压缩——除非你通过牺牲品质来达到减小体积的目的。

这也导致玩家下载了更多的东西,却得到了一个相同的游戏。

3,功能的缺失

canvas只能实现图形的呈现,而其他方面如音频——鼠标指到某处就播放特定的音频——canvas则没法过问,只有通过js将canvas与音频进行相应的关联。

说到音频,又回到“文件一多导致很容易加载失败”这个问题上来了,宝石迷阵里面的音频貌似比图片数量还多。

----------------------------------------------------

设想将来,要是能把所有的文件打成一个包(类似ZIP),然后通过JS代码直接从包里面读取需要的文件,那该多好啊,那样在载入的时候就只需要下载这整个包即可,而不用下载一堆零散的文件了。

3 评论

发表评论

电子邮件地址不会被公开。