首页 > 其他分享 >游戏开发中新手引导的设计思路

游戏开发中新手引导的设计思路

时间:2023-07-01 13:34:30浏览次数:52  
标签:引导 游戏 流程 点击 新手 思路 节点 页面

​ 在制作一款游戏过程中,在核心玩法完成后,下一个任务就轮到了新手引导,这篇文章主要记录下在完成新手引导过程中碰到的一些问题和想法。

​ 当时项目组内使用的是用反遮罩的方式来凸显交互位置,引导玩家点击,在制作引导表格的时候需要手动输入遮罩的座标以及宽高范围,十分麻烦。然后我去网上“搜刮”一圈,发现一篇张晓衡的自动化新手引导,可以通过记录策划的点击操作来自动化输出JSON来直接使用,还是挺方便的。

​ 由于需要添加新的操作引导,同时也是为了方便策划的使用,最终还是使用线上点击获取目标节点+excel的组合来实现最终的效果。表格的目录大致如下:

  1. 编号指每个操作的唯一标识,从小到大,description是描述这步引导的简略描述,是给编辑的同学看的。
  2. 操作cmd,包括文本text,点击click,拖动drag,框frame等
  3. 参数args:不同的操作参数有不同传入,例如文本,传入的就是提示文字,点击参数就是被点击节点路径或名称。
  4. 目标节点:个别操作需要用到的额外参数(拖动)
  5. 任务参数taskId,一些引导不是一连串执行的,在某些时刻实行小组a的新手引导,在打开某个页面后执行小组b的新手引导,taskID相当于不同小组的编号。
  6. 文本和文本位置是在点击或者拖动流程中的单独文本。


​ 当然在使用过程中还是碰到了几个问题,以下是一些记录和思考。

  1. 某些页面打开后执行新手引导报错,找不到相应节点
  2. 玩家在新手引导过程中掉线怎么处理

问题一:找不到节点

​ 表格的内容大致如上,然后来解决一下某些流程中突发的新手引导报错,找不到相应节点。

​ 当时第一想法是策划同学拷贝错了,多了空格或者什么。但是这个报错不是稳定复现的,如果是路径错误应该次次都错,然后继续思考。发现报错大多发生在页面切换过程中,再仔细观察还能意识到,新开的页面往往内容较多,dc高,打开过程有点慢。所以我判断应该是页面未加载完成的情况下, 新手引导就开始执行,开始查找目标节点,导致查询失败报错。因为是用别人的一套流程,还没全部耦合进项目框架,所以这步的判断不好通过异步处理,不过知道问题也就好解决了,最后优化的流程如下。

​ 在新手引导流程中增加了检查所需操作节点所在页面是否active,是的话才发起监听。监听也设置了超时检测,避免没有找到相应节点,卡流程在新手引导页面,要是策划填错了也能让流程继续下去。

​ 在流程图中一个“优雅”的点:在玩家完成一次引导的操作后,我们动态地把完成这次操作的消息放置在回调中,这样每次完成操作后,都能立马记录状态,并通知新手引导系统检查下一步。这样就无需在每一个点击事件处,强制添加完成下一步的代码,而是在点击事件中,顺带执行我们的委托。

问题二:新手引导中断

​ 虽然游戏大致是个单机游戏,但还是要保存玩家的数据在数据库中,所以流程中就无法避免的出现了新手流程中断,再次登录打开游戏的事故。我们作为开发肯定不想让玩家再经历一遍已经操作过的流程的,所以要把每一步的执行结果同步到服务器。这里有两种处理方式:

方案1:

​ 根据id记录保存了每一步新手引导的状态,断线重连后,只有执行相应状态时再重新调起新手引导。

方案2:

​ 根据taskId(新手引导组),只有当同一个taskId组的所有操作都标记为完成后,断线重连后才不重新执行新手引导。假如没有完成整组所有流程,则会从小组任务重新开始。(当然重新开始新手引导流程需要考虑使用假数据,否则可能会出现类似商品已被购买或者金币不足的BUG。)

