首页 > 其他分享 >GuideMgr 引导系统

GuideMgr 引导系统

时间:2023-07-31 16:23:22浏览次数:37  
标签:引导 GuideMgr 中断 跳过 系统 玩家 进度 行为

引导判断

  • 引导的起点并不是开始引导,而是判断是否要进行引导
  • 最基础的,如果引导已完成过就不必再次引导了
    • 虽然很像废话,但别忘了处理引导更新的情况
  • 常见方式
    • 首次进入游戏
    • 首次进入某个场景
    • 解锁功能时
  • 动态判断
    • 根据玩家的“无措值”
      • 基于玩家的状态、历史行为、关卡进度
      • (可能)能维持沉浸感
  • 大更新引导:引导通常是针对新玩家,但在游戏进行大更新时,老玩家面对新内容可能更难以习惯。
    • 老玩家判断:根据账号创建时间?使用账号创建时版本号更科学。

引导行为

  • 从OOP的理念出发,引导像盖在世界的一团雾,像一段剧情中的插曲,像时停时戒子老爷爷的提示。它通常是可以“扔掉”附属品,引导相关的代码应该尽量与其它业务代码解耦。

  • 行为类型举例

    • 播放一段音频(任天堂游戏常用)
    • 摄像头移动、聚焦
    • 弹出一个对话框
    • 完成一次UI点击
  • 行为类型差异很大,我们可以采取工厂模式来进行抽象。

  • 步骤例子

    • startGuide(guideId) 开始引导
    • GuideCfg[guideId][guideStep] 当前引导步骤
    • GuideBehaviourFactory.getGuideBehabiour(GuideCfg[guideId][guideStep]) 根据当前步骤的配置从工厂获取对应的步骤行为
      • IGuideBehaviour 引导行为接口

        • IDo 执行
        • IOnGuideComplete 本条引导完成
        • IOnGuideSkip 本条引导被跳过
        • ...
      • AGuideBehaviour 抽象引导行为类

        • implement IGuideBehaviour 实现引导行为接口
        • Init(GuideConfig guideConfig) 初始化
        • abstract void OnInit() 子类进行初始化
        • abstract String getBehaviourName() 要求子类填入具体行为名称,方便后续调试
        • ...
      • 子类实现 extend AGuideBehaviour

        • BtnClickBehaviour 按钮点击
        • CameraFocusBehaviour 摄像机聚焦
        • ClipPlayBehaviour 音效播放
        • TalkBehaviour 弹一个对话框
        • ...

跳过引导

  • 引导可以分类为进度推进型引导和非进度推进型引导。

    • 非进度推进型引导:从某个进度点开始引导,经过一系列引导行为后,回到进度点。

    • 进度推进型引导:从某个进度点开始引导,在完成引导行为时,也会同时推进进度。

  • 非进度推进型引导的引导跳过很简单。

  • 进度推进型引导则需要考虑一些情况。

    • 引导过程中修改的数据
      • 获得道具
      • 学习技能
    • 引导过程中的剧情成分
  • 如果不希望玩家错过关键引导,可以尝试分段跳过(?)

引导中断

  • 引导中断:玩家在引导过程中退出游戏

  • 引导中断处理:引导中断后再次进入游戏

    • 需要恢复引导
      • 恢复到引导开头
      • 恢复到引导中断步骤
    • 不需要恢复引导
      • 跳过引导
      • 不跳过引导(之后按原有逻辑进入引导)
  • 不同的游戏存档/数据同步机制,引导中断的处理难度也不同。

  • 基于引导的场景和行为的不同,我们能选择的引导中断处理方式也不同。

  • 基于开发经验,我给出这四种处理方式优先度:跳过引导 > 不跳过引导 > 恢复到引导开头 > 恢复到引导中断步骤

  • ⚠引导恢复碰上引导更新

    • 跳过引导
    • 如果不能跳过引导,那你就享大福了。引导转换?重新引导?
  • 【实际例子,待补充...】

标签:引导,GuideMgr,中断,跳过,系统,玩家,进度,行为
From: https://www.cnblogs.com/bakabird/p/GuideMgrIntro.html

