大纲

作者: Heartcase_b8c0 | 来源:发表于2020-12-27 23:32 被阅读0次

WorldEffect 第一期大纲: 给 RM 的世界以活着的感觉

  • GameSelfData: 事件独立数据

    • Game_SelfData
      • 重写value(key)
      • 重写setValue(key, value)
    • $gameSelfData 全局对象
      • 对象初始化
      • 存档序列化支持
    • 插件命令 getSelfData(key)
    • 插件命令 setSelfData(key, value)
  • EventClerk: 自动保持事件状态, 依赖于GameSelfData

    • getKey(event, key)
      • 如果是该事件和其他事件共享数据, 则返回共享的 key 名
      • 如果是Game_Event, 则返回[mapId, eventId, key]
      • 如果是具有getKey方法的拓展类, 则返回其各自的getKey方法的值
    • setEventState(event, {pos, blend_mode, opacity, image, erased })
      • 手动设置事件位置,朝向,透明度,行走图,混合模式和消除状态
      • 刷新地图
    • 记录状态 EventClerk.saveEventState(event)
    • 还原状态 EventClerk.restoreEventState(event)
    • 清空状态 EventClerk.clearEventState(event)
    • 重写Game_Event.prototype.refresh, 注入restoreEventState
    • 重写Game_Event.prototype.processRouteEnd, 注入saveEventState
    • 重写Game_Event.prototype.locate, 注入saveEventState
    • 重写Game_Event.prototype.setDirection, 注入saveEventState
    • 重写Game_Event.prototype.erase, 注入saveEventState
    • 插件命令 setEvent(eventId, key, value)
    • 插件命令 clearEventState(eventId)
    • 插件注释 <EventClerk> 表示这个是记录状态的事件
    • 插件注释 <EventClerk:x> 表示这个是 id 为 x 的共享状态事件
  • Storyline: 非线性剧情状态管理

    • Story 故事对象

      • 包含一个对外展示的任务名displayName
      • 每个故事拥有一个状态status: INACTIVE, STARTED, COMPLETED, FAILED
      • 每个故事存在一个当前Stage
      • 包含若干Route, 如果满足Route中的条件, 则跳转到NextStage
    • Stage 故事环节

      • 存在若干Progress
      • 包含若干Route, 如果满足Route中的条件, 则跳转到NextStage
    • Checkpoint 检查点

      • 表示角色是否做出了某种行为的标识, 默认为 false
    • Route 路线

      • 包含一个NextStage
      • 包含若干个Checkpoints
      • 包含一个优先级priority
      • 包含一个设置Storyline status的选项, 设置为UNCHANGED则不变
    • Progress 进度

      • 记录玩家行为进度的对象, 可仅作为展示也可以作为Checkpoint设置值的依据
      • 包含值value
      • 包含边际值maxValue
      • 一条输出文本, 比如: '[可选] 打倒敌人($$value$$/$$maxValue$$)'
    • 全局字典stories, stages, checkpointsprogresses

      • name字符串为索引
      • 所有对象互相间的关联都通过name字符串做索引在全局字典中查找实现
      • 支持存档可序列化
    • createStory(storyName, firstStageName, status)

      • 创建一个Story
      • 如果firstStageName给出但不存在则创建一个
      • 默认statusinactive
    • createStage(stageName, progressNames)

      • 创建一个Stage
      • 关联progressNames中所有的progress
      • 如果progressName还没有定义, 则创建一个默认的
    • createCheckpoint(checkpointName, state)

      • 创建一个Checkpoint, 并设置其默认状态
    • createProgress

    • addStoryRoute

    • addStageRoute

    • addStageProgress

    • setStoryStage

    • setStoryStatus

    • updateCheckpoints

    • updateStoryStage

    • setProgressState

    • setCheckpointState

    • getStory

    • getCheckpoint

    • getProgress

    • 插件命令 setProgress

    • 插件命令 setCheckpoint

  • TimeFly: 地图时间流逝

    • 插件参数 timeRatio: 游戏事件和真实时间比例
    • 全局对象frames
      • 支持存档可序列化
    • setTime(hour, minute, second)
    • addTime(hour, minute, second)
    • tick()
    • pause()
    • resume()
    • getTime()
      • 以 hh:mm:ss 格式输出
    • onOverflow(n)
      • n 代表超过的天数, 用于给其他插件重写
    • onHour()
      • 每小时触发一次, 用于给其他插件重写
    • 重写Game_Map.prototype.update
      • $gameMap._interpreter运行时暂停计时
      • $gameMap处于非激活状态时暂停计时
    • 插件命令pause
    • 插件命令resume
    • 插件命令getTime
    • 插件命令setTime
    • 插件命令addTime
  • NewDay

    • 通过重写TimeFly的回调函数来实现日, 月份和年的管理
    • 插件参数: 月份长度, 季度长度
    • UI 对日期和事件的展示
  • EventWanderer: 跨地图事件和运行时事件(事件模板), 依赖于GameSelfData

    • 插件参数 模板地图 ID eventMapId
    • 模板地图上设置模板事件, 然后基于模板事件动态创建事件在其他地图上
    • 每个动态事件具有独立的对应数据
    • 模板地图会被保存到$dataEventMap中来
      • 会在游戏加载阶段和其他数据库文件同时加载 (DataManager._databaseFiles)
    • 全局对象数组$gameEvents
      • 每一个元素记录一个动态事件的数据
      • 包含一个唯一 id
      • 包含一个对应模板事件的 id
      • 包含独立的所在地图, 位置, 行走图, 透明度等信息
    • 新的拓展类Game_DynamicEvent
      • 重写event()方法 指向模板地图上的事件而不是当前地图的事件
    • 重写Game_Map.prototype.setupEvents, 将DynamicEvent也写入_events
      • 会创建动态新的对象Game_DynamicEvent
      • 动态事件的eventId在当前地图中不得重复
    • createDynamicEventData(data) 创建
      • 会自动添加到$gameEvents数组中去
      • 追加事件到Game_MapTilemap中(如果在当前地图中)
      • 刷新地图
    • removeDynamicEventData(id)
      • 清除数据
      • Game_MapTilemap中清除(如果在当前地图中)
      • 刷新地图
    • setDynamicEventData(id, data)
    • 插件命令 createEvent
      • 将 id 保存到变量以备用户之后使用
    • 插件命令 setEvent
      • 可以设置位置, 行走图, 透明度, 消除状态等...
    • 插件命令 removeEvent
      • 变量指定 id
  • PageSwitch: 事件页面自定义开关

    • 在事件页增加额外事件出现条件

      • 当最前面的一条或多条注释满足正则表达式, 则会执行对应的判断
    • SelfDataSwitch: 事件独立数据页面开关拓展

      • 正则表达式
      • 判断独立数据是否满足条件
    • StorylineSwitch: 剧情状态数据页面开关拓展

      • 正则表达式
      • 判断剧情环节和进度或检查点是否满足条件
    • TimeFlySwitch: 时间状态页面开关拓展

      • 判断时间是否满足条件
  • NoNPC: NPC 数据和行为定义, EventWanderer拓展, 依赖于PageSwitchTimeFly

    • 全局字典$gameNpc, 映射 npc id 和动态事件$gameEvents中的 id
    • 预期功能
      • 地图内巡逻路线, 定点逗留
      • 并行的登场/离场
      • 当停靠在相邻定点时, NPC 间会闲聊
      • 不同场景下会有不同的对话
    • 定义地图中的寻路节点, 定点和转移点
  • StoryBoard

    • 任务 UI
    • 可设置正在追踪的任务
    • 地图上悬浮的进度跟踪

