有很多游戏采用H5技术开发,比如三国来了、巴哈姆特之怒、切绳子等。我们公司也有多款游戏用H5开发,H5开发成本低,效率高,方便做自动更新,可移植性好。受益于H5技术,我们公司的很多产品都很方便跨平台。
早在2012年,我就很荣幸负责技术攻关,把我们的游戏移植到win8和wp8平台,当时在国内的win8和wp8平台是领先的。我们的一款游戏,跨ios、android、win8、wp8和黑莓10五大移动平台,这在国内肯定是唯一的吧?
《Infinity Lands》喜获黑莓优秀大奖
也得益于在win8和wp8平台发展的早期上线数款游戏,帮助微软丰富了win8&wp8商店产品。我们和微软建立了深厚的合作关系,成为微软在大陆的重要合作伙伴,前几天又喜获微软Xbox Live大陆首家发行权。嗯哼,公司的win8和wp8产品是我负责开发的呢^_^
本来这篇文章应该多谈谈开发技术,但是两年前我开发完,已经没有平台需要拓展了。我又转去先后做cocos2d-x和Unity3D开发。很多实现上的细节已经遗忘了,谈几点能想到的吧:PhoneGap、加密、更新。
PhoneGap:很多团队做H5移动游戏使用PhoneGap,我不建议。因为这个库很大,太繁杂了,而我们只需要用到不多的功能。所以,我建议不要使用PhoneGap,根据自己项目的需要,自己实现一个就可以了。ps. 注意多线程安全。
加密:H5的js、css和html都是可以直接看到的,所以,为了安全一定要做加密。推荐DES加密,自己写一个打包工具,把所有js、css和html加密。
更新:用H5做更新真是方便,完爆cocos2d和Unity3D。cocos2d的jsb也可以更新,但是如果c++库有问题,就没法更新了;而使用h5,我们可以做到只上传一次版本,在ios这种审核严格的平台,更新无疑是非常有用的。自己写一个简单的打包工具,生成更新包、一份文件名和对应MD5的列表,就可以了。
在做win8版本更新功能的时候,有个小插曲。由于win8的安全限制,win8的webview不允许加载包外的本地文件。这样的话,虽然把内容更新到了本地,但是不能加载。更新功能必须做,win8又不允许加载更新到本地的文件,怎么办?对于js/css/html这种文本内容,很简单,读到内存里执行就可以了,但是图片呢?H5不支持显示内存中的图片。
我想了挺长时间,最后灵光一现:你只允许加载服务器上的文件,那我就在本地开一个http服务器不就得了?然后,我实现了一个简单的http服务器,http的目录指向更新内容。完美解决了这个问题!http服务器的端口号我设为了9527,看过《唐伯虎点秋香》的同学会心一笑。所以,如果哪个技术同学分析我们的应用,会惊讶的看到我们占用了9527这个端口,想不到干嘛用的吧?
后来,微软的一个技术总监来交流,我跟他们谈起我的实现方式,他哈哈大笑,“为了安全,我们限制加载本地文件,没想到被你轻而易举破解了,还是使用我们合法的API”。还有什么比被微软的技术专家肯定更让人开心呢?