小游戏开发_小游戏开发教程枪战 - CSDN
精华内容
参与话题
  • 如何实战开发一款小游戏

    千次阅读 2018-06-07 10:09:30
    如何快速开发一款火爆的小游戏?“火爆”是一个偏运营的词,今天介绍的内容可能更倾向于技术方面,即如何利用微信的开放能力开发一款小游戏小游戏上线120天时发布了几个重要的消息,其中有几个数字可以用来描述...

    如何快速开发一款火爆的小游戏?“火爆”是一个偏运营的词,今天介绍的内容可能更倾向于技术方面,即如何利用微信的开放能力开发一款小游戏。小游戏上线120天时发布了几个重要的消息,其中有几个数字可以用来描述“火爆”这个词。微信小游戏正式允许第三方开发者发布的时间是在3月3日,而现在几款小游戏的用户已经过亿,安卓月流水过千万的也有数款小游戏,大家应该已经体会到了微信小游戏的火爆程度。

    与火爆相关的两个知识,一个就是如何开发?首先要利用好微信的社交相关性,微信去中心化的情景下社交分享互动是非常重要的,因为没有传统流量分发的总入口。第二个是操作的简便性,我们根据游戏成为爆款游戏后的数据才能推出这两个结论,并不是说具备这两个特性就一定能开发出一款火爆的游戏。

    什么是小游戏?

    首先为大家介绍一下什么是小游戏:小游戏特指微信小游戏,是小程序的一个子类目,可在微信内被便捷地获取和传播,即点即玩,具备出色的用户体验。在开发的视角来看,小游戏是一个基于Canvas/WebGL + 微信社交开放能力的新平台。在框架上看分为三层,是一个典型的分层架构。微信中有一个小游戏的Runtime去运行小游戏,而OS本身可能会涉及到不同类的设备。

    /

    什么是小游戏

    如果放大小游戏的Runtime可以看到很多的细节,第一就是游戏逻辑,也就是与平台无关的游戏逻辑的开发。第二部分是游戏引擎,大部分会用到一些引擎的工作流、一些各种系统封装好的高层的API。第三部分是weapp,小游戏的框架是参考了webview的框架,但其实它的底层不是webview,而是webview精简优化过的平台,小游戏有的只是与核心相关的一些渲染的API。这里的weapp-adaper是把小游戏的能力适配到与webview更接近的环境,让更上层的游戏或引擎本身能够更快速地集入到平台中。

    /

    小游戏Runtime

    微信的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做的一个简单的适配。

    /

    Webview Adapter

    下图是小游戏能力的概览,最近小游戏能力的迭代比较快,部分能力还没有罗列出来。比如最近刚发布的游戏圈、健康系统相关的一些接口,都还没有列进去。我们先看一下基础能力,在渲染这部分WebGL1.0和Canvas 2D都是支持的,这里的Canvas更接近于浏览器里面的标准。同时,这里提到的可控帧率的概念,如果小游戏在后台运行的话,可以尽量将帧率降低。在多媒体部分,小游戏还不能像小程序一样实现实时的音频视频流,这是我们在后续要进一步支持的。网络IO的部分与小程序也是类似的,我们也提供了一些UI的组件,比如说拉起键盘,模态对话框等。

    /

    小游戏能力概览

    小游戏的社交开放能力现在已经对外开放了。其中最重要的一个能力是开放域,将微信的好友关系列开放出去,给开发者一起使用,但也存在着一些限制。因为小游戏去中心化的特点,分享这一部分也是非常重要的,开发者要考虑如何将这个能力利用起来。在代码方面,因为首包限制是4兆,但部分小游戏的代码量可能比较大。我们最近也在规划一个分包的能力,异步加载代码,但这个代码是一定要经过我们审核的。

    如何开发一款小游戏?

    那么如何开发一款小游戏?因为我本人也只是开发过一些简单的游戏,并不是专业进行游戏开发,所以接下来我会更多地介绍一下如何利用微信的能力来开发小游戏。

    选择小游戏引擎

    首先在开发游戏时要选择引擎,我们与引擎商也有着比较密切的合作,开发小游戏的引擎一定要是适配的。比如在底层,一开始引擎可能只支持原生的游戏,在微信小游戏上就要做一些适配,依赖浏览器特有的能力。Cocos Creator、Egret Engine、LayaAir Engine这三个引擎已经支持了小游戏的开发,网上也有相应的文章介绍如何发布到微信小游戏的平台。

    设备/环境适配

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

    /

    设备/环境适配

    微信登录

    小游戏的登陆过程与小程序类似,需要用户自定义登录状态。appsecret/session_key代表的是小游戏开发者和微信平台之间的一种信任约定,比如支付、上报托管数据,平台方需要验证 access_token,和用户相关的还要验证session_key的签名,才能保证请求来自于小游戏开发者或用户。access_token是一种应用态的 access_token,与用户无关,需要保证全局维护一份,应该有一个中控的模块去保证 access_token有效,同时在有效期内直接使用本地 cache的 access_token,而不是每次使用都去生成新的 access_token,否则可能遇到调用频率限制的错误而影响服务。切记 appsecret/session_key不要放到前端代码中去,否则可能会被恶意利用从而损坏小游戏开发者或用户的权益。

    /

    微信登录

    缓存

    缓存类型包括数据缓存和文件缓存两种。数据缓存即key-value存储,适合结构化类型的小数据存储,上限为 10MB。文件缓存提供了一个完整的文件系统 API,包括目录 /文件的增删改读,适合针对经常使用的网络资源做本地缓存,上限是50MB。

    和浏览器不同的是,微信只提供了基本的存储管理能力,并不对存储什么以及存储满时删除什么做一些操作。开发者自行灵活定义缓存及淘汰策略,比如对经常访问的资源存储到文件系统以及在文件存储满时,清理一些最近不常访问的文件。

    /

    缓存

    开放数据域

    我们来说一下开发数据域,也就是在保护用户隐私的前提下把用户的数据开放给小游戏。这是一个封闭、独立的javascript作用域,开放数据域是一个独立的目录,其入口文件是index.js。目前的限制在于仅支持2d渲染模式,数据只进不出。比如说一个排行榜,它的目的肯定是用来给用户看的。

    我们简单看一下它的实现方案,左边是主域。用户拿到这些数据后实现排行榜其实也是一个Canvas。它的区别在于Canvas不能把数据取出来,无法分析其中的数据是什么。主域里面有一个Canvas,在微信里上屏Canvas跟屏幕关联,后面都是离线的Canvas,离线的Canvas可以自己根据需求使用的。一旦开放数据以后,上屏Canvas不能把里面的数据取出来,下一个Canvas也不能取出来,保证了数据的安全性。

    /

    开放数据域

    因为我们的数据在开发数据域中,用户没有办法进行开发。所以要求开发者在开发时将需要的数据托管到我们这里,与用户关联起来。这样就可以在开发数据域里面取到相关数据,其应用场景有好友排行、群排行榜、超越好友提示等。用户在输入的时候,重复用户的所有操作,在上屏的Canvas和离屏的Canvas上就得到了用户的所有输入,不会有开放数据渗透进去。

    /

    开放数据域

    分享

    如果用户在游戏中达到了很高的分数,可以与好友PK一下。在自定义转发的窗口,标题和图片都可以自定义。但是现在有很多小游戏非常骚扰用户,他们做了很多一定需要分享,才能允许玩游戏的设定。这是大家需要思考的部分,如何既不影响用户的体验,又能够促进小游戏的互动,在这里需要找到一个合适的平衡点。同时,在分享数据后将小游戏与这个群聊关联起来,我们就可以看到一个小游戏平台。

    /

    分享

    支付

    小游戏是支持虚拟支付的,但目前仅适用于安卓系统中。且它的方式目前只有一种,即货币托管的方式。主要分为两个流程,一是用户花钱购买游戏币,这与游戏的服务端是没有关系的。发起支付时微信客户端会生成一个订单,让用户确认支付,这是异步的。平台负责把用户RMB兑换成对应的游戏币,存储到用户对应的游戏帐号上。二是使用游戏币购买道具,开发者可以扣除对应的游戏币,给用户发放游戏内道具,扣除游戏币的过程需要有一定的事务机制,保证在网络异常的情况下交易正常。扣除游戏币的接口支持根据订单ID去重,意味着在网络超时等情况下,开发者可用同样的订单ID去重试扣除,直至返回明确的响应。

    /

    支付

    性能

    小游戏常见的性能问题,一般是内存造成的。如果内存占用太多会被微信客户端主动关闭,因此开发者在用户游戏过程中要及时释放不再使用的内存,特别是Canvas和Image类的大型对象,同时可以主动调用wx.triggerGC触发底层回收对应资源。对于和游戏逻辑相对独立的工作,可以考虑在worker中去实现,小游戏提供了独立的worker线程执行js逻辑的能力。

    /

    性能

    版本更新机制

    小游戏有热启动和冷启动之分,冷启动是指内存中无该小游戏的运行实例的情况下,启动小游戏的过程;热启动是指小游戏的运行实例在内存中还存在,只是暂时切换到了后台,这时用户再次触发小游戏回到前台的过程。在如果用户点击启动之后,游戏运行时会加载出来这款游戏。在点击右上角的菜单时,按纽只是挂后台,在一定的时间内再启动时,它会立即恢复,这时内存将会释放。

    小游戏会在冷启动时检查小游戏的版本,如有新版本,在下载回本地后,下一次冷启动即可使用最新版。当然,我们也提供了 API可以供开发者决策在有版本可用时,是否需要强制更新,应用最新的版本。

    /

    版本更新机制

    运维

    管理端提供了发布、回滚、停服等能力,开发者可以充分利用平台的能力。比如在后台操作中,js可能会报错。脚本错误主要由运行过程中未捕获的异常触发,该类异常可能会导致用户小游戏前端的js逻辑暂停执行。同时,平台也提供了完善的数据分析服务,可以通过小游戏使用助手进行数据分析。

    /

    该资讯来源于小程序资讯,更多开发教程请关注小程序开发教程
    展开全文
  • 用Python实现五子棋小游戏

    千人学习 2019-10-31 11:39:07
    用Python教你实现五子棋小游戏,运用二维列表保存游戏状态,结合pygame的image模块的图像处理、以及pygame的事件处理机制来开发五子棋游戏
  • 微信小游戏开发总结

    千次阅读 2018-04-14 10:42:03
    小游戏是小程序的一个类目,小游戏是微信开放给小程序的更多的能力,让小程序开发者有了开发游戏的能力。小游戏没有WXSS、WXML、多页面等内容,但加了一些渲染、文件系统以及后台多线程的功能。小游戏的运行环境是小...

    小游戏是小程序的一个类目,小游戏是微信开放给小程序的更多的能力,让小程序开发者有了开发游戏的能力。小游戏没有WXSS、WXML、多页面等内容,但加了一些渲染、文件系统以及后台多线程的功能。

    小游戏的运行环境是小程序环境的扩展,基本思路也是封装必要的 WEB 接口提供给用户,尽可能追求和 WEB 同样的开发体验。小游戏在小程序环境的基础上提供了 WebGL 接口的封装,使得渲染能力和性能有了大幅度提升。不过由于这些接口都是微信团队通过自研的原生实现封装的,所以并不可以等同为浏览器环境。

    小游戏的运行环境在 iOS 上是 JavaScriptCore( 注:webkit的一个重要组成部分,主要是对JS进行解析和提供执行环境。 ),在 Android 上是 V8 (这个不用多说Node.js目前使用的就是V8)。但是两个都没有 BOM 和 DOM 的运行环境,没有全局的 document 和 window 对象。

    小游戏 VS H5游戏 VS 小程序对比图

    第三方代码适配(Adapter)

    主要目的提供 BOM 和 DOM 的运行环境。

    由上图可以看出,因为没有 BOM 和 DOM 的运行环境,没有全局的 document 和 window 对象。为了让基于浏览器环境(上图的H5游戏)的第三方代码更快地适配小游戏运行环境,所以就有了适配器(Adapter)。它是用微信 API 模拟 BOM 和 DOM 的代码组成的库,抽象的代码层,可以根据自己的需要去实现相关方法。

    例如,简单实现 document.creatElement 方法:

    var document = {
        createElement: function (tagName) {
            tagName = tagName.toLowerCase()
            if (tagName === 'canvas') {
                return wx.createCanvas()
            }
            else if (tagName === 'image') {
                return wx.createImage()
            }
        }
    }
    

    Adapter是否使用由开发者自己决定。不使用Adapter时,可以通过微信提供的API实现相应的方法,但不能使用 DOM API 来创建 Canvas 和 Image 等元素。

    有的游戏引擎是直接调用DOM API,和访问DOM属性 ,所以记得使用Adapter让游戏引擎适配小游戏的运行环境,保证游戏引擎在调用 DOM API 和访问 DOM 属性时不会产生错误。

    微信官方实现了一个 weapp-adapter 小游戏适配器,但仅仅只针对游戏引擎可能访问的属性和调用的方法进行了模拟,也不保证所有游戏引擎都能通过 weapp-adapter 能顺利无缝接入小游戏。这里将 weapp-adapter 适配器提供给开发者,更多地是让开发者作为参考,让开发者可以根据需要在 weapp-adapter 的基础上进行扩展,以适配自己项目使用的游戏引擎。weapp-adapter 会预先调用 wx.createCanvas() 创建一个上屏 Canvas,并暴露为一个全局变量 canvas 。

    require('./weapp-adapter');
    var context = canvas.getContext('2d');
    context.fillStyle = 'red';
    context.fillRect(0, 0, 100, 100);
    

    weapp-adapter 适配器提供了以下对象和方法:

    • document.createElement
    • canvas.addEventListener
    • localStorage
    • Audio
    • Image
    • WebSocket
    • XMLHttpRequest

    其实官方文档里面还有很多 ,感兴趣可以查看官方 API文档 。

    小游戏的模块化

    小游戏提供了 CommonJS 风格的模块 API,可以通过 module.exports 和 exports 导出模块,通过 require 引入模块。这里就不用多解释了,其实大家按正常的编码习惯编码就可以了。

    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文档 。

    大家对 Canvas 的优化或者对离屏画布不了解的可以看这篇文章 Canvas 最佳实践(性能篇)

    小游戏引擎

    游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。

    Cocos、Egret、Laya 已经完成了自身引擎及其工具对小游戏的适配和支持:

    • Cocos
    • Egret(白鹭)
    • LayaBox
    • Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象

    2D、3D、VR的支持

    性能

    从开发者的反馈来说,Layabox本来就是面向大型游戏的H5游戏引擎,性能优势是毋庸质疑的。

    设计理念与定位

    工作流支持力度

    工具链的提供与支持也是一种选择考量要素,比如UI编辑器、粒子编辑器、骨骼编辑器、场景编辑器等等,如果引擎方直接提供或支持,那么将会较大的提升研发效率。Egret、Layabox、Cocos2d-JS这三个引擎在工具链方面提供足够全面的支撑。

    引擎的应用广度

    Egret成名比较早,发展得比较快,各方面的资源而比较多,提供了全套开发流工具。

    用游戏引擎的优点:开发快,可维护性高

    用游戏引擎的缺点:牺牲一些性能,小游戏用不用引擎几乎感受不到性能差异。大游戏为了开发效率和可维护性,一般都会使用游戏引擎。

    小游戏实战总结

    本次主要实现的是跳一跳小游戏。游戏大概如下:

    跳一跳如何技术实现可以参考: 这篇文章

    层级划分

    • 景物层:负责两侧树叶装饰的渲染,实现其无限循环滑动的动画效果;
    • 阶梯层:负责阶梯和机器人的渲染,实现阶梯的随机生成与自动掉落阶砖、机器人的操控;
    • 背景层:负责背景底色的渲染,以及开始结束面板渲染。

    通过 requestAnimationFrame 循环调用一定次数来实现动画效果。游戏的逻辑通过监听全局的 canvas 对象实现。

    分层按顺序叠加绘至画布,先将背景绘上,通过算法计算出台阶位置,结合上一次的位置用 requestAnimationFrame 实现移位生成新的台阶,机器人单独抽离出来的,没有和台阶一起实现,通过位置计算,得到机器人的位置,绘制字台阶上,最后将顶层的树叶绘制上。

    小游戏开发难点

    首先,小游戏使用JavaScript语言开发,不存在HTML,CSS,所以需要对JavaScript语言,Canvas对象操作熟练。

    其次,和H5版游戏开发区别并不大,但是小游戏支持的库较少,并且大部分H5版开发所使用的到的库是不支持的。

    还有,就是H5版游戏的实现方式选择性更多,比如跳一跳原版是使用 createjs 开发,而小游戏版并不能支持所有的引擎,只能通过上面的几个引擎改造适配。

    小游戏优化

    为什么要优化?其实为了提高页面加载速度,减少游戏运行中的卡顿,使动画看起来更流畅,游戏的流畅程度及画面直接影响了用户体验。

    以下提供了几个优化方案。

    GC优化

    小游戏的优化文档并未指出,在api中提供一个性能管理器,通过获取性能管理器能够调用 API 加快触发 GC ,GC 时机是由 JavaScrpitCore / V8 来控制的,不能保证调用后马上触发 GC。

    setData调用次数优化

    小程序端,官方不建议频繁调用 setData ,大图片和长列表图片,都有可能导致 iOS 客户端内存占用上升,从而触发系统回收小程序页面。

    减小代码包

    尽量减小代码包的大小,代码包直接影响了下载速度,从而影响用户的首次打开体验。

    控制图片资源

    控制代码包内图片资源,小程序代码包经过编译后,会放在微信的 CDN 上供用户下载,CDN 开启了 GZIP 压缩,所以用户下载的是压缩后的 GZIP 包,其大小比代码包原体积会更小。 但我们分析数据发现,不同小程序之间的代码包压缩比差异也挺大的,部分可以达到 30%,而部分只有 80%,而造成这部分差异的一个原因,就是图片资源的使用。GZIP 对基于文本资源的压缩效果最好,在压缩较大文件时往往可高达 70%-80% 的压缩率,而如果对已经压缩的资源(例如大多数的图片格式)则效果甚微。

    清除无用资源

    及时清理没有使用到的代码和资源,小程序打包是会将工程下所有文件都打入代码包内,也就是说,这些没有被实际使用到的库文件和资源也会被打入到代码包里,从而影响到整体代码包的大小。

    fps调优

    使用 requestAnimationFrame 实现动画时,调整到合适的渲染fps(帧率)。

    遇到的问题

    图片尺寸问题?

    小游戏中图片对尺寸限制在2048像素,长宽要小于等于2048像素。

    对外开放?

    小游戏对外没有开放注册入口,现在能使用的是前两天在小程序中开放的游戏类目,将小程序类别设定为游戏类目可开发小游戏,不确定以后是否以这种方式注册,或者是单独开放小游戏的注册入口,两者目前没发现有什么区别。

    官方目前没有提供对外发布,登录后台能够点击发布,但是需要上传软件著作权证书等一系列,所以没有进行下去,不确定能否对外发布成功。

    关于小游戏代码体积大小?

    关于小游戏体积问题,小游戏的体积不得大于 4M,缓存不得大于 50M。

    具体的解释为:本地的代码和资源不得超过 4M。单个小游戏项目缓存的文件不能超过 50M,目前当缓存超过 50M 时后续的资源将不会缓存,未来新版的 AssetsManager 将会允许开发者自定义哪些资源需要缓存的机制。不允许从服务器下载脚本文件。

    不允许动态执行代码?

    不允许动态执行代码的能力, eval 、 setTimeout 和 setInterval 函数的第一个参数不能为字符串, Function 构造函数的参数不能为字符串。

    展开全文
  • 微信小游戏开发问题总结

    千次阅读 2018-07-22 19:02:51
    最近在开发微信小游戏,中途遇到了一些问题,在这里进行一下总结,也是自己做个笔记,同时,如果有人需要,希望能够帮的上忙。 首先对开发环境进行简要说明: 1.开发工具 cocos creator 1.9.1 2.开发语言 js 下...

    最近在开发微信小游戏,中途遇到了一些问题,在这里进行一下总结,也是自己做个笔记,同时,如果有人需要,希望能够帮的上忙。

    首先对开发环境进行简要说明:
    1.开发工具 cocos creator 1.9.1
    2.开发语言 js

    下面对开发内容进行说明。
    1. 微信平台的判断。在开发过程中,会经常调用微信提供的原生方法。微信提供了一个wx的接口,在cocos中默认继承了该API,只要是打包成微信小程序、小游戏,就可以直接用 wx.funcName() 的方式就能调用微信的相关的方法。但是在正常的浏览器调试的时候,要屏蔽掉该内容,此时不能直接用 if (!wx) 方式判断,一个朋友之前用这种方式判断,我也尝试了一下,但是直接报错,所以,不建议这样操作。其实引擎已经给集成了平台判断的方法,就像原生的iOS和Android一样,判断方式如下:

    if (cc.sys.WECHAT_GAME == cc.sys.platform) {
        // 调用你的要在微信上要执行的方法
    }
    

    通过该方式,可以进行平台判断。实际上,creator中定义了一个结构如下:

    export class sys {
        //...
        static WECHAT_GAME: number;     
        static QQ_PLAY: number; 
        //...
    }
    

    这里只是截取了一部分,这里包含好多平台,包括微信小游戏和QQ玩一玩。但是,注意,并不包含Facebook Instant Game平台,所以,如果要开发FIG的话,要注意这一点。
    2. 加速度计的使用下面说一下【加速度计】的使用。我开发的项目应用了加速计功能,所以这里对这部分进行一下简单的说明。cocos引擎默认自带加速计功能:

    // 加速度计事件监听
    cc.systemEvent.setAccelerometerEnabled(true);
    cc.systemEvent.on(cc.SystemEvent.EventType.DEVICEMOTION, this.onDeviceMotionEvent, this);
    

    在使用系统自带的加速度计的时候,首先要启用加速度计,然后,设置加速度计方向改变的监听。监听方法实现如下:

    onDeviceMotionEvent(event) {
        // cc.log(event.acc.x + "   " + event.acc.y);
    },
    

    在这里,通过event.acc.x 、 event.acc.y 、 event.acc.z 可以获取到x、y、z三个方向,这种方式在手机浏览器、iOS和Android上都管用,但是,在微信小游戏里面是不管用的,这一点一定要注意。所以,这部分只能用微信提供的接口了。

    wx.onAccelerometerChange(function(res) {
       // console.log('加速度计方向改变: res  --->   ' + JSON.stringify(res));
       // console.log('加速度计方向改变: res.x --->   ' + res.x);
       // console.log('加速度计方向改变: res.y --->   ' + res.y);
       // console.log('加速度计方向改变: res.z --->   ' + res.z);
    }
    

    通过这种方式,就可以监听微信的加速度计回调了。当然了,如果为了兼容的话,或者通用,可以找个地方把原生的方法重写,如果是微信小游戏,就直接调用微信的这个借口,然后,将res的x、y、z 映射成为event.acc的x、y、z,类似如下的方式:

    function onDeviceMotion() {
        var tempFun = cc.systemEvent.on;
        cc.systemEvent.on = function (type, callback, target) {
            if (type == cc.SystemEvent.EventType.DEVICEMOTION && cc.sys.WECHAT_GAME == cc.sys.platform) {
                wx.onAccelerometerChange((res) => {
                    var event = {
                        'acc': {
                            'x': res.x,
                            'y': res.y,
                            'z': res.z,
                        }
                    };
                    callback.call(target, event);
                });
            } else {
                tempFun.call(cc.systemEvent, type, callback, target);
            }
        }
    }
    

    在游戏启动的时候,调用一下这个方法,将系统的方法处理一下,方便以后的各个平台发布。虽然我们最后还是这样处理了一下,但是这种强行的映射,总觉得不太好。
    4. shader的使用问题。我们当时做的是一款水底类型的休闲小游戏。所以,当时为了做出水底的感觉,因此,博主找了一个水波纹的shader,当然,这不是我自己写的,是在网上找的一个大神的代码,我只是将ts翻译成了js而已。下面附上大神的代码仓库地址:
    shader仓库地址
    但是,实际上,微信小游戏是不支持shader的,我测试了,并不管用,但是在原生平台和H5上还是可以用的。
    5. 下面说一下richText的使用问题微信小游戏是不支持richText的,所以,在开发过程中,就不用想着用richText了,而且,本来richText就比较影响性能,所以,不使用也是个不错的选择。而且,如果是分数等的话,可以用艺术字,用着反倒是更方便。谈到艺术字,要声明一下,在小游戏的子域,艺术字以及图片合集是不支持的
    6. 关于图片的使用问题。由于微信小游戏对于包体大小进行了限制,要求小于4M,所以,在开发的过程中,考虑过使用webp格式的图片,实际上,在开发过程中,使用webp是没问题的,但是,当打包成微信小游戏的时候,会报错,微信小游戏不支持webp格式的文件
    7. 关于微信小游戏启动的黑屏的问题。对于包体大于4M的微信小游戏,微信小游戏在启动的时候,经常会有短暂的黑屏,而且,如果资源很多,可能会时间更长。这个时候,微信其实是在下载资源。如果觉得黑屏不好看,其实可以在启动的main.js文件中设置其他的颜色。这里写图片描述
    就是如图所示的这个main.xxx.js文件。打开这个js文件,找到 cc.director.loadScene ,在上面添加以下代码,进行颜色修改:

    cc.director.setClearColor(new cc.Color(255, 255, 255));
    

    这样那个就把颜色设置成了白色。但是直接这个main文件有个问题,就是每次都要改,为了方便起见,可以考虑做一个模板。
    这里写图片描述

    如上所示,在build同级目录下创建一个build-templates目录,然后不同的类型可以创建不同的目录,微信小游戏就创建wechatgame目录,然后把前面的那个main.xxx.js文件复制过来,改为main.js 。到这里还没有完全完成该功能。打包微信小游戏的时候,由于选择了MD5 Cache ,所以,所有的文件都是main.xxx.js 这种命名方式的。所以,打开wechatgame/main.js,从头到尾找一下这种格式的引用,修改一下即可。下面以我这边的为例,进行展示:

    var bundledScript = settings.debug ? 'src/project.dev.js' : 'src/project.ea0c1.js';
    
    require(window._CCSettings.debug ? 'cocos2d-js.js' : 'cocos2d-js-min.37a0b.js');
    
    require('src/settings.f6cee.js');
    
    cocos2d.src = window._CCSettings.debug ? 'cocos2d-js.js' : 'cocos2d-js-min.37a0b.js';
    

    找到了这几个文件你,将 project.ea0c1.js 改为 project.js 即可,后面的以此类推。注意,那个project.dev.js不需要修改。至此,一个微信小游戏main文件的模板就修改好了。这个方式,是cocos官网提供的解决办法。链接如下:
    定制项目构建流程
    8. 关于微信子域的问题。微信子域的接入问题,在开发过程中,建议还是先参照官方的文档进行处理,然后再参照我的博客:
    接入小游戏的子域
    官方文档只是一个简单的Demo,在实际开发中,会遇到更多复杂的操作,所以,这里我对自己的开发方式进行简要说明。

     cc.Class({
        extends: cc.Component,
        properties: {
            display: cc.Sprite
        },
        start () {
            this.tex = new cc.Texture2D();
        },
        // 刷新子域的纹理
        _updateSubDomainCanvas () {
            if (cc.sys.WECHAT_GAME != cc.sys.platform) {
                return;
            }
            if (!wx) {
                return;
            }
            if (!this.tex) {
                return;
            }
            this.tex.initWithElement(sharedCanvas);
            this.tex.handleLoadedTexture();
            this.display.spriteFrame = new cc.SpriteFrame(this.tex);
        },
        update () {
            this._updateSubDomainCanvas();
        }
    });
    

    当然了,首先是要在主域里面有一个Sprite,用来展示子域的子域的内容。这里的实现方式是在主域中,获取到shareCanvas,然后赋予到一个texture2D上面,通过这个tex设置Sprite的spriteFrame。子域一般都是用来展示排行榜的,排行榜是个scrollView,所以会刷新,为了保持一致,就在update中反复调用这个渲染的操作,更新到主域上面。
    下面说一下可能遇到的问题。首先,如果我们在多个页面都要显示排行榜,显然不能在每个需要的地方都写一遍逻辑。那么,最好的办法,是在某个图层上面,单独进行处理,不管在哪里,都只需要让这个图层负责处理排行榜的问题就好了。此外,还有一个问题,这里进行说明和提醒!!!由于子域的内容是在update的时候渲染出来的,所以,当我们的游戏有暂停功能的时候,如果想要在暂停页面查看排行榜,那么就要保证update是执行的,也就是说,暂停功能不能够使用cocos提供的 cc.director.pause() 方法。cc.director.pause()方法调用之后,不再执行update操作,但是此时还是可以接受点击事件的,所以说,既然无法执行update,那么,就无法刷新子域。这部分值得注意,我本人就被这个坑过。
    子域还有一个问题,就是当你打了一个不带子域的包的时候,如果此时,仍然在update中刷新并获取子域内容,就会有显示错误,因此,要把update中调用的方法注释掉,才会显示正确。
    子域错误显示 子域正确显示
    9. 项目打包问题。小游戏在开发过程中,对包体大小有要求,就是不能够大于4M,所以,在开发过程中,如果是比较小型的游戏,不需要太多的资源,那就要尽量保证资源的大小和代码文件的大小。实际上,在开发过程中,如果我们如果要打包小游戏,在构建微信小游戏的时候,会发现代码文件会很大。如图所示,就是这个文件很大:
    这里写图片描述

    从截图中,我们会发现这个cocos2d-js-min.js文件很大,有1.6M,那么,如果此时我们再把子域打包进来的话,那就3.2M了,我们还要写自己的代码,还要放图片资源,很显然,这会很容易超出4M。因此,我们要处理一下这个cocos2d-js-min.js文件,把它变小一下,这样,我们就能够减小小游戏的包体了。cocos creator为我们提供了一个解决办法。点击【项目】->【构建】,然后选择【模块设置】,把不用的模块去掉就行了:
    这里写图片描述

    这里写图片描述

    我在这里面选了几个没用到的模块,取消了勾选,并保存了。操作完成后,cocos2d-js-min.js就变小了一些,当然,看自己的需求,如果需要的东西更少的话,可删减的内容就更多了,这个文件的大小也会变得更小。主域和子域的代码都进行删减的话,会节省出来更多的空间,而且,实际上,在子域里面,需要处理的东西很少,可删减的空间更大。
    这里写图片描述

    当然,在删减的过程中,如果删减出错了,打包成小游戏的时候,是会报错的,为了防止这个问题的发生,大家可以去官网了解一下各个模块负责哪些功能,根据个人需要进行删减。官方论坛有一篇文章,可以过去参考一下,下面给出文章名字和链接:

    能给列一下模块设置那里各个模块的作用和含义吗

    由于模块比较多,这里就不依依罗列了,建议大家去官方论坛查看,有问题,多在官方论坛和论坛里面的各位进行沟通。

    到这里,基本把项目开发中遇到的问题都简单的进行了一下总结。算是给自己做一个笔记,也希望能够帮别人避免类似的问题。如果有哪里说的有问题,希望大家能够进行批评指正。

    展开全文
  • 搭建微信小游戏开发环境总结

    千次阅读 2019-01-22 10:51:06
    文章目录正式环境开发环境搭建使用acme.sh申请Let's Encrypt 泛域名的HTTPS证书1、添加A记录2、注册CloudFlare并添加站点3、更改DNS服务器4、获取CloudFlare平台 API Key5、一键申请 Let's Encrypt证书安装并配置...

    这篇文章主要解决以下问题

    1、一键申请泛域名证书并到期自动更新
    2、Nginx配置https
    3、本地资源映射到外网
    4、介绍CocosCreator构建发布微信小游戏时远程服务器地址如何配置

    正式环境搭建

    使用acme.sh申请Let’s Encrypt 泛域名的HTTPS证书

    使用 acme.sh 通过 CloudFlare DNS 验证方式一键申请 Let’s Encrypt 泛域名的HTTPS证书。

    服务器系统:CentOS 7.5
    假设域名为:*.game.ijpay.com

    1、添加A记录

    域名控制台添加A记录 *.game

    2、注册CloudFlare并添加站点

    CloudFlare 平台注册账号并添加站点域名。

    操作步骤如下图
    Add Site
    点击Add Site 后会弹出查询DNS记录的页面点击Next ,下一个步骤就是选择使用的版本「免费还是付费版本」,这里选择免费的就可以了。一直点击确认就可以看到「自动查询DNS的结果页」点击Continue 后即可得到CloudFlare 提供的免费墙外能访问到的DNS服务

    DNS服务器

    3、更改DNS服务器

    登录域名控制台,修改默认的DNS为CloudFlare 提供的免费墙外能访问到的DNS

    这一步骤很关键不要忘记操作,否则后面生成证书一直无法验证域名

    4、获取CloudFlare平台 API Key

    获取到API Key,详细的步骤请参考截图

    获取API Key

    点击 My Profile 后将页面拖拽至文末,点击View后做一个简单的账号验证即可查看具体的API Key

    获取API Key-查看具体的值

    5、一键申请 Let’s Encrypt证书

    到此生成证书准备工作已完成,下面就使用acme.sh 来一键申请 Let’s Encrypt 泛域名的HTTPS证书。
    1、安装 acme.sh

    普通用户和 root 用户都可以安装使用

    curl  https://get.acme.sh | sh
    

    2、创建 一个 bash 的 alias, 方便你的使用

    alias acme.sh=~/.acme.sh/acme.sh
    

    以上安装过程不会污染已有的系统任何功能和文件, 所有的修改都限制在安装目录中: ~/.acme.sh/

    3、生成证书

    这里我们使用DSN验证方式来验证域名并生成证书。

    • 设置全局API参数
    export CF_Key="步骤四中的API Key"
    export CF_Email="申请的邮箱"
    

    CF_KeyCF_Email 将会保存到~/.acme.sh/account.conf

    • 生成泛域名证书
    acme.sh --issue --dns dns_cf -d *.game.ijpay.com  --debug
    

    可以添加多个 -d ,--debug 显示具体的日志信息

    不出任何异常的情况下就会提示生成证书保存的路径

    Your cert is in  /root/.acme.sh/*.game.ijpay.com/*.game.ijpay.com.cer
    Your cert key is in  /root/.acme.sh/*.game.ijpay.com/*.game.ijpay.com.key
    The intermediate CA cert is in  /root/.acme.sh/*.game.ijpay.com/ca.cer
    And the full chain certs is there:  /root/.acme.sh/*.game.ijpay.com/fullchain.cer
    
    • 证书自动更新

    安装 acme.sh时就自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书,如果快过期了需要更新, 则会自动更新证书。

    目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.

    升级 acme.sh 到最新版 :acme.sh --upgrade

    如果你不想手动升级, 可以开启自动升级:acme.sh --upgrade --auto-upgrade之后, acme.sh 就会自动保持更新了。你也可以随时关闭自动更新:acme.sh --upgrade --auto-upgrade 0

    安装并配置Nginx

    1、安装准备工作

    目前稳定版本为 1.14.2

    wget http://nginx.org/download/nginx-1.14.2.tar.gz #下载nginx
    tar -zxvf nginx-1.14.2.tar.gz  #解压nginx
    

    2、编译安装

    配置参数并添加第三方模块

    进入nginx解压目录执行以下命令

    ./configure --prefix=/usr/local/nginx \
    --with-http_gzip_static_module \
    --with-http_stub_status_module \
    --with-http_ssl_module \
    --with-pcre \
    --with-file-aio \
    --with-http_realip_module \
    --add-module=/mnt/software/nginx_conf/nginx-module-vts
    

    nginx-module-vts 此模块可以监控Nginx虚拟主机流量以及状态,详细介绍参考之前写的博客Nginx添加第三方模块并平滑升级

    缺啥就安装啥
    缺啥就安装啥

    yum  install -y  gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
    

    命令详细介绍请移步至之前写的博客 Centos 通过 Nginx 和 vsftpd 构建图片服务器

    查看安装状态

    安装好 Nginx 后,使用它的命令是 它的路径+对应的命令 ,但路径很长,每次使用都很麻烦,为了解决这个麻烦有两种处理方式

    • 将nginx添加到全局变量中
    • 添加一个 service nginx xxx的方式

    第一种方式介绍

    cd /etc/profile.d/
    vi nginx.sh
    

    在 nginx.sh中添加如下内容

    export NGINX_HOME=/usr/local/nginx
    export PATH=$NGINX_HOME/sbin:$PATH
    

    第二种方式介绍

    参考官方提供的配置参考文件

    注意 nginxNGINX_CONF_FILE 要与自己服务器的路径保持一致

    nginx="/usr/local/nginx/sbin/nginx"
    NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
    

    如果执行 service nginx start 提示权限不够请执行以下命令

    chmod 755 /etc/init.d/nginx #设置权限
    chkconfig --add nginx #设置开机启动
    

    3、配置HTTPS环境

    到这里已完成

    • 申请泛域名的https证书
    • Nginx下载与安装
    1、Nginx 模块化配置
    cd /usr/local/nginx/conf/
    true>nginx.conf #清空默认配置
    vi nginx.conf
    

    添加如下内容

    #user  nobody;
    worker_processes  1;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    events {
        worker_connections  1024;
    }
    
    http {
        vhost_traffic_status_zone;
        include       mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /mnt/logs/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
        server_tokens off;
        #keepalive_timeout  0;
        keepalive_timeout  65;
        
        gzip  on;
        client_max_body_size 5m;
    
        include conf.d/*.conf;
    }
    

    留意下 include conf.d/*.conf 后面所有的配置都放在 cd /usr/local/nginx/conf/conf.d 文件夹下。

    2、copy/安装 证书

    注意, 默认生成的证书都放在安装目录下~/.acme.sh/请不要直接使用此目录下的文件。
    例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件。这里面的文件都是内部使用,而且目录结构可能会变化。

    正确的使用方法是使用 --installcert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如:

    acme.sh  --installcert  -d  *.game.ijpay.com  \
    --key-file   /usr/local/nginx/ssl/*.game.ijpay.comt.key \
    --fullchain-file /usr/local/nginx/ssl/fullchain.cer \
    --reloadcmd  "service nginx force-reload"
    

    /usr/local/nginx/ssl 为证书保存的目标位置。这里用的是 service nginx force-reload, 不是 service nginx reload, 据测试, reload 并不会重新加载证书, 所以用的 force-reload「其实就是stop后再start」

    4、Nginx 配置https

    /usr/local/nginx/conf/conf.d 目录下创建文件frp.conf

    server {
        listen 443 default ssl;
        server_name *.ijpay.com;
        ssl on;
        ssl_certificate /usr/local/nginx/ssl/fullchain.cer;
        ssl_certificate_key /usr/local/nginx/ssl/*game.ijpay.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        client_max_body_size 10M;
    
        access_log  /mnt/logs/nginx/https.access.log  main;
    
        location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css|apk)$ {
            root /mnt/www/static;
            access_log off;
    	    add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Credentials' 'true';
            expires modified +30d;
        }
        
    

    保存后service nginx configtest或者 nginx -t来测试配置是否正常,如果存在异常就根据异常提示来定位并解决异常。
    如果配置没有问题就重启 service nginx force-reload来加载https证书,在/mnt/www/static 目录下上传一张图片login.png在浏览器中访问 https://static.game.ijpay.com/logo.png 测试,不出意外的情况下在浏览器中就可以显示此图片。

    配置远程服务器地址

    关于CocosCreator发布游戏到微信小游戏平台详细介绍与原理请参考官方文档

    总结一下,开发者需要做的是:

    • 构建时,勾选 md5Cache 功能。
    • 将小游戏发布包中的 res 文件夹完整的上传到服务器。
    • 删除发布包内的 res 文件夹。
    • 在构建发布面板中设置 远程服务地址
    • 对于测试阶段来说,可能你无法部署到正式服务器上,需要用本地服务器来测试(本地服务器如何测试下会详细介绍),那么请在微信开发者工具中打开详情页面,勾选项目设置中的 不检验安全域名、TLS 版本以及 HTTPS 证书 选项。

    将小游戏发布包中的 res 文件夹完整的上传到服务器 /mnt/www/download

    发布包内的 res 文件夹

    在上文配置的server模块中添加如下内容

    location /download {
            charset utf-8;
            autoindex on;
            autoindex_exact_size off;
            autoindex_localtime on;
            root /mnt/www;
        }
    

    配置远程服务器地址为: https://static.game.ijpay.com/download 在浏览器中访问会看到如下效果。

    到此介绍完了正式环境下微信小游戏开发环境的搭建。

    本地环境搭建

    Nginx 安装

    Mac 下安装软件建议使用brew 统一管理

    Mac 安装brew请参考官方文档

    使用brew安装Nginx

    安装:sudo brew install nginx
    启动:brew services start nginx
    重启:brew services restart nginx
    停止:brew services stop nginx
    查看:cat usr/local/etc/nginx/nginx.conf
    编辑:vi usr/local/etc/nginx/nginx.conf
    

    Window 安装Nginx 请参考这篇博客

    本地资源映射到外网

    本地资源映射到外网的工具比较多,可以参考之前我写的一篇博客里面有免费以及收费的Ngrok服务。但使用第三方提供的服务经常会遇到无法自定义域名或者域名没有备案等问题,自己使用Ngrok搭建私有服务配置又比较复杂所以这里推荐使用frpfrp官方文档有详细的配置介绍这里就贴一下我的配置(无论是什么系统配置都一样)。

    根据使用的系统下载不同版本的FRP

    1、服务端配置

    公司在线服务器,80端口一般是会被其他的服务占用这里使用Nginx来配置转发。

    server {
        listen       80;
        server_name  *.frp.game.ijpay.com;
    
        #charset koi8-r;
        access_log  /mnt/logs/nginx/http_frp.access.log  main;
        location / {
            proxy_redirect          off;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Forwarded-For $remote_addr;
            client_max_body_size      20m;
            client_body_buffer_size 128k;
            proxy_connect_timeout   600;
            proxy_send_timeout      600;
            proxy_read_timeout      900;
            proxy_buffer_size       4k;
            proxy_buffers          4 32k;
            proxy_busy_buffers_size 64k;
            proxy_temp_file_write_size 64k;
            proxy_pass http://127.0.0.1:9988/;
        }
    }
    

    frp 服务端配置 frps.ini

    [common]
    bind_port = 7000
    vhost_http_port = 9988
    max_pool_count = 5
    privilege_token = javen
    subdomain_host = game.ijpay.com
    dashboard_port = 9999
    dashboard_user = IJPay
    dashboard_pwd = IJPay
    log_file = ./frps.log
    log_level = info
    log_max_days = 3
    

    启动服务端 nohup ./frps -c ./frps.ini & 或者写一个start.sh的脚本

    #!/bin/sh
    nohup ./frps -c ./frps.ini &
    

    2、客户端配置

    frp 客户端配置 frpc.ini

    #http://frp.game.ijpay.com
    [common]
    server_addr = 服务器IP地址
    server_port = 7000
    privilege_token = javen
    
    [download]
    type = http
    local_port = 13888
    subdomain = download
    

    客户端启动命令 ./frpc -c ./frpc.ini

    这样就把本地http://127.0.0.1:13888/download 访问到的资源映射到了外网可以访问的 http://download.frp.game.ijpay.com/download

    博客侧边栏有游戏开发交流群欢迎加入

    到这里就介绍完了,个人能力有限如有错误欢迎指正,如有遗漏欢迎补充。欢迎一起交流讨论。

    展开全文
  • 作者 | 屠 敏责编 | 唐小引一年多前,张小龙在微信公开课 PRO 上正式宣布程序的到来,彼时大批的创业者开始在 O2O 服务、电商、制作平台、周边服务等运营模式...
  • 微信小游戏开发文档(4)

    千次阅读 2018-12-24 15:19:02
    微信小游戏系统API: wx.onTouchEnd wx.offTouchEnd wx.onTouchCancel wx.offTouchCancel Touch 触点 微信小游戏数据缓存接口: wx.removeStorage wx.removeStorageSync wx.setStorage wx.setStorageSync 微信小游戏...
  • 自从4月中旬期间,网络上传言个人小游戏也需要版号,心凉了一大截,然后5月的时候果然又收到微信的通知,要求填写游戏内容介绍进行申核,看下图:下面是要填写的具体内容:每项内容...
  • 微信小游戏开发入门(一)-基础知识

    万次阅读 2018-01-17 08:26:29
    微信小游戏是在微信小程序的基础上添加了游戏库 API。小游戏只能运行在小程序环境中,所以小游戏既不是原生游戏,也不完全等同于 HTML5 游戏。但实际上小游戏面向的就是 HTML5 游戏开发者,为了能够让 HTML5 游戏低...
  • 欢迎大家前往腾讯云+社区,获取更...大家下午好,今天我分享的主题是如何开发一款火爆的小游戏。其实小程序和小游戏还是有一些共通的地方,比如在登录部分小程序和小游戏是类似的,而Wafer2也是支持小游戏的。如何快...
  • 小游戏开发--Cocos引擎

    2020-06-29 18:42:20
    生命周期回调函数: 节点:指cc.Node;组件:指cc.Component。 onLoad:脚本组件绑定的节点所在场景加载时系统回调一次(或者节点active从false变为true时系统回调一次)。可在这里获取场景中其它节点,并可以初始...
  • [小游戏资源] 微信小游戏开发资源目录   一、微信官方游戏教程 小游戏简易教程小游戏API大全小游戏开发工具   二、微信小游戏图标资源 Game-icons.net   三、微信小游戏图片资源 ...
  • 《欢乐坦克大战》微信小游戏开发总结 《欢乐坦克大战》微信小游戏开发总结 前言 《欢乐坦克大战》是一款支持3V3实时对战并首批参与上线的微信小游戏中的作品。因为该游戏为微信小游戏中的重度之...
  • 微信小游戏开发教程

    千次阅读 2018-12-15 23:24:39
    微信小游戏开发教程-前言 自18年年初对开发者开放小游戏接口以后小游戏越来越火热,本文就是对小游戏开发的入门教程,希望这篇文章能够帮到想要入门开发游戏的你。 微信小游戏开发者文档 ...这里是微信小游戏的官方开发...
  • 2048小游戏开发过程以及感想

    千次阅读 2016-07-24 08:22:20
    2048小游戏开发过程以及感想 以前我就是一个忠实的2048粉丝,曾一度沉迷于其中,然而最好的战绩却也是止步于两个4096,这让我羞愧不已。 今日,我利用了一些空些时间,整理了一下思路,创作了这个小游戏,虽然功能...
  • 白鹭引擎正式支持微信小游戏开发

    千次阅读 2019-07-05 10:10:42
    12月28日微信迎来更新,正式上线小游戏,并开放了小游戏开发文档和开发者工具。在微信发布新版本后,白鹭引擎立即添加了对于微信小游戏开发的支持,开发者只需要使用白鹭引擎的最新版本,通过使用白鹭引擎完整工具流...
  • 小程序开发小游戏注意事项

    万次阅读 2018-07-09 16:51:53
    今天研究小游戏开发,总结了一些自己遇到的问题 :一. 注册appId 用小程序开发的小游戏跟用小程序开发其他项目不是公用的一个appId 如果你现在的小程序账号已经选了别的类目(非游戏),那你就需要另外注册一个账号...
  • 微信小游戏开发技术与应用

    千次阅读 2018-03-20 14:48:27
    一、微信小游戏——H5小游戏及微信小程序微信小游戏、H5小游戏以及微信小程序,他们到底是什么关系呢? 就像这个图一样,微信小游戏,目前其实就是微信小程序里能运行的H5小游戏,既属于微信小程序,也是H5小游戏。 ...
  • 开发微信小游戏并非难事1.首先,微信小游戏开发方法目前微信小游戏已发布 17 款首发游戏,包括六款棋牌类游戏,以及欢乐消消消、爱消除、坦克大战、保卫萝卜等休闲游戏。可以看到微信游戏的开发方式答主有一些...
  • 微信已经放出小游戏开发工具包,虽然功能尚未完善,但已经可以开发调试了。我们使用CocosCreator官方的polished_project例子来讲解如何生成微信小游戏。 1、下载polished_project工程,地址:...
1 2 3 4 5 ... 20
收藏数 282,552
精华内容 113,020
关键字:

小游戏开发