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
- 可设置正在追踪的任务
- 地图上悬浮的进度跟踪
网友评论