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,checkpoints和progresses- 以
name字符串为索引 - 所有对象互相间的关联都通过
name字符串做索引在全局字典中查找实现 - 支持存档可序列化
- 以
-
createStory(storyName, firstStageName, status)- 创建一个
Story - 如果
firstStageName给出但不存在则创建一个 - 默认
status为inactive
- 创建一个
-
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_Map和Tilemap中(如果在当前地图中) - 刷新地图
- 会自动添加到
-
removeDynamicEventData(id)- 清除数据
- 从
Game_Map和Tilemap中清除(如果在当前地图中) - 刷新地图
setDynamicEventData(id, data)- 插件命令
createEvent- 将 id 保存到变量以备用户之后使用
- 插件命令
setEvent- 可以设置位置, 行走图, 透明度, 消除状态等...
- 插件命令
removeEvent- 变量指定 id
- 插件参数 模板地图 ID
-
PageSwitch: 事件页面自定义开关
-
在事件页增加额外
事件出现条件- 当最前面的一条或多条注释满足正则表达式, 则会执行对应的判断
-
SelfDataSwitch: 事件独立数据页面开关拓展
- 正则表达式
- 判断独立数据是否满足条件
-
StorylineSwitch: 剧情状态数据页面开关拓展
- 正则表达式
- 判断剧情环节和进度或检查点是否满足条件
-
TimeFlySwitch: 时间状态页面开关拓展
- 判断时间是否满足条件
-
-
NoNPC: NPC 数据和行为定义,
EventWanderer拓展, 依赖于PageSwitch和TimeFly- 全局字典
$gameNpc, 映射 npc id 和动态事件$gameEvents中的 id - 预期功能
- 地图内巡逻路线, 定点逗留
- 并行的登场/离场
- 当停靠在相邻定点时, NPC 间会闲聊
- 不同场景下会有不同的对话
- 定义地图中的寻路节点, 定点和转移点
- 全局字典
-
StoryBoard
- 任务 UI
- 可设置正在追踪的任务
- 地图上悬浮的进度跟踪









网友评论