说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

开源HTML5游戏引擎Frozen背后的技术

HTML文档下载 WORD文档下载 PDF文档下载
Frozen是一款开源的HTML5游戏引擎,它诞生的目的就是为了将构建现代Web App中使用的技术,应用到游戏开发当中。那在实现这一目的时,有哪些技术在Frozen背后支持着呢?文中就为大家揭晓这些技术及它们所起的作用。

Frozen是一款开源的HTML5游戏引擎,通过工具和模块化实现了其简单易用和快速开发的优点,而且大多的主流浏览器皆支持这一游戏引擎。它诞生的目的就是为了将构建现代Web App中使用的技术,应用到游戏开发当中,比如AMD模块、依赖管理、构建进程以及项目脚手架。


Frozen背后的技术

那么,Frozen在实现这一目的的同时,存在其背后的技术又有哪些?下面要介绍的就是这些技术及它们在构建Frozen时所起到的作用:

  • Node.js和npm:作用于构建进程和开发工作流的依赖管理。
  • Grunt:开发工作流的task runner,允许单一入口点进行开发配置。
  • Volo:负责客户端的依赖管理和项目脚手架工具。
  • Lo-Dash:库内所使用的低级工具库。
  • Hammer.js:多点触控库,用于鼠标/触摸/指针事件标准化和手势。
  • dcl:用于生成构造函数和提供AOP的简便方法。
  • Box2d:用于游戏中的物理计算。
  • Dojo:用于AMD载入器和一些库内的公共模块,Dojo构建进程是用来构建一个单独的JS文件。
  • JSDoc:生成代码文档。
  • Jasmine:使用Jasmine行为驱动,拥有灵巧而明确的语法可以让你轻松的编写测试代码。
  • AMD:所有的模块都是使用AMD编写,且单层包括一个AMD模块加载器。

代码示例:

GameCore:

