游戏微信小程序开发,如何将现有的H5游戏迁移到微信小游戏?

2024-02-14
来源:网络整理

1.微信小游戏技术架构

2、引擎如何支持微信小游戏?

3、 的项目结构及构建原理

4、调试技巧

5、注意事项

6.问答

1、微信小游戏技术架构

微信提供了一个基础的运行环境,高度兼容微信中可以运行的大部分逻辑。 例如,一切都可以直接在微信中运行。 除了这些之外,微信还单独封装了一些特定的接口,比如社交接口、群组信息接口,这些接口与微信小程序的接口基本相同。 在这上层,引擎主要对这两套接口进行运行接口的封装,不会过度封装微信社交接口。 开发者可以直接调用微信社交接口。 最顶层是游戏本身的开发者逻辑。 对于开发者来说,只需要调用引擎即可完成一款微信小游戏的开发。

游戏微信小程序开发_微信小游戏开发基础与案例实战_微信小程序开发游戏

2、引擎如何支持微信小游戏?

游戏微信小程序开发_微信小程序开发游戏_微信小游戏开发基础与案例实战

从这张图我们可以了解到,如果使用引擎按照引擎提供的技术标准来开发游戏,就可以快速将游戏发布到微信小游戏平台,从而最大限度地减少对微信小游戏的了解游戏。 低级技术细节。

微信小游戏开发基础与案例实战_游戏微信小程序开发_微信小程序开发游戏

发布游戏到微信小游戏,总体步骤分为三步:

3、 的项目结构及构建原理

在最新版本的引擎启动器中,您可以将项目发布为微信小游戏。 当你执行这一步,或者在命令行中执行命令时,你会发现你的项目文件夹中会生成一个后缀为后缀的文件夹,如下图所示:

微信小程序开发游戏_游戏微信小程序开发_微信小游戏开发基础与案例实战

通过这个项目结构,您可以清楚地了解引擎将项目发布为微信小游戏的基本结构。 所有游戏相关的逻辑都会写在你的项目中,微信小游戏相关的部分也会写在你的项目中。 放置在与它相同的文件夹中。

当您执行引擎构建命令--时,所有游戏的代码和资源都会从游戏项目复制到微信小游戏项目中。 然后就可以使用微信开发者工具打开该文件夹进行预览,或者直接使用 run - - 命令自动调用微信开发者工具。

当执行 -- 时, 引擎内部到底做了什么?

当执行该命令时,引擎将首先运行到/.ts。 我们查看相关代码,可以发现这样的逻辑:

游戏微信小程序开发_微信小游戏开发基础与案例实战_微信小程序开发游戏

从这段代码中我们可以发现,如果开发者将发布目标设置为 ,那么代码就会被发布到项目的flat目录下,并且会添加一个后缀。 然后在发布过程中,会编译编译好的代码和EXML文件。 执行微信小游戏定制插件、混淆代码、生成文件的其他步骤很容易理解。 我们主要看一下这个插件内部做了什么。

游戏微信小程序开发_微信小程序开发游戏_微信小游戏开发基础与案例实战

通过查看代码我们可以发现微信插件主要做了以下工作:

微信小游戏开发基础与案例实战_微信小程序开发游戏_游戏微信小程序开发

4、调试技巧

目前引擎支持两种调试工作流程,分别是:

(1)在浏览器中调试

通过在您的引擎项目中执行和运行,您可以轻松地在环境中构建和调试。 测试成功后,可以执行--命令将准备好的代码发布到微信开发者工具中。

这种方式的优点是基于环境的调试使用浏览器,非常方便、轻量。 同时,借助引擎的扩展,您可以更方便地对游戏项目的渲染进行针对性的调试。

这种方法的缺点是,如果开发者必须在微信开发者工具中进行调试(比如调试微信界面),那么调试起来会非常费力,因为微信项目中的代码已经被引擎压缩和混淆了。 为了解决这个问题,开发者可以去掉/.ts中的插件,这样就生成了未混淆的main.js,而不是混淆后的main.min.js,并且可以在微信开发者中调试js代码工具。

(2)微信开发者工具中调试

首先在/.ts中删除它。 然后通过run --启动微信开发者工具,然后执行--,微信开发者工具会自动刷新并显示最新的结果,并在微信开发者工具中进行调试。

这种方法的好处是,如果你只针对微信小游戏进行开发,则不需要引入一套环境,并且调试结果与最终发布到微信小游戏的结果一致。

这种方法有两个缺点。 首先,目前不支持微信开发者工具。 二是微信开发者工具相对重量级。 一个大项目建成后刷新会有明显的卡顿过程。

微信小游戏开发基础与案例实战_微信小程序开发游戏_游戏微信小程序开发

在真实的游戏开发过程中,开发者往往是多人协作开发,而不是单独工作,这就涉及到团队协作和版本控制问题。 我们建议开发人员按照以下方式遵循团队开发工作流程:

这样做的好处是团队成员能够各司其职,每个人都可以专注于自己要解决的核心问题。 由于项目和微信项目属于两个不同的文件夹,因此只为项目开发的开发者甚至不需要了解微信小游戏的内容。

5、注意事项

