为什么80%的码农都做不了架构师?>>>   

phaser官方示例学习进行中,把官方示例调整为简明的目录结构,学习过程中加了点中文注释,代码在这里。

目前把官方的完整游戏示例看了一大半,

breakout是敲砖块,gemmatch是钻石消除,invaders是小蜜蜂,matching是配对,simon是记忆游戏,sliding是拼图,starstruck类似超级马里奥,tanks是坦克游戏。

游戏场面上看,敲砖块、小蜜蜂是竖版,超级马里奥是横版,坦克游戏是俯瞰,钻石、配对、记忆、拼图这四个都是棋盘。

界面构成上看,棋盘类游戏基本都用到了瓦块图,砖块蜜蜂和坦克是基本精灵,马里奥是瓦块和精灵组合。

瓦块图的绘制使用Tiled进行可视化绘制,绘制完生成json文件,该文件即保存了世界的结构,这个还在摸索。瓦块图的素材网上有很多,其实RPGMaker各个版本自带的素材就不错,它们自带的效果素材如爆炸什么的也可以在phaser中使用,行走图也能用。

因为phaser自身支持动画,定义精灵的时候除了可以指定一张简单图片,还可以指定一张包含了许多帧的大图片(其实只使用其中的一帧如砖块钻石,或者将其中的许多帧一起作为动画使用如小蜜蜂的敌机),甚至可以指定多张图片来形成动画(坦克例子有所演示),除此之外也可以将多个精灵组成一个逻辑精灵(也是坦克例子演示的,车身、炮塔、阴影分别是不同的精灵)。

敌人精灵的行为,简单的就在主循环update方法里为之写逻辑,例如小蜜蜂的敌机,复杂点的可以把敌人定义个类,用prototype的方式编写实例方法,在update方法中遍历之调用某方法,甚至你可能将多个不同类的敌人放到同一个数组里,调用它们的同名方法即可,这有点像java的多态特性,但javascript是弱类型的。

玩家的行为,分为鼠标操作和键盘操作,键盘操作在主循环update里判断是否按下,如果不想太频繁地响应用户操作,可以用个变量保存上次操作时间,再有操作看看其间是否已隔了足够多的毫秒数,否则就不处理,这种“临界值”的使用各个例子中很常见。

鼠标操作可以在主循环判断鼠标键是否按下,更直观的是为精灵添加按下/释放/移动..等响应函数,当鼠标在精灵上做了操作直接调用函数,钻石游戏是很好的演示。至于鼠标的位置,棋类游戏可以把其先转化为在棋盘中的哪一格,得到行数列数再处理,而坦克游戏则直接使用指针的位置来作为目标旋转炮塔和发炮。

游戏中可以用重复而自连接的小图片作为背景,类似现实中地砖或床单上的图案,其实是一个精灵,锁定在屏幕上,你自己来写代码让它卷动,例如小蜜蜂自动将星空向下滚类似飞机在向上飞,而坦克游戏则是向坦克的移动方向反方向卷,看着效果就是坦克和地面的相对位置变化与现实中一致,至于超级马里奥游戏,干脆不卷了,这是因为画面上的地图元件已经足够呈现移动的效果。

配对、记忆、拼图都有“电脑知道而玩家不一定记得”的信息,例如配对游戏中每个格子背后的画是什么,记忆游戏到底出的题目的数字序列是什么,拼图游戏成功时每个碎片应该在什么位置,这些信息当然存在游戏的全局变量里,另外例如坦克游戏里敌人坦克的血量,则由敌人坦克类的一个属性保存。游戏状态的保存使用什么编程元素都可以,可以想到的还有html5的本地存储甚至数据库,甚至是用ajax或者websocket存到服务器上。

记忆游戏有“关卡”的概念,而小蜜蜂游戏当三条命死绝之后有点击重新开始游戏的功能,这些进入新关卡或者重新开始游戏,当然不要location.reload,也不要重新初始化dom之类这样大张旗鼓的事,其实重新开始游戏只是逻辑上的重新开始,将全局变量重设为初始状态(过关则是关卡数加一其他数据清零),并重新显示适当的交互信息即可,例如播放动画、提示用户点击开始什么的。

棋盘类游戏中的精灵,既有坐标,也有身处第几行、第几列的概念,游戏逻辑中当然是用行数列数写逻辑最合理,当要移动棋子时,则使用坐标编写动画语句优美地滑过去,而行数列数则直接指定,代表“该在哪儿”。

小蜜蜂和坦克有炮弹和爆炸的临时精灵,用“池”来预先初始化一批这样的精灵,用到就取出,用完再归还,与数据库的连接“池”、服务器的线程“池”是相同的思想,避免对象过多。炮弹打到敌人坦克/飞机上时的事件,则是主循环中检测接触,如果接触则做点什么,比如销毁炮弹、播放动画效果、敌人血量减少甚至死亡。

目前的体会就这些,总结核心的关键点是主循环、精灵、全局状态、玩家行为、精灵策略,当然还有tile地图。

长期欢迎项目合作机会介绍,项目收入10%用于酬谢介绍人。新浪微博:@冷镜,QQ:908789432。

转载于:https://my.oschina.net/u/866216/blog/536620

