功能
为 Unreal 而生,
从头到尾。
uVersion 覆盖一个 Unreal 工作室的完整周期:从二进制存储到活动仪表盘,中间还有 checkin 前校验和细粒度角色。以下就是盒子里的东西。
01
工作流
基于 lock,没有合并的意外。美术始终知道谁在动什么。
独占锁定
编辑前必须 checkout。不会再有"我在同一个 .uasset 上花了两小时和你撞车"。cross-workspace:即便是分布式团队也能看到谁持有 lock。
智能自动 checkout
一旦修改可写资产,Unreal 插件就自动加锁。不必再在源代码管理里双击。
本地 changelist
把你的 checked-out 文件分组成多个独立的提交(Perforce 风格)。按 workspace 持久化。
lock release 请求
如果 Marie 两天前锁定了一个资产而 Alex 需要它,他可以发送一个 release 请求,在应用内通知 Marie。
多账号、多服务器
为多家工作室工作的自由职业者?一键在账号与服务器之间切换,并用不同账号同时开着两个 Unreal 编辑器。
会清理的 sync
一次完整的 sync 会在本地移除服务器端已删除或已重命名的文件(与 Perforce 对齐),而绝不触碰你已修改或已锁定的文件。
02
Unreal 插件
原生的 Source Control Provider,而非外部包装。
Source Control Provider
Connect → uVersion。全部标准 UE5 工作流:在 Content Browser 中 checkout、checkin、revert、history。
可视化 Blueprint diff
在 UE 内直接比较不同修订的 Blueprint。临时文件位于 Saved/Diff/,适用于任何提交。
Redirector 清理
每次 checkin 前,插件会修复重定向器、保存被修改的包,并将其全部纳入提交。构建时不再出现 "Redirector still present"。
自动 reconcile
打开项目时,可写但未锁定的 .uasset 会自动 checkout。包含对 Content/ 与 Plugins/*/Content/ 的扫描。
03
校验
10 条内置规则,可按项目配置。错误拦截,警告提示。
Blueprint 编译
无头 Kismet 编译器检查提交中的每个 Blueprint 都能编译。出错 → checkin 被拦截。
命名规范
按资产类型的前缀(BP_、T_、M_、SM_…)。正则可配置。
贴图尺寸
当贴图超过设定分辨率,或不是 2 的幂时,发出警告或拦截。
材质复杂度
统计着色器指令数。超过阈值即警告或报错。
导入设置
法线贴图上的 sRGB 贴图、UI 贴图的压缩等等。一切皆可配置。
缺失依赖
检测被已提交 Blueprint 引用、却不在提交中的资产。CI 中不再出现 "package not found"。
dry-run checkin
不实际提交即可模拟 checkin,提前查看哪些会通过、哪些会失败。在大规模 submit 前很实用。
按项目的策略
通过 .uversion/rules.json 按项目启用或禁用每条规则,并调整阈值与严重级别(error / warning),随 repo 一同版本化。
04
协作
评论、reviews、watchlist、通知。保持步调一致所需的一切。
线程化评论
按提交或按文件的评论,呈树状。支持 Markdown。
Reviews
Approve / Changes Requested / Pending。按路径设卡,在某些文件夹上要求合并前经 lead 批准。
Watchlist
监视某个文件或 glob(Content/Characters/**)。只要有提交触及它就通知。
应用内通知
桌面客户端里的铃铛。直接跳转到相关的提交、modification request 或文件。
modification request
请队友修改某个资产,可指定目标文件也可不指定。每个请求都会成为 Production 看板(第 05 节)上的一张卡片。
Webhooks
Discord、Slack、Teams 或自定义格式。提交、lock、修改的通知。用于周期性摘要的调度器。
05
制作
把制作管理放进 VCS。一个卡片与真实资产和提交相连的 kanban 看板。
kanban 看板
由 lead 配置的列(To Do / In Progress / Review / Done,或用于美术的 Blockout / WIP / Review / Final)。拖放、优先级、标签、多个负责人、截止日期、评论。
与内容相连的卡片
相较 Trello 或 Jira 的真正差异:把资产与提交关联到卡片。从文件右键 → "添加到任务"。制作就发生在文件所在之处。
checkin 时自动 review
当关联资产被提交时,提交会附加到卡片,卡片随即移到 Review 列。看板无需任何手动更新。
My tasks,全部项目
把分派给你的任务跨所有 repo 汇聚到一处。一键跳到相关项目的看板。
统一的请求
modification 请求与 lock 释放请求都是看板上的卡片。单一流程,不再有独立的 "Requests" 分栏。
附件与封面
把参考图片附加到卡片,并配一张封面图。按内容寻址存储,和其余部分一样去重。
06
管理
内嵌于客户端的面板。8 个角色、glob 权限、完整审计。
8 个可配置角色
admin、lead、artist、programmer、qa、user、viewer、playtester。细粒度 capabilities(force_unlock、approve_changes、manage_rules…)。
glob 权限
对模式的 Read/Write/Deny(Content/Audio/**)。优先级 DESC,默认 Write。Admin 绕过。
审计日志
所有敏感操作:login、force unlock、obliterate、角色变更、权限修改。可导出。
Lead 仪表盘
按用户的 7 / 30 / 90 天 KPI。看出谁被卡住、谁在做哪个功能。
存储指标
去重比、增长、按大小排列的 top files。可配置的垃圾回收(retention + min revisions)。
Obliteration
将某文件从历史中永久删除(误加入的机密资产)。每批 500 个、进度事件、针对孤立 chunk 的定向 GC。
在你的基础设施上,无需公开 CA
自己托管服务器。自签名 TLS + TOFU 固定(trust-on-first-use):客户端在首次接触时记住服务器指纹,无需购买任何公开证书颁发机构。
07
分发与构建
在项目之间共享内容,发布内部试玩构建。
跨项目分发
带 path patterns 的源 → 目标链接(Plugins/uVersion、Content/Shared/**)。Publish 复制文件,chunk 被共享(去重)。
Internal playtesting
从桌面客户端发布已打包的构建。playtester 角色从 Games Page 下载。版本、config(DebugGame/Development/Shipping)、平台。
内置 Package Game
从客户端运行 RunUAT BuildCookRun。通过 EngineAssociation 自动检测 Engine Path。以干净方式停止来取消构建(Windows 上用 taskkill /T)。
客户端自动更新
Tauri updater 插件、RSA 签名的安装包、由服务器提供的 latest.json 清单。对团队透明的更新。