有非常多游戏採用H5技术开发。比方三国来了、巴哈姆特之怒、切绳子等。

我们公司也有多款游戏用H5开发。H5开发成本低。效率高,方便做自己主动更新,可移植性好。

受益于H5技术,我们公司的非常多产品都非常方便跨平台。

早在2012年。我就非常荣幸负责技术攻关,把我们的游戏移植到win8和wp8平台,当时在国内的win8和wp8平台是率先的。我们的一款游戏,跨ios、android、win8、wp8和黑莓10五大移动平台,这在国内肯定是唯一的吧?

《无尽大陆》获微软win8商店重点推广

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveW5ubW5t/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

《无尽大陆》进入win8商店热门第4

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveW5ubW5t/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

微软的同学去给团队拍照。报道http://win8.xapcn.com/news/28144.html

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveW5ubW5t/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

《Infinity Lands》喜获黑莓优秀H5大奖 http://blackberry.developer.csdn.net/article.html?arcid=15814719

也得益于在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这种文本内容。非常easy,读到内存里运行就能够了,可是图片呢?H5不支持显示内存中的图片。

我想了挺长时间,最后灵光一现:你仅仅同意载入server上的文件。那我就在本地开一个httpserver不就得了?然后,我实现了一个简单的httpserver,http的文件夹指向更新内容。

完美攻克了这个问题!httpserver的port号我设为了。看过《唐伯虎点秋香》的同学会心一笑。

所以。假设哪个技术同学分析我们的应用,会吃惊的看到我们占用了9527这个port。想不到干嘛用的吧?

后来,微软的一个技术总监来交流,我跟他们谈起我的实现方式,他哈哈大笑,“为了安全,我们限制载入本地文件。没想到被你轻而易举破解了,还是使用我们合法的API”。还有什么比被微软的技术专家肯定更让人开心呢?

Html5 移动游戏开发的更多相关文章

  1. Html5 Egret游戏开发 成语大挑战(一)开篇

    最近接触了Egret白鹭引擎,感觉非常好用,提供了各种各样的开发工具让开发者和设计者更加便捷,并且基于typescript语言开发省去了很多学习成本,对于我们这种掉微软坑许久的童鞋来说,确实很有吸引力 ...

  2. Phaser是一款专门用于桌面及移动HTML5 2D游戏开发的开源免费框架

    Phaser是一款专门用于桌面及移动HTML5 2D游戏开发的开源免费框架,提供JavaScript和TypeScript双重支持,内置游戏对象的物理属性,采用Pixi.js引擎以加快Canvas和W ...

  3. HTML5 Canvas游戏开发实战 PDF扫描版

    HTML5 Canvas游戏开发实战主要讲解使用HTML5 Canvas来开发和设计各类常见游戏的思路和技巧,在介绍HTML5 Canvas相关特性的同时,还通过游戏开发实例深入剖析了其内在原理,让读 ...

  4. HTML5物理游戏开发 - 越野山地自行车(三)粉碎自行车

    自上一章公布到如今已时隔四月,实在对不住大家.让大家久等了~话说不是我不关注我的博客,而是事情一多起来写博客的时间就少了. 待到今日有空了,回头看了看自己曾经写的文章,猛得发现已经四个月不曾写文章了. ...

  5. Html5 Egret游戏开发 成语大挑战(八)一般性二级页面处理

    在游戏中,我们一般会有各种各样的二级页面,比如游戏暂停界面或者游戏结束界面,这些界面组成了对玩家交互主要手段,在游戏开发中,对于这些界面的coding组织是非常有学问的,如果倒退到十年前,游戏开发的老 ...

  6. Html5 Egret游戏开发 成语大挑战(六)游戏界面构建和设计

    本篇将主要讲解游戏界面的构建和设计,会应用到egret.eui的自定义组件,可以很直观的构建一个游戏整体,这里我们仍然只需要使用EgretWing就可以达到目的,本篇可能是篇幅最少的一个,但是涉及自定 ...

  7. HTML5 Canvas游戏开发(三)lufylegend开源库件(上)

    lufylegend可以解决HTML5开发游戏中会遇到的一些问题: 1.各种浏览器对于JavaScript和HTML的解析是不一致的. 2.手机浏览器和PC浏览器的区别. 3.JavaScript并非 ...

  8. Html5 Egret游戏开发 成语大挑战(九)设置界面和声音管理

    在上一篇中,简单的使用界面元素快速实现了一个游戏中的二级页面,这种直接在游戏页面上做UI的做法并不太好,原因是,UI会让游戏的压力变大,即使它是隐蔽的,如果同样的功能在其它的地方也是一样的,那么就要写 ...

  9. Html5 Egret游戏开发 成语大挑战(七)游戏逻辑和数据处理

    本篇在前面的基础上,将进行逻辑的编码开发让游戏能够正式的玩起来,这里没有注重太多的体验细节,而是直接实现游戏的规则逻辑,将分成两个部分说明:数据处理和游戏逻辑. 初始化游戏数据 在前面的第五篇中,我们 ...

  10. Html5 Egret游戏开发 成语大挑战(三)开始界面

    本篇需要在前面的素材准备完毕,才可以开始,使用egret的eui结合代码编辑,快速完成基本的界面搭建,这里写的可能比较细,目的是减少大家对于其中一些操作疑问,我去掉了很多无用的步骤,以最精简的流程来完 ...

