项目概述
A(i)dol 是 CMU ETC 2026 秋季学期项目,面向已经在做二创(剪辑、同人、OC、翻唱)的偶像与动漫粉丝。玩家从一张试镜邀请开始,经过面试、造型、录影,一步步把“自己的偶像”养到出道;AI 生成流水线负责形象、声音、音乐和视频,玩家的输入会影响这些结果。出道后进入叫 World 的竖屏信息流,在那里获得粉丝。
我是两名 Unity 前端之一,负责把团队定下的系统规则变成可运行的数据、状态和界面流程,并给内容同学做配置和调试工具;后端与 AI 生成管线由队友负责。项目仍在开发中,本页内容基于 2026 年 10 月 13 日前的工作记录。
案例一:玩家流程与状态门控
游戏是一条有分支的主线:登录 → 面试 → 宿舍 → 造型 → 录影 → 夜间剧情 → World 查看成片。我在 9 月中旬先搭了这一层:
- 进度与持久化架构:进度枚举、一次性事件标记、本地 JSON / PlayerPrefs 存储、存储接口与后端存储适配,以及统一的 API 请求出口。
- 场景路由与主线检查点:剧情场景统一进出口,主线检查点决定玩家能进哪些场景;地图上的地点状态和任务 UI(完成 / 当前 / 锁定)、通知红点都由同一份进度驱动。
- 9 月 23 日的 V1 把登录、面试、造型、录影、夜间剧情和 World 成片查看串成了第一条可以从头玩到尾的流程;之后的版本在此基础上调整顺序(例如录影改为从宿舍经地图进入)。
把“玩家现在在哪、能去哪”收敛成一份状态,是后面所有系统的前提。各界面只读状态、不各自维护进度,之后几次改流程顺序都没有动过界面代码。
案例二:体力与造型规则落地
团队定了资源规则:Dols(软通货)、Diamonds(硬通货)、Stamina(体力,初始 100);主线的面试 / 造型 / 录影分别扣 5 / 20 / 20。我负责把规则接进数据配置、UI 状态和后端契约:
- 必扣事件只消费一次:用一次性标记保证主线消费不重复。
- 主线体力预留:可选消费必须给尚未完成的主线留出预算,玩家不会因为在支线花光体力而卡住主线。
- 造型室状态机:Intro → TierSelect → Wardrobe → Generating → Ready → Reveal → Feedback → Exit。套装与上下装互斥 / 覆盖、8 槽完成条件(早期版本为 7 槽)、付费解锁确认、Surprise 抽取与收据规则,都由数据表驱动——12 项肤色与 334 项造型来自团队的美术与数据表,我负责目录导入、配置、界面和服务对接。
- 生成与揭晓:发起生成请求、异步轮询结果、立绘与头像回填和缓存;完成后进入手指擦雾揭晓(可跳过,擦除阈值是可配置参数),之后可查看立绘大图。
案例三:生成等待体验的迭代
AI 生成有等待时间,需要一个机制盖住这段等待。最初的方案是一个 60 秒三消小游戏,我完成了它的原型:消除组数对应 Low / Mid / High 三档评级,奖励按档位发放,最多 3 局、每局扣 5 体力,多局取最佳评级只补奖励差额。
9 月 29 日对 37 位 K-pop 粉丝做了第一次试玩;10 月 7 日团队决定把 World 扩为核心机制;10 月 8 日的版本删除了三消,等待期改为引导玩家浏览 World,生成完成后切换揭晓按钮、状态卡和通知。World 的常规解锁时机也相应从夜间剧情完成调整为造型完成。我按这些决定完成了机制切换。
三消是一个做完、测过、然后被团队决定砍掉的原型。对我来说这是整个项目里最有价值的一次迭代:原型做出来的成本足够低,“换”才能是一个轻松的决定。
案例四:内容生产工具
- World Studio:World 是一个可以从任意场景打开的独立预制体,保持页面与播放器状态。World Studio 集中提供账号、视频、评论数据的导入与校验(由数据库和 JSON 管理),预制体构建与迁移,运行时打开 / 关闭、翻页与调试。内容同学不进代码就能填充信息流。
- UI 构建工具:从资源批量构建界面,重建时保留美术手调的布局与引用;后续构建只补缺失的面板和空引用。宿舍主场景 V2 的手调位置就是这样同步回工具的。
- 主题换皮配置:礼包页与合同页需要按不同公司(SOM / ERIS)换底图,原来文本是死坐标。我把文字、签名、印章、条款区域做成归一化配置,按底图比例布置,并提供预览 / 重排的编辑器工具。
- Login 与邮件导出前端:玩家名字 / 可选邮箱输入与本地校验、会话参数、成片 ready 后的导出入口与请求状态反馈;邮件发送服务由后端负责。
交互与多端适配
- World 的竖滑翻页、暂停、按钮 / 双击点赞、评论抽屉;评论点赞与本局发送的评论为本地状态,不是多人服务。Following、搜索、Shop、发布等入口在当前版本仍是占位。
- 手机与平板采用不同的视频适配策略避免拉伸;RootHeightFitter 与独立的 World 缩放策略处理两种比例的布局。测试基线为 Pixel 手机与 Samsung 平板。
- 对 Pixel 6 的触屏输入、安全区域、Canvas 缩放等做过一轮审查并列出真机测试清单;Web 发布与 iOS 内测做过可行性评估,尚未实施。
开发过程中使用了 AI 辅助编码。项目主页:projects.etc.cmu.edu/aidol