相关文章

  • 阿达噶地爱的刚

    爱的刚搭嘎大纲大纲大纲

  • 阿达噶地爱的刚

    爱的刚搭嘎大纲大纲大纲

  • 阿达噶地爱的刚

    爱的刚搭嘎大纲大纲大纲

  • 阿达噶地爱的刚

    爱的刚搭嘎大纲大纲大纲

  • 始于大纲 终于大纲

    今日无聊,注册了起点中文,欲写一篇文章,名为《星海辽阔之逃离》,大纲想好了,第二部也好了,名为《星海辽阔之生存》。...

  • 大纲

    大纲

  • 大纲

    我们之间横着的不是年龄,而是信息的不对等。你青涩的喜欢对我有一种致命的吸引力,美的很,让我的心被你带着阳光的眼睛晃...

  • 大纲

    目录结构 1.框架基础搭建2.框架目录结构3.模块整合4 登陆认证模块配置5.Vue开发问题整理 自述 最近时间相...

  • 大纲

    基本信息: 1、书名:《XXX》 2、体材:玄幻,武侠,科幻,幻想,军事,YY 3、主题:主要情节内容,说明什么?...

  • 大纲

    怎样做什么事都要先来个大纲吧,即使这里是随记? 那,先立下这里的内容,既然来到这里,那么就要记录下来这里的初衷以定...

网友评论

      本文标题:大纲

      本文链接:https://www.haomeiwen.com/subject/cknanktx.html