html5游戏引擎phaser官方示例学习相关推荐

  1. HTML5游戏引擎深度测评

    https://zhuanlan.zhihu.com/p/20768495 最近看到网上一篇文章,标题叫做<2016年 最火的 15 款 HTML5 游戏引擎>.目前针对HTML5游戏的解 ...

  2. html5游戏引擎-Pharse.js学习笔记(一)

    2019独角兽企业重金招聘Python工程师标准>>> 1.前言 前几天随着flappy bird这样的小游戏的火爆,使我这种也曾了解过html5技术的js业余爱好者也开始关注游戏开 ...

  3. HTML5游戏引擎lufylegend深入浅出 - 引擎介绍原理

    又很久没有更新博客了,在这段时间里发生的事还蛮多的,回想起来才发现时间过得好快啊.至于博客嘛,天天都会关注,一来想看看大家是否写了一些评论,二来想看看大神们(如lufy,浅墨,雾央,Himi等)有没有 ...

  4. HTML5游戏引擎排行榜

    个好的游戏引擎,能够大大简化游戏的开发实现,html5gameengine.com网站对国内外所有HTML5游戏引擎进行了排名,排名不仅给出了价格.流行度.分数以及最新发布时间,通过点击引擎名称可以了 ...

  5. HTML5游戏引擎Egret发布2.0版 开发工具亦获更新

    5月22日在北京国际会议中心举办的HTML5游戏生态大会上,白鹭时代旗下游戏引擎Egret Engine发布2.0版,同时还发布了Flash转换HTML5工具Egret Conversion.HTML ...

  6. UC将发布高性能HTML5游戏引擎X-Canvas

    近日,UC优视公司在北京举行了UC九游游戏平台战略发布会.在发布会上,UC九游宣布,即将发布HTML5游戏引擎X-Canvas,此引擎将致 力于提升手机HTML5游戏的用户体验,解决开发者在此前HTM ...

  7. HTML5游戏引擎(二)02-egret引擎之hello world——快速上手-清理项目 程序入口 绘制单色背景 调整屏幕的适配模式 添加文字 响应用户操作-让文字变色

    HTML5游戏引擎(二)02-egret引擎之hello world--快速上手-清理项目 & 程序入口 & 绘制单色背景 & 调整屏幕的适配模式 & 添加文字 &am ...

  8. QQ空间玩吧HTML5游戏引擎使用比例分析

    GameLook报道/"Cocos 2015开发者大会(春季)"于4月2日在国家会议中心圆满落下帷幕.在会上全新的3D编辑器,Cocos Runtime等产品重磅公布,给业界带来了 ...

  9. 5款常用的html5游戏引擎以及优缺点分析

    如果您是游戏开发人员,并且正在寻找JavaScript和html5无缝协作的游戏引擎. 虽然市场上有很多免费和付费的游戏引擎,但一款让专业游戏开发者满意的游戏引擎,必须包含独特的东西,所以游戏开发者对 ...

最新文章

  1. 狄利克雷卷积莫比乌斯反演证明
  2. 职称计算机和职称英语期限,专业技术职称考试,职称英语和职称计算机有效期多长时间,每年什么时候报名啊?上海的...
  3. CPU 空闲时在干嘛?
  4. 人工智能简史(Rockwell Anyoha )
  5. win32bridge.server.exe函数不正确_修电脑?不,其实我们学的是......
  6. Nginx的应用之动静分离
  7. 在linux用ueditor遇到的问题
  8. 中国AI英雄风云榜十位领军人揭晓 | 网易2018中国年度AI领域人物评选
  9. 华为手机像素密度排行_最新手机性能排行榜出炉:高通骁龙865霸榜,前十不见华为!...
  10. 什么时候要用存储过程,存储过程的优点 .
  11. 高通QXDM工具使用
  12. 一些时间日期函数,转自华软
  13. mac命令行更新gradle
  14. office timeline 5|office timeline pro/plus 5(PPT时间轴制作插件) v5.00.00.00
  15. css 字体样式设置大全
  16. ArcGIS Engine基础(21)之面积测量(带内外环面积计算方法、地理坐标系和投影坐标系通用)
  17. php增加横排文字的间距,html段落内文字设置字间距间隔
  18. Spark——累加器的理解
  19. ij idea(2021)的jdk版本可能和本地的有冲突
  20. $(...)[0].attr is not a function

热门文章

  1. Maya 《猎人工具箱》道具制作图文教程
  2. 扫雷游戏【C语言实现】
  3. DLS-12B/DC220V双位置继电器
  4. dir what matlab,3_matlab讲义_pps_大学课件预览_高等教育资讯网
  5. 基于JAVAWEB电子商城的设计与实现
  6. 美图看看能看php图吗,美图看看支持格式超多 43种图片格式全hold住
  7. 怎样将计算机和电视机连接网络连接,DLNA怎么用?简单几步连接智能电视和电脑...
  8. win7计算机里找不到硬盘,win7电脑找不到硬盘驱动器怎么办 电脑找不到硬盘驱动器解决方法...
  9. Algorithm One Day One -- 约瑟夫环(丢手绢问题)
  10. http协议是无状态的,无连接的