HTML5游戏开发工具实践

Posted 伪装狙击手

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTML5游戏开发工具实践相关的知识,希望对你有一定的参考价值。

本次分享介绍使用Orion工具移植H5游戏——围住神经猫。
(1)素材和动画准备工作
首先从网上下载了神经猫的全部图像资源,导入素材库中。

神经猫的动画帧在一个图片中,因此需要对其进行分割处理,将动画帧提取出来。

在动画编辑器中建立一个Cat动画精灵,包含2个动画序列:Default(正常状态)和Closed(被围住);每个帧图像的锚点在图像底部

再建立一个Grid动画精灵,用于实现神经猫走的格子,只有一个缺省动画序列,包含2帧:0为空格子,1表示非空格子。

当游戏结束时还会弹出窗口,共有2个窗口:一个用于成功,另一个用于失败,将这个2个窗口图片也作为一个动画精灵SJCatBoard

接下来利用工具建立2个游戏场景:开始场景和游戏场景。
(2)开始场景编辑
开始场景由2个图片精灵组成,1个是背景图片,1个是显示“开始游戏”按钮的图片

开始场景的脚本实现如下:
a)初始化,居中显示

b)进入游戏,点击开始按钮图片进入游戏场景

(3)游戏场景编辑
游戏场景由背景图片、神经猫精灵、格子精灵、结果窗口精灵、结果文本对象和再来一次界面精灵组成。神经猫走个格子为9X9大小,这里采用脚本来实现格子地图的生成,因此在场景中看不到格子地图。

游戏场景的脚本实现如下:
a)初始化,这个场景的初始化的工作有些多,采用顺序执行模块来分步实现;

首先对定义的变量初始化,主要是定义了格子地图的偏移位置、格子大小、开始游戏时地图上的障碍(非空格子)数目等。

为了记录9X9格子地图的状态(格子是否为空,神经猫在那个格式上),这里使用一个插件对象Array(数组),是一个最高3维的数组(例如设置深度为1,则变为2维数组)。

生成9X9的格子地图数组,每个格子状态定义:0=空,1=非空,2=神经猫;

根据初始化障碍数目,在地图上随机生成障碍;

在地图中心创建神经猫精灵;

根据格子地图数组生成整个格子地图(由于神经猫所在图层位于格子地图之上,所以先创建神经猫不会发生遮挡问题);

b)玩家点击处理
当玩家点击一个格子时,标记该格子被占,同时神经猫也要移动一格;判断神经猫是否被围或逃跑成功则游戏结束显示结果界面;

由于神经猫的寻路算法采用图形化脚本实现会非常繁琐,图形化脚本主要用于高层逻辑的实现,因此这里将神经猫的寻路算法封装为一个精灵行为插件sjcat:插件定义了一个动作FindPath来计算逃跑路线,2个条件用来判断神经猫是否为围住或者是逃跑成功,3个表达式用来获取神经猫下一步移动位置和状态值;

当玩家点击一个非空格子,同时神经猫的状态为0(0=正常,1=逃跑成功,2=被围住)时

将被点击的格子标记为非空,计算神经猫下一步移动位置;

如果下一步格子有效,将神经猫移动到该格子上;

判断神经猫的状态(逃跑成功或者被围住),则游戏结束,显示结果窗口

c)重玩
当玩家点击“再来一次”按钮图片时,重新开始游戏;只需要调用“重新启动场景”即可

(3)发布游戏
目前Orion工具除了可以发布html5版本以外,还支持基于NW.js的跨平台发布,将游戏打包成面向Windows、Linux和MacOSX的可执行程序(文件大小会变得很大);

可以配置应用程序的窗口样式;

以win64为例,导出的文件目录格式,

运行界面为

以上是关于HTML5游戏开发工具实践的主要内容,如果未能解决你的问题,请参考以下文章

游戏1:HTML5制作网页游戏围住神经猫--createjs

爱前端|HTML5手机游戏工程实践答辩

2016年 最火的 15 款 HTML5 游戏引擎

[Canvas前端游戏开发]——FlappyBird详解

神经猫火过之后,Html5被玩坏的几种可能

技术实践的主流方向