小游戏Runtime微信的Runtime对外暴露的都是什么?

小游戏Runtime微信的Runtime对外暴露的都是什么?

首先给大家介绍一下什么是小游戏:小游戏特指微信小游戏,它是小程序的一个子类别。 微信内可轻松获取和传播,一键播放,用户体验极佳。 从发展的角度来看,小游戏是一个基于Canvas/WebGL+微信社交开放能力的新平台。 该框架分为三层,是典型的分层架构。 微信中有一个小游戏运行时来运行小游戏,操作系统本身可能涉及不同类型的设备。

如果放大一个小游戏的运行时,你可以看到很多细节。 首先是游戏逻辑,也就是独立于平台的游戏逻辑的开发。 第二部分是游戏引擎,大部分会用到一些引擎工作流程以及各个系统封装的一些高层API。 第三部分是weapp。 小游戏的框架参考了webview的框架,但实际上它的底层并不是webview,而是webview的一个精简优化的平台。 小游戏只有一些与核心相关的渲染API。 这里的weapp-adaper是为了让小游戏的能力适配更接近webview的环境,从而让更高级别的游戏或者引擎本身能够更快的融入到平台中。

游戏开发_开发游戏需要什么技术_开发游戏需要什么条件

小游戏运行时

微信的Runtime对外暴露的是微信的API,所有能力都通过微信API发布。 底层最基本的能力都是和渲染相关的,即Canvas 2d和WebGL。 其他一些微信相关的能力是独立的,因此小游戏的结构与小程序不同,但用户体验上没有太大差异。 小游戏没有页面概念,其实现也不完全是webview。 不必要的部分已被删除。

一般来说,小游戏的入口是game.js。 游戏可以利用一些底层能力来绘制游戏的整个界面。 配置文件game.json主要用于配置小游戏是横排还是竖排。 小游戏的全局对象game Gobal类似于webview中的window对象,支持javascript语言。 然而,小游戏的一个重要限制是禁止动态执行代码。 开发者必须先提交审核,审核通过后才能发布给普通用户。 另外,小游戏包括引擎的代码量都比较大,因此大小限制比小程序要大。 第一个包的大小限制为4M。

我们来谈谈Webview Adapter。 它的初衷是为了让游戏开发者更加熟悉我们的平台,所以我们的平台在能力上会尽量去适配webview。 其实这个适配也很简单。 层。 例如,我们在浏览器中使用image对象创建图像,但在小游戏中是通过wx.createimage创建的。 需要在代码中进行简单的调整。 例如Canvas、Document都是在Adapter中实现的。 您可以研究链接中的代码。 有一些优化的版本,官方以后不会继续维护这个Adapter,因为我们会更专注于底层能力的建设。 如果大家都已经熟悉了这个平台,那么开发游戏就会变得更加容易。 例如,Document 对象与迷你游戏框架本身中的普通对象没有什么不同。 它是Adapter做的一个简单的适配。

小游戏功能概述

小游戏的社交开放能力现已对外开放。 其中最重要的能力就是开放域,将微信好友关系系列开放给开发者共同使用,但也有一些限制。 由于小游戏的去中心化特性,这部分的共享也非常重要。 开发者必须考虑如何利用这个能力。 代码方面,由于首包限制为4MB,一些小游戏的代码量可能会比较大。 我们最近还计划提供异步加载代码的分包功能,但该代码必须由我们审核。

龙源科技是杭州IT行业的龙头企业。 服务类别涵盖互联网服务领域,主要包括网站建设、小程序商城、小程序定制开发、游戏开发、APP定制开发及推广服务。龙源科技致力于为大多数用户解决各种实际需求问题,提供全方位的创意服务。

如何开发一款小游戏?

那么如何开发一款小游戏呢? 因为我自己只开发过一些简单的游戏,对于游戏开发并不专业,所以接下来我会详细介绍一下如何利用微信的能力来开发小游戏。

选择迷你游戏引擎