require(['frozen/GameCore'], function(GameCore){  // game state  var x = 0;  var y = 0;  //setup a GameCore instance  var game = new GameCore({    canvasId: 'canvas',    draw: function(context){      context.clearRect(0, 0, this.width, this.height);      context.fillRect(x, y, 50, 50);    },    update: function(millis){      x += 1;      y += 1;    }  });  //launch the game!  game.run();});
InputManager:

require(['frozen/GameCore', 'dojo/keys'], function(GameCore, keys){  var x = 100;  var y = 100;  var speed = 2.5;  //setup a GameCore instance  var game = new GameCore({    canvasId: 'canvas',    draw: function(context){      context.clearRect(0, 0, this.width, this.height);      context.fillRect(x, y, 50, 50);    },    initInput: function(){      //tells the input manager to listen for key events      this.inputManager.addKeyAction(keys.LEFT_ARROW);      this.inputManager.addKeyAction(keys.RIGHT_ARROW);      this.inputManager.addKeyAction(keys.UP_ARROW);      this.inputManager.addKeyAction(keys.DOWN_ARROW);    },    update: function(millis){      //just an example showing how to check for presses, could be done more effeciently      if(this.inputManager.keyActions[keys.LEFT_ARROW].isPressed()){        x-= speed;      }      if(this.inputManager.keyActions[keys.RIGHT_ARROW].isPressed()){        x+= speed;      }      if(this.inputManager.keyActions[keys.UP_ARROW].isPressed()){        y-= speed;      }      if(this.inputManager.keyActions[keys.DOWN_ARROW].isPressed()){        y+= speed;      }    }  });  //launch the game!  game.run();});
ResourceManager:

require(['frozen/GameCore', 'frozen/ResourceManager'], function(GameCore, ResourceManager){  var x = 0;  var y = 0;  var speed = 1;  //setup a ResourceManager to use in the game  var rm = new ResourceManager();  var backImg = rm.loadImage('images/background.png');  var nyan = rm.loadImage('images/nyan.png');  //setup a GameCore instance  var game = new GameCore({    canvasId: 'canvas',    resourceManager: rm,    draw: function(context){      context.drawImage(backImg, 0, 0, this.width, this.height);      context.drawImage(nyan, x, y);    },    update: function(millis){      x += speed;      y += speed;    }  });  //launch the game!  game.run();});
传送门:Frozen官网、mobilehub主页

Evernote更新Android SDK:新增商务服务并拆分“印象笔记” 主流编译器对C++11的支持现状比较 GCC 4.8发布,提升对C++11的支持 英国政府下令首选开源软件 为何美国IaaS收购被引爆?基于IaaS的四个误解和四个猜想 Kinect SDK v1.7迎来重大更新 如何激励同事编写单元测试? 谷歌GCE vs. 亚马逊EC2:快源于谷歌本有的底蕴 不要责怪开源技术 它是无辜的 短命:微软将于2014年停止对WP8系统支持 Native和Web过时了,企业级移动开发流行用Hybrid App 与EverNote竞争?谷歌Google Keep浮出水面 又一次跨越:著名3D游戏引擎Unity版本更新 Feedly团队:自研后端平台或将开源 StackMob的诱惑:16小时,山寨一款移动App “云”筹帷幄 开发者必知的5大SaaS在线服务工具 超350个政府项目托管在GitHub 政府开源会成主流? Kinect for Windows SDK 1.7正式发布,支持3D建模 SafeNet与风河系统联手推出VxWorks嵌入式系统软件货币化方案 Windows Server 2012中的动态负载均衡 Google等互联网公司将成为创新中心? 在Hadoop的战争中 MapR获新一轮3000万美元融资 初创公司DNNresearch:谷歌科技帝国的新“基石” 创业了,我们该如何起名? 乐视网联手富士康推新盒子C1S “0+290元”新浪微博发售 吸引开发者:只要开发新应用 微软便奖100美元 PaintCode - 将矢量图转化为Objective-C代码的开发神器 苹果发布iOS 6.1.3 封杀evasi0n越狱所用漏洞 [API快讯] Google开放实时协作API 58同城开源轻量级Java Web框架 Argo 初创公司AppNeta:4轮融资,4780万美元 寻求:《com原理与应用》的电子版下载? 关于页面刷新的问题? 关于网络流量计算,紧急,在线等待,高手请指教 寻mp3控件,要能读取其tag信息. 请问如何将IE分成两部分,左边是一个APPLET写的tree,右边响应树中节点的事件(链接页面)? 如何才能得到本程序的cpu占有率?而不是总的cpu占有率? 如何编程枚举网上邻居 课件招标!!凡是我觉的有帮助的回答都给分!分不够可以再加!!先来100分!! 谁是高手?在线等待,立马给分! 发邮件问题 单挑高手:一个可变的字符串变量记录着类名(classname),怎么样根据这个符串的值创建所含信息的类实例?? 大放分!!!即放即給 一个在桌面上产生雪花的小程序,请帮忙修改。 请教一个程序速度的问题 辽宁沈阳的凯夫集团有知道情况的么? 好书是那本? 再请saucer(思归, MS .NET MVP),你帮忙得问题用你的方法解决了一半,还差一点。 关于界面控键问题! 为什么在设计时控件的属性不可以修改?在线等候 我的ROOT口令忘了,我该怎么办? 在RedHat8.0上安装Kylix3出现的问题?(关于文件包glibc检查出错)??????? VSS: Unable to check out the file <file> because it is already checked out. 一个暴难问题,关于两台电脑通过一个modem上网的问题。谢谢。 谁是高手,立马给分! 如何使ListControl 内容排序? 无法安装sql2000! 关于inport()和outport()的问题! 哪位仁兄手上有灰度图像的傅立叶变换和反变换的程序代码? 请教高手!死机问题 如何可以让网页内容置中显示,不管客户端的分辨率是多少? 大家注意Acrobat 5与BDE有冲突!! 怎样向客户端输出数据 如何判断一个变量是否定义过?使用if(var)的方法不行,报错 Interbase树形结构和递归调用问题,高手请进!!急!!!! 有谁知道哪有pb8.0汉化版出售。本人是个十足的英语盲! Oracle8 的blob字段,BDE读取报“Invalid Field Type”的错误 Interbase树形结构和递归调用问题,高手请进!!急!!!! 如何选出表中相同的纪录? 下面这些对编程风格的说法是否正确? Interbase树形结构和递归调用问题,高手请进!!急!!!! 请教dos中有没有类似notify的命令用于邮件通知 java有没有RTTI(runtime type information) 在DOS下开发软件,应该如何调用扩展内存? 高分求:Antechinus C# Editor4.2c和JavaScript Editor的注册码! 想自己做个字典软件,但是没有词库 怎样做个链接?链接邮件地址。 如何在工具栏statusbar的右下角(最后一个panel里)做一个走动的时钟 大家讨论一下开发JSP Web站点用什么工具比较好? 我想编一个网页管理软件,有如下要求。。。 大家帮看一下,加注释的一句是什么意思 高分求救!!有关数据同步!! 电信诈骗出新花样 装主刀医生发短信索情侣喝多了吵架动手 误伤隔壁桌客人致陈宝成完整录像 还原陈宝成被刑拘事情宁波一名男子救跳江自杀女孩 做完好事宁波一辆工程车倒下40多吨渣土差点活酒店司机撞伤人被判全责 伤者丈夫上门超级高铁时速1223公里 成本仅为高保安曾捐肾给工友治病 靠名声骗钱数十法官设计引出老板帮助小伙拿到被拖欠工宁波外海一名柬埔寨籍船长天热中暑半身煤气瓶突然爆炸 两人受伤严重被烧伤进文革红卫兵向受害者道歉 沉重忏悔罪行二代身份证存缺陷 挂失后还能被使用台湾失智老夫妻 演绎我的世界只有你的网络名人共守七条底线 微博大V传播社印度潜艇爆炸18人被困 俄军工产品质浙商解救妻女牵出万人传销团伙 涉案金新手湖州高速上开路虎飙到196码被记潜水打麻将求清凉 交流仅仅靠手势北京群体自杀事件伤者身着“哈尔滨铁路男子干活时突然心慌 飞奔回家救下面临市民免费学才艺经济“去地产化”非易事我省将评选“诚信画廊”朱树诚先生A股患上“一日游综合征”520 “我爱你”告白惊现长沙街头大试完还有礼《蒙娜丽莎的微笑》将做手机表情符号马刺35分血洗雷霆《幻想曲》戛纳首映推出汉兰达店庆版《背影》被逐出教材再遭误传象牙塔外的路,走得很辛苦周日彩虹跑,High行十公里为了回家,所以旅行新车越来越向年轻人靠近小型SUV接棒保时捷卡宴从《归来》看“眼泪叙事”乐购节全线放价湖湘建筑定将诞生惊世之作苏亚雷斯受伤或影响世界杯
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