其他优化

  • ​ 遮罩还是太丑了,可以通过蒙版,遮罩以及高亮引导区,来实现更好的效果。

  • 在玩家完成新手引导后便不会再调起这个模块,可以在玩家每次登录初始化的时候便可以判断是否初始化新手引导模块,避免在每个子页面里进行逻辑判断。

标签:引导,游戏,流程,点击,新手,思路,节点,页面
From: https://www.cnblogs.com/oOLzYOo/p/17519167.html

相关文章

  • 微信小游戏代码包侵权解决办法
    微信过审机制介绍1、大致步骤就是提审->机器审核->人工审核;2、机器审核部分:审核代码部分,资源相关部分人工审核部分:审核UI相关,标题是否侵权,玩法是否符合类别3、审核时间:正常的账号在100分的情况下审核时间都会在2个小时内。审核细节1、微信目前机审大部分会从代码包里......
  • 猜数字游戏(附源码)
    CSS部分:<style>html{font-family:sans-serif;}body{width:50%;max-width:800px;min-width:480px;margin:0auto;}.lastResult{......
  • JAVA石头迷阵游戏
    大家帮我看看这个代码有没有问题,为什么将z设为作弊器但是在IDE中运行出来没有用//测试类importjavax.swing.*;publicclassTest{publicstaticvoidmain(String[]args){newMainFrame();}}importjavax.swing.*;importjava.awt.event.ActionEvent;......
  • 关于 3.0 和 2.0 的数据文件差异以及性能优化思路
    如果需要对数据库性能优化,了解数据文件的存储方式和工作原理是必要的。对于时序数据库(TimeSeriesDatabase)TDengine来说,在2.x版本中时序数据的保留策略是由keep和days这两个参数把控的。(详情可见:https://mp.weixin.qq.com/s/uJEQwN0NnmSTBAMOecAtoA)我们通过keep和days来......
  • 穷富思维论和致富思路
    信息不对称:业界趋势,政策走向等穷人共性:过于急功近利,不着边际,盲目冲动等 以上都是出于两种心态共同作用的结果:1.对现状的不安全感;2.对未来期望的不确定性=》导致穷人过于重视当下可获得的收益,而对长远的利益,需要付出一定代价的收益心怀警惕 为什么会产生这种感觉呢?原因:信......
  • 贪吃蛇小游戏
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body><h1>画布canvas</h1><canvasid="gameCanvas"width="600"......
  • 关于 3.0 和 2.0 的数据文件差异以及性能优化思路
    如果需要对数据库性能优化,了解数据文件的存储方式和工作原理是必要的。对于时序数据库(TimeSeriesDatabase)TDengine来说,在2.x版本中时序数据的保留策略是由keep和days这两个参数把控的。(详情可见:https://mp.weixin.qq.com/s/uJEQwN0NnmSTBAMOecAtoA)我们通过keep和days来......
  • 贪吃蛇游戏制作(附源码)
    CSS:部分*{margin:0;padding:0;}.wrap{width:600px;margin:0auto;position:relative;}p{position:absolute;left:73%;top:10%;}h1{text-align:center;margin-bottom:20px;}#score{text-a......
  • SQLite4Unity3d unity游戏数据库
      SQLite4Unity3d是一种基于sqlite-net进行封装的unity包,适用在iOS,Mac,Android和Windows项目中工作,适用于中大型游戏 项目架构传统unity序列化数据共有几种方案,包括使用本地持久化类PlayerPrefs,使用Json方法、使用XMl方法,但以上几种方案有使用上限制,修改自由化,规模化使用......
  • JavaScript实现Fly Bird小游戏
    1.分析页面结构,理清需求和功能游戏有三个界面,分别是开始界面,游戏界面和游戏结束界面。1.1开始界面 游戏的大背景上下移动的游戏标题和翅膀摆动的小鸟start按钮,点击进入游戏界面一直移动的地面1.2游戏界面显示越过障碍数量的计分器移动的障碍物,分别是上管道和下......