星露谷物语事件工作室

星露谷物语事件工作室

用于构建自定义星露谷物语过场动画的可视化时间轴编辑器。无需手动编写原始事件脚本,即可设置角色移动、对话触发器、镜头平移和音轨。

[center][img]https://i.imgur.com/Aa4rG0O.png[/img][/center]

[center][url=https://smapi.io][img]https://img.shields.io/badge/SMAPI-4.5.0+-brightgreen.svg[/img][/url] [img]https://img.shields.io/badge/Stardew%20Valley-1.6.15-orange.svg[/img] [img]https://img.shields.io/badge/Status-BETA-yellow.svg[/img] [url=https://www.nexusmods.com/stardewvalley/mods/1915][img]https://img.shields.io/badge/Export-Content%20Patcher%202.9+-purple.svg[/img][/url][/center]

[center][size=4]在游戏内构建星露谷物语事件,在实际地图上预览它们,并将结果导出为 Content Patcher 内容包。[/size][/center]

[heading][size=5]功能简介[/size][/heading]

[size=4]Stardew Valley Event Studio 是一个游戏内编辑器,用于构建和编辑星露谷物语事件,无需手动编写完整的事件字符串。[/size]

[size=4]一切都基于实际的游戏地点。你可以添加演员、将它们放置在格子上、设置移动和对话、创建问题和分支、控制摄像机、添加动画和效果,并在不离开编辑器的情况下回放场景。[/size]

[size=4]在编辑器底层,项目仍然使用星露谷物语的标准事件格式。Event Studio 为原版命令提供可视化编辑层,然后将它们导出为标准的 Content Patcher 事件数据。[/size]

[size=4]目前,Event Studio 包含:[/size]

[list] [][size=4]操作面板中直接提供 39 种操作。[/size][/] [][size=4]专用于移动、动画、对话、问题、摄像机运镜、道具、音频、奖励及其他事件命令的编辑器。[/size][/] [][size=4]多轨道时间轴,支持播放、拖动、逐步操作、分组和重新排序。[/size][/] [][size=4]用于快速编辑的画布预览,以及使用星露谷物语实际事件运行时的独立游戏内预览。[/size][/] [][size=4]导入游戏已加载的事件,包括 Content Patcher 的更改。[/size][/] [][size=4]问题、快速问题和 Fork 编辑。[/size][/] [][size=4]撤销和重做、自动保存、恢复文件和项目备份。[/size][/] [][size=4]导出为可直接测试的 Content Patcher 内容包。[/size][/] [/list]

[size=4][img]https://i.imgur.com/7ZaHEwf.png[/img][/size]

[heading][size=5]Beta 版本发布[/size][/heading]

[size=4]我以 Beta 版本发布 Event Studio,因为我想看看其他人在实际制作事件时它的表现如何。它已经可以构建完整场景,并导入、预览、保存和导出项目,但部分工作流程仍较为粗糙,需要在我自己的项目之外进行测试。[/size]

[size=4]欢迎提交错误报告,但可用性反馈同样重要。如果某个操作需要点击太多次、某个编辑器令人困惑、某个控件的行为与你的预期不同,或者你尝试构建某些内容却不知道如何操作,请告知我。[/size]

[heading][size=5]安装[/size][/heading]

[list] [][size=4]安装 [url=https://smapi.io]SMAPI[/url] 4.5.0 或更高版本。[/size][/] [][size=4]下载 Stardew Valley Event Studio,并将其文件夹解压到 [i]Stardew Valley/Mods[/i]。[/size][/] [][size=4]通过 SMAPI 启动游戏并加载存档。[/size][/] [][size=4]按 [b]F10[/b] 打开 Event Studio。你也可以在 SMAPI 控制台中使用 [i]eventstudio[/i]。[/size][/] [/list]

[size=4]此版本面向星露谷物语 1.6.15,仅供单人游戏使用。[/size]

[size=4]你不需要 Content Patcher 来打开编辑器。只有在运行 Event Studio 导出的内容包时才需要它。生成的内容包面向 Content Patcher 2.9.0 或更高版本。[/size]

[heading][size=5]快速开始[/size][/heading]

[list=1] [][size=4]前往事件应发生的地点,然后按 [b]F10[/b] 打开 Event Studio。[/size][/] [][size=4]点击 [b]New[/b]。当前位置将成为项目的起始位置。[/size][/] [][size=4]打开 [b]Actors[/b] 并添加你需要的 NPC。演员浏览器可以按本地化名称或内部 NPC ID 搜索。[/size][/] [][size=4]将演员放置在地图上。在事件开始时,你可以在格子之间拖动它们。按 [b]F[/b] 更改所选演员的起始朝向。[/size][/] [][size=4]从操作面板添加 [b]Move[/b]。手动选择演员和目的地,或直接在地图上选取目的地。[/size][/] [][size=4]添加 [b]Dialogue[/b],选择说话者并编写文本。对话可以包含多页、头像表情、占位符、性别相关文本以及可选的 i18n 键。[/size][/] [][size=4]继续使用动画、摄像机运镜、声音、道具、问题、分支或剧情操作来构建场景。[/size][/] [][size=4]使用时间轴控件播放场景、拖动浏览或逐一逐步执行操作。[/size][/] [][size=4]当你想要通过星露谷物语的事件运行时测试序列时,使用 [b]In game[/b]。[/size][/] [][size=4]保存 [i].svesproject[/i] 文件。当事件准备就绪后,使用 [b]Export[/b] 生成 Content Patcher 内容包。[/size][/] [/list]

[heading][size=5]在 Event Studio 中工作[/size][/heading]

[size=4]你所在的游戏地点将成为编辑舞台。你可以独立移动编辑器摄像机、检查格子和世界坐标、显示格子网格,并在构建场景时启用碰撞可视化。[/size]

[size=4]演员直接放置在地图上。选择演员时按住 [b]Shift[/b] 可创建多选。移动该组会保持演员之间的队形,并让它们同时移动。[/size]

[size=4]你还可以在不同的季节、天气类型或一天中的时间预览场景。这些更改是临时的,Event Studio 会在编辑会话结束时恢复原始环境。[/size]

[size=4]可用选项包括春、夏、秋、冬,以及晴朗天气、雨、暴风雨、雪、风,还有地点支持时的绿雨。[/size]

[heading][size=4]时间轴[/size][/heading]

[size=4]时间轴表示星露谷物语的有序事件序列。片段位置和长度根据操作顺序及每条命令的已知持续时间计算。[/size]

[size=4]由于结果仍然是原版事件,命令不能像视频编辑器中的片段那样全部放置在任意时间戳。时间轴使顺序和时序更易于查看和编辑。[/size]

[list] [][size=4]鼠标滚轮:滚动轨道。[/size][/] [][size=4][b]Shift + 滚轮[/b]:水平滚动。[/size][/] [][size=4][b]Ctrl + 滚轮[/b]:以鼠标指针为中心缩放时间轴。[/size][/] [][size=4][b]上 / 下[/b]:选择上一条或下一条操作。[/size][/] [][size=4][b]Enter[/b]:编辑所选操作。[/size][/] [][size=4][b]空格[/b]:启用或禁用所选操作。[/size][/] [][size=4][b]Ctrl+C / Ctrl+V / Ctrl+D[/b]:复制、粘贴或创建副本。[/size][/] [][size=4][b]Ctrl+上 / Ctrl+下[/b]:重新排序操作。[/size][/] [][size=4][b]G[/b]:将兼容的相邻操作分组或取消分组为同步回合。[/size][/] [][size=4][b]W[/b]:等待所选同步组中的所有移动完成。[/size][/] [][size=4][b]A[/b]:在命令支持的情况下切换异步移动。[/size][/] [][size=4][b]P[/b]:播放 / 暂停画布预览。[/size][/] [][size=4][b]Home / End[/b]:跳转到序列的开头或结尾。[/size][/] [][size=4][b]左 / 右[/b]:逐步浏览操作。[/size][/] [/list]

[heading][size=4]操作编辑器[/size][/heading]

[size=4]需要多个字段的命令会有自己的可视化编辑器,而不是通用的属性窗口。[/size]

[size=4]移动操作可以显示地图、目的地和生成的路线。动画具有带播放和逐帧停留的帧编辑器,而表情使用可视化选择器。音频可以直接从其编辑器预览,问题则有独立的工作流程用于答案和分支。物品、任务、邮件、演员和地点字段可以使用可搜索的资源浏览器,但你仍然可以手动输入精确 ID。[/size]

[size=4]在你按下 [b]Apply[/b] 之前,不会向项目写入任何内容。取消或按 Escape 会丢弃草稿。每次应用的编辑都会成为单次历史操作,因此撤销会恢复操作的先前版本。[/size]

[heading][size=5]支持的操作[/size][/heading]

[size=4]操作面板包含 [b]39 种操作[/b]。一些相关的原版命令共用同一个编辑器,因此解析器能理解的命令形式比面板数量所暗示的更多。[/size]

[heading][size=4]对话和分支[/size][/heading]

[list] [][size=4][b]对话[/b]([i]speak[/i]):NPC 或农场主对话,支持多页、头像、表情、占位符、性别文本和可选 i18n 键。[/size][/] [][size=4][b]消息[/b]([i]message[/i]):显示不带角色头像的消息。[/size][/] [][size=4][b]头顶文字[/b]([i]textAboveHead[/i]):在 NPC 头顶显示临时文字。[/size][/] [][size=4][b]问题[/b]([i]question[/i] / [i]quickQuestion[/i]):创建事件结果、游戏键和快速问题选项。[/size][/] [][size=4][b]Fork[/b]([i]fork[/i]):使用答案、邮件或条件 ID,或特殊事件结果分支到另一个操作序列。[/size][/] [/list]

[heading][size=4]移动[/size][/heading]

[list] [][size=4][b]移动[/b]([i]move[/i]):将演员移动到某个格子,支持朝向、速度覆盖、异步移动以及原版或碰撞感知寻路。[/size][/] [][size=4][b]面向方向[/b]([i]faceDirection[/i]):将演员转向选定方向。[/size][/] [][size=4][b]传送演员[/b]([i]warp[/i]):立即将演员移动到另一个格子。[/size][/] [][size=4][b]高级移动[/b]([i]advancedMove[/i]):根据有序的行走和面向/暂停步骤构建路线,可选循环。[/size][/] [][size=4][b]停止高级移动[/b]([i]stopAdvancedMoves[/i]):立即停止高级移动,或在当前步骤后停止。[/size][/] [][size=4][b]位置偏移[/b]([i]positionOffset[/i]):在不更改演员逻辑格子的情况下应用像素偏移。[/size][/] [/list]

[heading][size=4]演员动画和呈现[/size][/heading]

[list] [][size=4][b]表情[/b]([i]emote[/i]):选择命名表情或输入表情 ID。[/size][/] [][size=4][b]跳跃[/b]([i]jump[/i]):配置跳跃速度以及可选的音效抑制。[/size][/] [][size=4][b]摇晃演员[/b]([i]shake[/i]):在选定持续时间内摇晃 NPC。[/size][/] [][size=4][b]头顶物品[/b]([i]itemAboveHead[/i]):让农场主在头顶举起物品或支持的特殊标记。[/size][/] [][size=4][b]显示帧[/b]([i]showFrame[/i]):显示特定动画帧,可选水平翻转。[/size][/] [][size=4][b]演员动画[/b]([i]animate[/i]):创建帧序列,可编辑时序、循环和水平翻转。[/size][/] [][size=4][b]停止动画[/b]([i]stopAnimation[/i]):停止当前演员动画,并可选选择结束帧。[/size][/] [][size=4][b]精灵偏移[/b]([i]drawOffset[/i]):更改演员的绘制位置,而不移动其格子位置。[/size][/] [][size=4][b]隐藏 NPC 阴影[/b]([i]hideShadow[/i]):隐藏或恢复 NPC 下方的阴影。[/size][/] [/list]

[heading][size=4]场景、摄像机和道具[/size][/heading]

[list] [][size=4][b]更改地点[/b]([i]changeLocation[/i]):在另一个游戏地点继续事件。[/size][/] [][size=4][b]摄像机[/b]([i]viewport[/i]):将视口移动到选定区域,支持地图限制和可选的淡入淡出行为。[/size][/] [][size=4][b]摄像机平移[/b]([i]viewport move[/i]):使用 X/Y 速度和持续时间随时间移动摄像机。[/size][/] [][size=4][b]淡入淡出[/b]([i]fade[/i]、[i]globalFade[/i]、[i]globalFadeToClear[/i]):将屏幕淡出至黑色或淡回清晰。全局淡入淡出还会公开持续时间和继续行为。[/size][/] [][size=4][b]临时精灵[/b]([i]temporarySprite[/i]):创建原版事件精灵动画,包含行、帧、间隔、翻转和图层深度设置。[/size][/] [][size=4][b]放置道具[/b]([i]addObject[/i]):在格子上将物品显示为临时事件道具。[/size][/] [][size=4][b]移除道具[/b]([i]removeObject[/i]):从格子移除临时事件视觉效果。[/size][/] [/list]

[heading][size=4]音频[/size][/heading]

[list] [][size=4][b]播放音效[/b]([i]playSound[/i]):选择或输入音效提示,并从编辑器预览。[/size][/] [][size=4][b]播放音乐[/b]([i]playMusic[/i]):更改事件音乐。预览会话结束后会恢复之前的配乐。[/size][/] [/list]

[heading][size=4]奖励和剧情进度[/size][/heading]

[list] [][size=4][b]给予物品[/b]([i]addItem[/i]):给予物品,可设置数量和品质。[/size][/] [][size=4][b]拿取物品[/b]([i]removeItem[/i]):从玩家库存中移除物品。[/size][/] [][size=4][b]更改金钱[/b]([i]money[/i]):增加或减少金币。[/size][/] [][size=4][b]更改友谊[/b]([i]friendship[/i]):增加或减少 NPC 的友谊点数。[/size][/] [][size=4][b]添加任务[/b]([i]addQuest[/i]):向日志添加任务。[/size][/] [][size=4][b]移除任务[/b]([i]removeQuest[/i]):从日志移除任务。[/size][/] [][size=4][b]设置剧情标记[/b]([i]addMailReceived[/i]):设置或清除事件条件使用的已接收邮件标记。[/size][/] [/list]

[heading][size=4]事件流程[/size][/heading]

[list] [][size=4][b]暂停[/b]([i]pause[/i]):在运行下一条命令前等待。[/size][/] [][size=4][b]允许跳过[/b]([i]skippable[/i]):允许玩家跳过事件。[/size][/] [][size=4][b]禁止跳过[/b]([i]unskippable[/i]):从该点起禁用事件跳过。[/size][/] [/list]

[heading][size=5]编辑器理解的其他命令[/size][/heading]

[size=4]导入器还能理解若干在 39 项操作面板中没有独立条目的命令。[/size]

[list] [][size=4]导入的 [i]speed[/i] 命令会获得结构化的演员速度编辑器。普通移动操作也可以直接设置演员速度。[/size][/] [][size=4]导入的 [i]quickQuestion[/i] 命令通过普通问题编辑器打开。[/size][/] [][size=4][i]fade[/i]、[i]fade unfade[/i]、[i]globalFade[/i] 和 [i]globalFadeToClear[/i] 都使用淡入淡出编辑器,并导出回相应的原版形式。[/size][/] [][size=4]导入的 [i]specificTemporarySprite[/i] 命令有自己的可视化编辑器。目录包含 160 个星露谷物语 1.6.15 例程 ID,其中 148 个具有用于预览的纯数据视觉模拟配方。[/size][/] [][size=4]未知命令存储为 Raw 操作。其原始命令文本会被保留,而不会在导入或导出期间被移除。[/size][/] [/list]

[heading][size=5]问题和分支[/size][/heading]

[size=4]问题编辑器支持三种工作流程:事件结果、游戏键和快速问题。[/size]

[size=4]普通问题可以连接到 Fork 分支。如果该分支尚不存在,Event Studio 可以创建它,并打开一个单独的分支时间轴,使用与主序列相同的操作和编辑器。[/size]

[size=4]Fork 遵循原版行为:它会用目标分支替换脚本的其余部分。快速问题会运行所选答案的操作序列,然后返回主序列。[/size]

[size=4]快速问题使用一种脆弱的原版字符串格式。Event Studio 会拒绝嵌套快速问题和有歧义的分隔符组合,而不是导出游戏可能错误解析的文本。[/size]

[heading][size=5]对话编辑器[/size][/heading]

[size=4]对话以独立页面编辑,而不是一条长事件命令。[/size]

[list] [][size=4]一个对话操作中包含多页。[/size][/] [][size=4]每页可选择头像表情。[/size][/] [][size=4]NPC 头像表中找到的额外头像帧。[/size][/] [][size=4]多行文本输入。[/size][/] [][size=4]支持 17 个原版文本占位符。[/size][/] [][size=4]占位符显示为可编辑标签,而不是原始语法。[/size][/] [][size=4]通过 [b]+ Gender text[/b] 使用原版性别相关文本。[/size][/] [][size=4]可选的 i18n 键,用于导出的本地化。[/size][/] [/list]

[size=4]仍然可以直接粘贴普通的原版对话语法。标签只是编辑辅助;导出的事件会保留正确的原版标记。[/size]

[size=4]画布预览会估算每页的阅读时间,以便对话可以参与时间轴播放。该估算不会写入导出的事件。在游戏中,对话仍会像平常一样等待玩家输入。[/size]

[heading][size=5]预览[/size][/heading]

[size=4][b]画布预览[/b]是快速编辑预览。你可以在时间轴中向前和向后拖动,同时 Event Studio 模拟所选位置的场景。它处理演员移动和朝向、摄像机更改、路线、对话、头顶文字、手持物品、表情、跳跃、摇晃、动画、道具以及支持的视觉效果。[/size]

[size=4][b]游戏内预览[/b]会构建一个真正的星露谷物语事件,并让游戏运行序列中受支持的部分。Event Studio 会拦截可能在存档中留下不必要更改的命令。[/size]

[size=4]奖励操作使用隔离的预览账本,因此你可以测试金钱、库存更改、友谊、任务和邮件标记,而不会永久应用这些值。预览创建的道具和临时视觉效果会被单独跟踪,之前的音乐会在之后恢复,并且该事件会被配置为不将自身标记为已观看。[/size]

[size=4]问题和 Fork 分支也通过预览系统。命名精灵效果使用 Event Studio 的纯数据渲染器,而不是仅仅为了重现视觉效果而运行其原生剧情例程。[/size]

[size=4]如果 Event Studio 无法安全恢复或模拟某条命令,它会在预览期间跳过该命令,并将原因写入 SMAPI 日志。[/size]

[size=4]由于这是 Beta 版本,在测试事件时请备份你在意的存档。[/size]

[heading][size=5]导入现有事件[/size][/heading]

[size=4]Event Studio 可以读取从 [i]Data/Events/<Location>[/i] 加载的最终事件条目。它会在 Content Patcher 修改资源后读取这些条目,因此其他内容包添加或更改的事件也可以被导入。[/size]

[size=4]Event Studio 理解的命令会变成结构化操作。其他任何内容都会保留为可编辑的 Raw 命令文本。[/size]

[heading][size=5]保存和导出[/size][/heading]

[size=4]项目以版本化的 [i].svesproject[/i] JSON 文件存储在模组的 [i]projects[/i] 目录中。[/size]

[size=4]你可以使用普通的保存和另存为、定时自动保存、可选的关闭时自动保存、恢复条目,以及在替换现有项目时的 [i].bak[/i] 备份。[/size]

[size=4]如果你想以后再次编辑场景,请保留项目文件。导出的内容包包含可玩事件,而不是 Event Studio 项目本身。[/size]

[size=4]导出会创建:[/size]

[list] [][size=4][i]manifest.json[/i][/size][/] [][size=4][i]content.json[/i][/size][/] [][size=4][i]i18n/default.json[/i][/size][/] [/list]

[size=4]项目控制其事件 ID、作者、描述、版本和内容包 UniqueID。带 i18n 键的对话操作会自动写入生成的本地化文件。[/size]

[size=4]Fork 分支也可以导出为单独的事件条目,包括以另一个地点为目标的分支。[/size]

[size=4]生成的内容包会写入模组的 [i]exports[/i] 目录。在发布之前,请正常测试导出的内容包,因为最终的 Content Patcher 事件才是玩家实际运行的内容。[/size]

[heading][size=5]界面语言和字体支持[/size][/heading]

[size=4][b]Beta 版本随附英文界面翻译。[/b][/size]

[size=4]Event Studio 使用 SMAPI i18n,因此可以通过 [i]i18n/<locale>.json[/i] 添加更多界面翻译。更改星露谷物语的语言只有在存在匹配的翻译文件时才会更改 Event Studio。[/size]

[size=4]编辑器不使用系统字体。其文本来自捆绑的 Noto Sans Regular 和 Bold 纹理图集,因此这些图集中的字形决定了 UI 可以显示哪些文字系统。[/size]

[size=4]捆绑的图集包含基本拉丁字母、拉丁-1 补充、拉丁扩展-A 和扩展-B 字符、西里尔字母和扩展西里尔字符,以及常用标点。[/size]

[size=4]这覆盖英语以及大多数使用拉丁字母书写的欧洲语言,包括波兰语、德语、法语、西班牙语、葡萄牙语、意大利语、捷克语、斯洛伐克语、罗马尼亚语、匈牙利语和土耳其语。它还覆盖俄语、乌克兰语、白俄罗斯语、保加利亚语、马其顿语和塞尔维亚语西里尔字母,以及若干其他语言使用的额外西里尔字符。[/size]

[size=4]中文、日文、韩文、希腊文、阿拉伯文、希伯来文、泰文以及捆绑图集之外的其他文字系统尚不支持。复杂文字整形也未实现。不支持的字符会显示为 [i]?[/i]。[/size]

[size=4]因此,俄语和波兰语翻译可以直接使用捆绑字体。日语则需要先添加额外字形和字体工作。[/size]

[heading][size=5]设置[/size][/heading]

[size=4]从工具栏打开设置,或按 [b]Ctrl+,[/b]。[/size]

[size=4]可用主题有深色、浅色、午夜和羊皮纸。你可以选择六种强调色预设之一,或输入自定义 [i]#RRGGBB[/i] 颜色。[/size]

[size=4]工作流程设置涵盖默认网格和碰撞叠加层、定时自动保存、关闭时自动保存、自动保存间隔,以及 Event Studio 是否应在游戏内预览后自动重新打开。[/size]

[size=4]主题更改会立即预览。应用会将其保存到 [i]config.json[/i]。取消或按 Escape 会恢复先前保存的外观。[/size]

[heading][size=5]限制[/size][/heading]

[list] [][size=4]可视化编辑器尚未覆盖所有原版事件命令。不支持的命令可以保留为 Raw 操作。[/size][/] [][size=4]编辑器仅供单人游戏使用。[/size][/] [][size=4]画布预览是用于编辑的模拟。星露谷物语自身的事件运行时仍是精确游戏行为的参考。[/size][/] [][size=4]奖励预览会跟踪 Event Studio 所需的值,但不会模拟所有可能的下游库存、关系或任务副作用。[/size][/] [][size=4]地图预览会重现重要的静态图层,但当其他模组添加自定义渲染、异常地图效果、光照或动画时,它们可能与游戏不同。[/size][/] [][size=4]音效发现取决于星露谷物语通过其音效库 API 公开的内容。你可以手动输入精确的提示 ID。[/size][/] [][size=4]尚未测试与每个自定义 NPC、地图、事件框架或高度修改的游戏设置的兼容性。[/size][/] [][size=4]捆绑的 UI 字体覆盖拉丁和西里尔文本,但并不覆盖所有书写系统。[/size][/] [/list]

[heading][size=5]反馈和错误报告[/size][/heading]

[size=4]对于错误报告,请包含足够的信息以重现问题:[/size]

[list] [][size=4]你的 SMAPI 日志。[/size][/] [][size=4]星露谷物语和 SMAPI 版本。[/size][/] [][size=4]你尝试构建的内容。[/size][/] [][size=4]实际发生的情况。[/size][/] [][size=4]如果可以分享,请附上相关的 [i].svesproject[/i] 文件。[/size][/] [][size=4]界面问题的截图。[/size][/] [][size=4]布局问题的分辨率、游戏缩放和 UI 缩放。[/size][/] [][size=4]如果问题看起来与兼容性相关,请列出其他修改事件、地图、NPC、渲染或音频的模组。[/size][/] [/list]

[size=4]反馈不一定是错误报告。我也对你尝试制作的内容、哪些地方节省了你的时间、工作流程在哪里感觉不顺手,以及你希望编辑器以不同方式处理的任何内容感兴趣。[/size]

[line]

[center][i][size=4]由 [b]xzqute[/b] 为星露谷物语模组社区制作[/size][/i][/center]

[center][url=https://ko-fi.com/A0A4JXP3F][img width=144,height=36]https://storage.ko-fi.com/cdn/kofi3.png?v=6[/img][/url][/center]