小游戏与小程序的区别?(一文看懂)
发表时间:2023-12-03 15:31:05
文章来源:炫佑科技
浏览次数:96
菏泽炫佑科技 菏泽炫佑小程序开发 菏泽炫佑app制作 炫佑科技
小游戏与小程序的区别?(一文看懂)
小游戏是小程序的一个类别。 小游戏是微信向小程序开放的更多能力,赋予小程序开发开发游戏的能力。 小游戏没有WXSS、WXML、多页面等内容,但增加了一些渲染、文件系统和后台多线程功能。
小游戏的运行环境是小程序环境的延伸。 基本思想是封装必要的WEB接口并提供给用户,从而追求与WEB相同的开发体验。 小游戏提供了基于小程序环境的WebGL接口封装,大大提升了渲染能力和性能。 但由于这些接口是微信团队自研原生实现封装的,所以不能等同于浏览器环境。
小游戏在iOS上的运行环境是(注:其中重要的一环,主要是解析JS并提供执行环境。),在iOS上是V8(不用说,Node.js目前使用的是V8) 。 然而,它们都没有BOM和DOM运行环境,也没有全局和对象。
小游戏VS H5游戏VS小程序对比图
第三方代码适配()
主要目的是提供BOM和DOM的运行环境。
从上图可以看出,因为没有BOM和DOM运行环境,所以没有全局和对象。 为了让基于浏览器环境(上面的H5游戏)的第三方代码更快的适应小游戏运行环境,有一个适配器()。 它是一个由使用微信API模拟BOM和DOM的代码组成的库。 抽象代码层可以让你根据自己的需要实现相关的方法。
例如,简单的实现。 方法:
var document = { createElement: function (tagName) {
tagName = tagName.toLowerCase() if (tagName === 'canvas') { return wx.createCanvas()
} else if (tagName === 'image') { return wx.createImage()
}
}
}
由开发决定是否使用它。 不使用时,可以通过微信提供的API实现相应的方法,但不能使用DOM API创建Image等元素。
有些游戏引擎直接调用DOM API并访问DOM属性,因此请记住使游戏引擎适应小游戏的运行环境,以确保游戏引擎在调用DOM API和访问DOM属性时不会产生错误。
微信官方实现了weapp-mini游戏适配器,但只是模拟了游戏引擎可能访问的属性和调用的方法。 不保证所有游戏引擎都能通过weapp-流畅无缝地访问小游戏。 这里提供weapp-适配器更多给开发作为参考,以便开发开发在weapp-的基础上根据需要进行扩展,以适应自己项目中使用的游戏引擎。 weapp- 会提前调用 wx.() 创建上层屏幕并将其公开为全局变量。
require('./weapp-adapter');var context = canvas.getContext('2d');
context.fillStyle = 'red';
context.fillRect(0, 0, 100, 100);
weapp- 提供以下对象和方法:
其实官方文档里还有很多。 如果有兴趣可以查看官方API文档。
小游戏模块化
小游戏提供了样式模块API,可以通过. 和导入的模块。 这里无需多做解释。 其实每个人都可以按照正常的编码习惯来编码。
module.exports = function (canvas, x, y) { var image = new Image()
image.onload = function () { var context = canvas.getContext('2d')
context.drawImage(image, x, y)
}
image.src = 'res/image/logo.png'}
因此,小游戏对基本的编码能力非常友好。
小游戏能力
此处列出了一些提供的 API 功能。 更详细的能力和官方示例请访问API文档。
如果您不了解优化或离屏画布,可以阅读这篇有关*佳实践(性能)的文章。
迷你游戏引擎
游戏引擎是指一些编程可编辑计算机游戏系统或一些交互式实时图形应用程序的核心组件。 这些系统为游戏设计者提供了游戏编程所需的各种工具。 目的是让游戏设计者能够轻松快速地创建游戏程序,而不必从头开始。
Cocos、Egret、Laya 已经完成了各自的小游戏引擎和工具的适配和支持:
2D、3D、VR 支持
表现
从开发反馈来看,H5游戏引擎本来就是为大型游戏设计的,其性能优势是毋庸置疑的。
设计理念及定位
工作流程支持
工具链的提供和支持也是选择时需要考虑的因素,比如UI编辑器、粒子编辑器、骨架编辑器、场景编辑器等,如果引擎方直接提供或支持,将大大提高研发效率效率。 Egret、-JS这三个引擎在工具链上提供了足够全面的支持。
发动机应用广度
Egret成名较早,发展较快,各方面资源较多,提供全套开发流程工具。
使用游戏引擎的优点:开发快、可维护性高
使用游戏引擎的缺点:牺牲了一些性能。 对于小型游戏来说,使用与不使用引擎几乎没有性能差异。 大型游戏为了开发效率和可维护性,一般都会使用游戏引擎。
实用小游戏总结
这次实现的主要内容是跳跃游戏。 游戏大致如下:
Jump的技术实现方式可以参考这篇文章。
等级制度
动画效果是通过调用e循环一定次数来实现的。 游戏的逻辑是通过监控全局对象来实现的。
图层按顺序叠加并绘制到画布上。 先画背景,通过算法计算出脚步位置。 结合之前的位置,使用e进行移位并生成新的步骤。 机器人将其分开,不与步骤一起执行。 通过位置计算,得到机器人的位置,在台阶上画出文字,*后画出顶层的叶子。
小游戏开发难点
首先,小游戏是使用语言开发,没有HTML或CSS,所以需要精通语言和对象操作。
其次,和H5版本游戏开发没有太大区别,只是小游戏支持的库较少,而且大部分H5版本开发使用的库都不支持。
此外,H5版本的游戏在实现方式上也更具选择性。 例如,跳一条原版是使用跳一条开发,但小游戏版本并不支持所有引擎,只能通过上述几个引擎的修改和适配来进行适配。
小游戏优化
为什么要优化? 事实上,为了提高页面加载速度、减少游戏运行时的延迟、让动画看起来更流畅微信小程序开发游戏,游戏的流畅度和画面直接影响用户体验。
下面提供几种优化方案。
气相色谱优化
小游戏的优化文档并没有指出api中提供了性能管理器。 通过获取性能管理器,可以调用API来加速GC的触发。 GC时序由/V8控制,不保证调用后立即触发GC。
优化通话次数
官方不建议频繁调用小程序。 大图片、长图片列表可能会导致iOS客户端内存占用增加,从而触发系统回收小程序页面。
减少代码包
尽量减少代码包的大小。 代码包直接影响下载速度,从而影响用户的首次打开体验。
控制图像资源
控制代码包中的图片资源。 小程序代码包编译完成后,会放到微信的CDN上供用户下载。 CDN启用了GZIP压缩,因此用户下载压缩后的GZIP包,该包比原始代码包的大小要大。 会更小。 但我们分析数据发现,不同小程序之间的代码包压缩比差异较大。 有的能达到30%,有的只有80%。 造成这种差异的原因之一是图像资源的使用。 GZIP对基于文本的资源压缩效果*好,在压缩较大文件时往往可以达到70%-80%的压缩率。 但是,它对已经压缩的资源(例如大多数图像格式)影响不大。
清除无用资源
及时清理无用的代码和资源。 小程序打包会将项目下的所有文件放入代码包中。 也就是说,这些没有实际使用到的库文件和资源也会被放入代码包中。 ,从而影响整体代码包的大小。
帧率调整
使用e实现动画时,调整到合适的渲染fps(帧率)。
您是否遇到图像尺寸问题?
小游戏中的图片大小限制为2048像素,长宽均小于或等于2048像素。
对外开放吗?
小游戏对外没有注册入口。 现在能用的就是前两天在小程序里打开的游戏分类。 将小程序类别设置为游戏类别,即可开发小游戏。 我不确定以后是否可以通过这种方式注册。 ,或者单独打开小游戏注册入口。 目前两者没有区别。
官方目前不提供对外发布。 登录后台就可以点击发布,但是需要上传软件著作权证书等一系列东西,所以一直没有进行。 不确定对外发布能否成功。
关于小游戏代码的大小?
关于小游戏的大小小游戏与小程序的区别?(一文看懂),小游戏的大小不得大于4M,缓存不得大于50M。 具体解释是:本地代码和资源不能超过4M。 单个小游戏项目的缓存文件不能超过50M。 目前,当缓存超过50M时,后续资源将不会被缓存。 未来新版本将允许开发自定义需要缓存资源的机制。 不允许从服务器下载脚本文件。
不允许动态执行代码?
不允许动态执行代码的能力,eval、函数的**个参数不能是字符串,构造函数的参数不能是字符串。
开发问题
游戏逻辑处理不好,动画有点不流畅,还有延迟。