1、请将皮肤的自定义组件添加到全局命名空间中; 这一步和微信js代码的机制是一样的。 正因为如此,你可能会发现加载皮肤时报错,导致某些组件找不到,所以如果皮肤使用了自定义组件,那么这些自定义组件必须添加到全局命名空间中。

2、合理优化代码尺寸和材料尺寸; 微信小游戏有一个限制,初始包大小只能为4M。 这个4M指的是压缩后的代码。 无需担心代码注释等内容会增加代码大小。

3、尽快尝试在真机上进行测试; 建议开发者尽早在真机上进行测试,比如屏幕适配等,因为模拟机和真机有些环境是不同的。 微信的真机测试更方便。 您只需点击并扫描二维码即可开始。

6. 问答

Q1 小游戏支持wasm模式吗?

暂时不支持。 目前您只能编写逻辑。

Q2 小游戏的开发流程是否适用于小程序?

不通用。

Q3 微信小游戏是通过游戏项目还是微信小程序项目创建的?

它是使用 游戏项目创建的。

Q4 小游戏的大小不能大于4m,那么哪些文件夹应该是本地资源,哪些文件夹应该是缓存? 缓存的资源不应该放在项目中吗? 运行时如何加载? 是否存在跨域问题?

目前开发者可以设置通过网络请求加载的资源,我们将在下一个版本中提供更加灵活和定制化的解决方案。 另外,微信小游戏不存在跨域问题,你的资源可以从网络加载。

Q5 如果不使用exml布局,代码写在ts中,有的UI组件继承了EUI的一些UI类,有的继承了.写的组件,是不是所有手机都能适配全屏?

逻辑最外层,即需要自动适配的部分,可以使用exml布局。 exml里面的内容可以直接使用标准的ts组件,这样依然可以适配所有手机的全面屏。

Q6 可以在项目中直接调用小程序的组件吗? 比如视图?

不可以,微信小游戏中无法调用小程序的UI组件。

Q7 微信小程序的API包是写在项目中的.ts还是.js中?

微信小程序平台的.ts是用微信游戏的.js编写并实现的。 .ts在版本中实现的比较多,所以真正的API是在微信的这个工具里完成的。

Q8 构建后项目中的.ts文件与微信开发者工具中的.js文件差别大吗?

这两个文件没有任何关系。

.x=x的暴露实际上会造成运行或内存的负担吗? 也就是说,如果我这样写,会不会增加h5项目中的运行负担呢?

这种方法暴露的内存非常少。

Q10 main.min.js 大小超过 500K。 有什么好的解决办法吗?

其实可以忽略不计。 如果文件被混淆,则无需关注此问题。

Q11 小游戏中字体模糊、图片模糊的问题有改善吗? 或者说可以使用什么配置呢? 还可以通过这个值来配置吗?

API目前为默认值,正在修改中。 后续版本配置正常生效。

Q12 当开发的游戏出现黑屏、崩溃、或电脑上不存在的情况时,是否与滤镜的使用有关? 还是有其他原因? 以前有滤镜,但是在手机上,现在会显得卡顿,没必要用这个滤镜,就不会那么卡了。

这是内存引起的问题。 建议开发者删除未使用的资源,可以有效解决此问题。

Q13 我使用的是 引擎版本 5.0 / 4.x / 3.x。 可以直接改成微信小游戏吗?

答:目前我们仅支持以微信小游戏形式发布的引擎5.1.x版本。 我们建议您使用最新版本5.1.2。

Q14 我使用的是res库,5.1.2新建的项目使用的是res库。 这两个库有什么区别吗?

答:它是 res 的替代品。 两者的 API 90% 一致,但还是有一些小的差异,主要是在 RES 上。 如果遇到相关问题,可以修改.json中的模块配置。 修改回res并执行,这样就可以改成res资源管理库了。修改如​​图

Q15 设置横屏后微信小游戏不生效:

答:您需要在微信小游戏项目中找到game.json文件,并将参数设置为 。

Q16 老项目(5.1.2之前)升级到最新版本后,发布小游戏项目时出现错误。

答:升级成功后,请先确保版本可以正常运行,然后再尝试发布为微信小游戏。 目前,我们遇到很多开发者试图通过创建新的5.1.2项目,然后复制旧项目代码和资料来进行升级。 由于忽略修改.json中的模块配置,导致操作失败。

Q17 小游戏报“Main is not”错误

答:请检查游戏的入口类名是否为Main。 如果不是,请将其更改为Main。

Q18 “不检查安全域名、TLS 版本和证书”找不到时如何解决?

答:目前可以在..json中手动设置。

Q19 微信小游戏使用第三方库出错:

答:由于.js中包含加载逻辑,该逻辑需要适配微信小游戏的API才可以使用。 该问题目前正在解决中。

Q20 小游戏声音停止后,立即播放会出现没有声音的情况:

答:声音停止后延迟播放。

想了解更多关于微信小游戏开发的知识,可以前往引擎开发者中心()查看技术文档。 我们将持续及时更新最新的技术内容。 如果您对微信小游戏有任何疑问或建议,请前往社区参与讨论,我们的官方技术人员将为您解答。

分享