开发者利用AI为游戏角色生成动态、情感化的互动反应,展示AI在游戏创意开发中的应用潜力。
上周末我陷入了一个兔子洞:如果游戏角色不仅仅有脚本化反应,而是真的能感受到什么呢?
不是"如果生命值 < 20 就害怕"那种感受。而是像这样:一个沉闷的内向者,当有人持续善待他时会慢慢敞开心扉,但被背叛时会狠狠反击。一个韧性十足的健身教练,听到侮辱时几乎不会皱眉。一个害羞的图书馆员,从简单的关爱中获得最深的喜悦。
所以我构建了 Persona World —— 一个像素艺术村庄,12 个 AI 角色在其中生活、漫步、互动,并发展真实的情感状态。
每个角色在村庄里走动,当他们相遇时,会根据自己的性格自主决定做什么。你可以看到他们当前的情感浮动在头顶。
点击任何角色可以检查他们的内心世界:他们的 VAD(效价-唤醒度-支配度)情感状态、性格特质,以及他们对其他每个角色的看法。
每个角色都有一个 HEXACO 人格档案 —— 六个维度,塑造他们对一切的反应方式:
Openness —— 创意型 vs. 常规型
Conscientiousness —— 自律型 vs. 随性型
Extraversion —— 外向型 vs. 内向型
Agreeableness —— 合作型 vs. 竞争型
Neuroticism —— 敏感型 vs. 沉着型
Honesty-Humility —— 真诚型 vs. 实用型
当发生交互(称赞、嘲弄、背叛等),一个情感引擎使用 9 维认知评估模型计算角色的反应。结果不是一个简单的标签 —— 它是 VAD 空间中的连续情感状态,根据性格、当前心情和历史而变化。
比如,"Nyx" —— 一个内向、敏感的诗人(N=0.85,E=0.15)—— 对背叛的反应是整个村庄中最激烈的。同时"Rex" —— 一个韧性强的外向教练(E=0.95,N=0.25)—— 对同一事件几乎没有反应。
让我惊讶的是观察涌现的动态:
性格塑造一切。同一个行为根据接收者的不同会产生完全不同的结果。"关爱"让 Nyx 感到真诚的喜悦(她很少获得积极关注),但对已经情感稳定的 Miko 几乎没有影响。
关系会积累。角色追踪其他人对他们的待遇方式。随着时间推移,从某人那里获得大部分积极行为的角色会开始更倾向于反过来给予积极行为。消极螺旋也会发生。
心情缓慢,情感迅速。单次侮辱不会毁掉角色的一天。但持续的消极会逐渐改变他们的基准心情,这会给所有未来反应着色。
前端:React 19 + Canvas 2D + TypeScript
情感引擎:molroo SDK —— 处理性格建模、认知评估和 VAD 情感计算
渲染:HTML Canvas 上的像素艺术精灵
托管:Cloudflare Pages
情感引擎做了繁重的工作。每个 interact() 调用发送一个带有 9 维评估向量的行为,并返回角色的新情感状态 —— 包括离散情感标签、VAD 值、心情变化,甚至躯体反应(像"胸部紧绷"或"温暖的光辉"这样的身体感觉)。
实时演示:persona-world.pages.dev
源代码:github.com/devjiro76/persona-world
整个项目都是开源的。你可以把 12 个角色替换成自己的(只需编辑 src/data/personas.ts),改变他们的性格,或添加新的交互类型。
要自己运行它,你只需要一个 API 密钥:
git clone https://github.com/devjiro76/persona-world.git
cd persona-world
npm install
cp .env.example .env # add your API key
npm run dev
应用会在首次运行时自动创建一个世界并初始化全部 12 个角色。
我很好奇 —— 有没有人在游戏或模拟中尝试过连续情感模型?我见过的大多数 AI 角色系统都使用离散状态或简单情感。VAD 方法感觉更自然,但我仍在找边界情况(惊讶几乎不可能触发,"挑战"会产生麻木而不是决心)。
很想听听你的想法或建议。