相关文章

  • linux 文件系统 与 日志分析
    一.inode表1)indoe表中保存的信息inodenumber节点号文件类型权限UIDGID链接数(指向这个文件名路径名称个数)该文件的大小和不同时间戳指向磁盘上文件的数据块指针有关文件的其他数据 2)查看indoe号ls-istatstat[选项]文件最近访问:atime最近更改文件:ctim......
  • 学生管理系统项目
    一、创建项目djang-adminstartprojectday16二、创建app2.1创建apppythonmanage.pystartappapp012.2day16文件下sitting文件中注册appINSTALLED_APPS=['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes',......
  • 珠海先达盈致MES系统在信息化管理过程的优势
    一、MES系统信息化管理过程当中显著的优势1.实时性:MES系统可以即时地获取运行数据,包括设备运行状态、产量、质量等数据,使管理人员可以随时了解生产车间的状况,及早作出调整和决策。2.全局性:MES系统可以全方位地涵盖生产过程中的每个环节,包括物料管理、生产调度、设备管理、质量管控......
  • 记一次 .NET 某物流API系统 CPU爆高分析
    一:背景1.讲故事前段时间有位朋友找到我,说他程序CPU直接被打满了,让我帮忙看下怎么回事,截图如下:看了下是两个相同的程序,既然被打满了那就抓一个dump看看到底咋回事。二:为什么会打满1.真的被打满了吗凡事都要用数据说话,我们使用!tp命令观察一下。0:014>!tplogStart:......
  • 华为 openEuler 欧拉操作系统安装
    使用OracleVMVirtualBox安装操作系统 安装过程:1、官网下载镜像备用 目前我选择下载 下载第三个安装时有个“设置基础软件仓库时出错”错  (目前不清楚什么情况) 下载地址:openEuler下载|欧拉系统ISO镜像|openEuler社区官网2、新建 跳过自动安装 配......
  • 某交易平台客服系统源码搭建部署
    近期我公司与宁德鸿凯网络科技有限公司达成合作,为其产品鸿凯交易平台等搭建客服系统,提供全源码客服系统搭建部署。项目需求客户公司的客服比较多,有四五十个,需求是能够将客服系统用于公司多部门下的用户咨询接待,多部门的客服坐席智能自动分配接待,并且能互相转接用户等。后期,需......
  • Linux文件系统与日志分析
    目录Linux文件系统与日志分析日志是解决问题的唯一手段1.inode表结构1.1元数据1.2inode内容1.3inode内容1.4目录文件的结构1.5inode的号码1.6恢复XFS类型的文件2.日志服务管理2.1系统日志介绍2.2rsyslog系统日志服务2.3rsyslog日志管理2.3.1系统日志术语2.4日志文件2.......
  • mysql 修改 last Modified date 为当前系统时间
    如何使用MySQL修改lastModifieddate为当前系统时间概述在MySQL数据库中,如果我们需要修改某个记录的lastModified日期为当前系统时间,我们可以通过几个简单的步骤来实现。下面是整个过程的流程图:步骤操作1.连接到MySQL数据库使用mysql-uusername-p命令连接到MySQ......
  • X86架构CPU下Ubuntu系统环境源码编译pytorch-gpu-2.0.1版本
    本文操作步骤与aarch64架构CPU下Ubuntu系统环境源码编译pytorch-gpu-2.0.1版本大致相同,只是CPU架构不同而已,因此这里只记录不同的地方。 重点:一个个人心得,那就是要编译pytorch源码最好是选择docker环境,因为这种环境下配置比较纯净,一定要避免那种自己使用多年的Linux系统,那种......
  • 64bit系统下操作注册表的注意事项 ZZ
    前一篇注册表重定向64bit系统下操作注册表的注意事项 (2010-03-1917:50:54)  1、注册表位置       64bit系统(WindowsServer2008R2只有64bit系统)的注册表分32 位注册表项和64位注册表项两部分。       在64bit系统下,通过regedit中查看到指定路径下的注册......