首先,开发游戏时,必须选择引擎。 我们与发动机厂商也有比较密切的合作。 开发小游戏所用的引擎一定要合适。 例如,在底层,引擎可能一开始只支持原生游戏,必须对微信小游戏进行一些适配,依靠浏览器的独特能力。 Cocos Creator、Egret Engine、LayaAir Engine 三个引擎已经支持小游戏的开发。 关于如何发布到微信小游戏平台音效,网上也有相应的文章。

设备/环境适应

关于设备管理的适配,小游戏将会有API提供获取屏幕宽高、设备像素比等的能力。小游戏开发完成后,您还可以发起一个小游戏。请求在开发者工具中进行真机测试。 微信针对不同设备提供了测试集群,帮助开发者提前发现问题。 基础库本身提供的wx API是一个不断迭代更新的过程。 对于使用新能力的小游戏,需要实现低版本兼容。 例如,如果检测到不支持新API的较低版本被允许损害服务用户。 同时,如果某个低版本的用户比例较小,可以考虑直接在管理后台配置小游戏所需的基础库的最低版本。 当然,这也意味着,当这群用户接触到这款小游戏时,微信客户端会弹出A提示,要求用户更新到新版本的微信才可以使用这款小游戏。 如果他们不更新,他们可能会失去这个用户。

开发游戏需要什么技术_开发游戏需要什么条件_游戏开发

设备/环境适应

微信登录

小游戏的登录流程与小程序类似,需要用户自定义登录状态。 appsecret/session_key代表小游戏开发者与微信平台之间的信任协议游戏开发,例如托管数据的支付、上报等。 平台需要验证access_token,如果与用户相关,则必须验证session_key的签名,以确保请求来自小游戏开发者或用户。 access_token是应用状态的access_token,与用户无关。 它需要确保在全球范围内维护一份副本。 应该有一个中央控制模块来保证access_token有效。 同时本地缓存的access_token在有效期内直接使用,而不是每次使用都去。 生成新的access_token,否则可能会遇到调用频率限制错误,影响服务。 切记不要将appsecret/session_key放在前端代码中,否则可能会被恶意利用,损害小游戏开发者或用户的权益。

开发游戏需要什么技术_开发游戏需要什么条件_游戏开发

微信登录

缓存

缓存类型包括数据缓存和文件缓存。 数据缓存为key-value存储,适合结构化小数据存储,上限为10MB。 文件缓存提供了完整的文件系统API,包括目录/文件的添加、删除、修改和读取。 适用于频繁使用的网络资源的本地缓存,上限为50MB。

与浏览器不同,微信只提供基本的存储管理能力3D道具,不会对存储满时存储什么、删除什么进行任何操作。 开发者可以灵活地自行定义缓存和淘汰策略,例如将经常访问的资源存储在文件系统中,并在文件存储满时清除一些最近访问的文件。

缓存

开放数据域

我们来谈谈开发数据域,这意味着向小游戏开放用户数据,同时保护用户隐私。 这是一个封闭的、独立的 JavaScript 作用域。 开放数据域是一个独立的目录,入口文件为index.js。 目前的限制是只支持2D渲染模式,数据只能进不能出。 例如,一个排行榜必须是给用户看的。

我们简单看一下它的实现。 左侧是主域。 用户拿到这些数据后,排行榜其实就是一个Canvas。 不同的是Canvas无法取出数据,也无法分析数据是什么。 主域中有一个 Canvas。 在微信中,上屏Canvas与屏幕关联游戏开发,其次是离线Canvas。 离线Canvas可以根据您的需要使用。 数据一旦打开,上屏Canvas内部的数据就无法取出,也无法取出下一个Canvas,保证了数据的安全。

开放数据域

因为我们的数据是在开发数据域,用户没有办法开发。 因此,开发者在开发过程中需要将所需的数据托管给我们,并与用户关联起来。 这样就可以在开发数据域中获取相关数据。 其应用场景包括好友排名、群组排名、超越好友提示等。当用户输入时,重复用户的所有操作,并且所有用户的输入都是在屏幕上的Canvas和屏幕外的Canvas上获取的,并且没有开放数据将会渗透。

开发游戏需要什么技术_开发游戏需要什么条件_游戏开发

开放数据域

文章来源:https://www.toutiao.com/article/6939707445388329476/?