随机推荐

  1. 系统资源监控--windows

    前言: 系统资源监控一般监控系统的CPU,内存,磁盘和网络.系统分为windows和Linux.本篇主要记录windows. Windows的监控相对与Linux监控工具来说比较简单,更多的是查看wi ...

  2. 如何解决数据库中,数字+null=null

    如何解决数据库中,数字+null=null 我使用SQLServer,做一个 update 操作,累计一个数.在数据库中,为了方便,数据库中这个字段我设为允许为空,并且设置了默认值为 0 .但是在新增 ...

  3. DeepMind:所谓SACX学习范式

    机器人是否能应用于服务最终还是那两条腿值多少钱,而与人交互,能真正地做"服务"工作,还是看那两条胳膊怎么工作.大脑的智能化还是非常遥远的,还是先把感受器和效应器做好才是王道. 关于 ...

  4. Java_数组1_16.5.12

    声明整型数组a: int[] a; 这时,只声明了变量a,还应该使用new运算符创建数组: int[] a=new int [100];(数组长度不要求是一个常量:new int[n]会创建一个长度为 ...

  5. Windows提高_2.2第二部分:用户区同步

    第二部分:用户区同步 同步和互斥 同步:就是按照一定的顺序执行不同的线程 互斥:当一个线程访问某一资源的时候,其它线程不能同时访问 多线程产生的问题 #include <stdio.h> ...

  6. JAVA程序员面试笔试宝典2

    1.Java集合框架 2.迭代器 使用容器的iterator()方法返回一个iterator,然后通过iterator的next()方法返回第一个元素 使用iterator的hasnext()方法判断 ...

  7. 实战:tcp链接rst场景tcpdump分析

    RST为重置报文段,它会导致TCP连接的快速拆迁,且不需要ack进行确认. 1.针对不存在的端口的连请求 客户端: #include <unistd.h> #include <sys ...

  8. script标签属性sync和defer

    <script src="a.js" defer></script> 加了defer属性script标签的页面,运行流程如下:   1.浏览器开始解析HTM ...

  9. Java基础——从数组到集合之间关键字的区别!!!!

    1.&& 和 &区别和联系: 相同点 : 结果是一样的.       不同点 :如果使用双&号判断,如果说条件一为false,不会判断条件二,但是单&号会继续判 ...

  10. vivo手机执行input命令提示killed

    异常现象: 使用vivo手机时发现通过inputManager发送按键.执行屏幕滑动等动作失效,相关API并没有任何异常抛出,继续跟踪发现shell控制台执行input进行屏幕滑动.发送文本.模拟按键 ...