「新手引导框架」升级,支持自动挂机等更多玩法!

2023-10-27 20:30

本文主要是介绍「新手引导框架」升级,支持自动挂机等更多玩法!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

01

将新手引导框架开源之后,陆续收到不少伙伴们的反馈,其中有一个问题是“引导脚本的自动执行,只能在浏览器上运行,感觉有些鸡肋”。

从最开始 Shawn 也一直在思考如何实现在原生环境上的屏幕点击模拟,之前的思路是分别在 iOS\Android 上分别实现一套原生的 JSB 接口,调用系统的能力来模拟真实的屏幕触摸,不过要让大家使用起来需要折腾 JSB\c++,相当于SDK接入,太过于复杂。

在与脱贫实验中的伙伴们几次交流讨论,大家给出了不同的方案,其中有「黝黑蜗牛」的方案给了我很大的启发,下面是解决原生上实现自动节点点击的讨论过程。

640?wx_fmt=png

「黝黑蜗牛」提出新的思路,使用cc.Button组件发送点击事件来模拟。

640?wx_fmt=png

但是非按钮节点怎么办呢?动态创建用完再删除...还有更好的方法吗?

640?wx_fmt=png

调试 Cocos Creator 的源码,找到事件派发的根源上,需要一个event事件对象。

640?wx_fmt=png

再向上追踪源码,定位到handleTouchesEnd函数,touches参数是点击的坐标,比较好创建。

640?wx_fmt=png

调用引擎接口handleTouchesBegin\handleTouchesEnd在Mac模拟器上自动执行成功!

640?wx_fmt=png

微信小游戏环境也成功了640

下面是模拟点击的核心代码:

function touchSimulation(x, y) {	//获取屏幕矩形大小	let rect;	let inputManager = _cc.inputManager;	if (cc.sys.isBrowser) {	let canvas = document.getElementById("GameCanvas");	rect = inputManager.getHTMLElementPosition(canvas);	} else {	rect = cc.view.getFrameSize();	rect.left = 0;	rect.top = 0;	}	//将x,y从Creator世界坐标转换到设备窗口坐标	let vp = cc.view.getViewportRect();	let sx = cc.view.getScaleX();	let sy = cc.view.getScaleY();	let ratio = cc.view.getDevicePixelRatio();	let htmlx = (x * sx  + vp.x) / ratio + rect.left;	let htmly = rect.top + rect.height - (y * sy + vp.y) / ratio;	let pt = cc.v2(htmlx, htmly);	//模拟点击操作	cc.log(`模拟点击坐标:${pt.x}, ${pt.y}`);	let touch = inputManager.getTouchByXY(pt.x, pt.y, rect);	inputManager.handleTouchesBegin([touch]);	setTimeout(() => {	inputManager.handleTouchesEnd([touch]);    	}, 200);	
}
02 

折腾这么多,新手引导自动执行到底有什么价值呢?

看过Shawn的GitChat文章想必你知道,新手引导自动执行可以实现自动化测试,引导脚本就是自动化测试脚本。

Shawn早在Cocos2d-js时使用过Cocos官方开发的Cocos2d-js devtool工具,看下图:

640?wx_fmt=jpeg

它是直接将一段 JS 代码嵌入已经运行的 Cocos2d-js 游戏中,如果将新手引导的自动执行能力动态嵌入一个 CocosCreator H5 游戏那将会是什么呢?—— 外挂

新手引导框架本身不依赖于具体游戏的代码逻辑,重点只关心场景树结构、关键节点名字,要实现一个外挂的可行性非常高。

一讲到外挂估计大家都觉得有点黑暗,那我们换一个正面的思路,实现一个“内挂”,就是在游戏内部的挂机自动执行。

想信大多数人都见过很多无脑的,自动打怪、自动做任务的传奇类挂机游戏... 使用引导自动执行的能力 + 操作录像功能,将会极大的降低挂机类游戏的研发成本,为开发人员节省时间!

03

新手引导框架正式迁移到GitHub地址:

       https://github.com/ShawnZhang2015/GodGuide

「Creator星球游戏开发社区」从最早的「奎特尔星球」改名来,Shawn的愿景一直都没有改变:“帮助初学者快速入门,助力企业降低研发成本,让游戏成为教育的最强武器!

明天是教师节,Shawn特地为教师节准备了一份自己的礼物:

小游戏、大能量,愿我们在前进的道路上砥砺前行,共同成长!欢迎伙伴们加我微信:z6346289。

640?wx_fmt=jpeg

640? 
640?wx_fmt=png 

Creator星球游戏开发社区

长按二维码,关注我们!

640?wx_fmt=gif

这篇关于「新手引导框架」升级,支持自动挂机等更多玩法!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/288196

相关文章

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

MyBatis-Plus 自动赋值实体字段最佳实践指南

《MyBatis-Plus自动赋值实体字段最佳实践指南》MyBatis-Plus通过@TableField注解与填充策略,实现时间戳、用户信息、逻辑删除等字段的自动填充,减少手动赋值,提升开发效率与... 目录1. MyBATis-Plus 自动赋值概述1.1 适用场景1.2 自动填充的原理1.3 填充策略

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

升级至三频BE12000! 华硕ROG魔盒Pro路由器首发拆解评测

《升级至三频BE12000!华硕ROG魔盒Pro路由器首发拆解评测》华硕前两天推出新一代电竞无线路由器——ROG魔盒Pro(StrixGR7Pro),该产品在无线规格、硬件配置及功能设计上实现全... 作为路由器行业的T1梯队厂商,华硕近期发布了新旗舰华硕ROG魔盒Pro,除了保留DIY属性以外,高达120

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是