
犯罪心理分析专家
夜之城的每个NPC都拥有自己的思想和完整的心理档案,这些塑造了他们的身份并决定了他们的行为。你还能通过神经医师芯片获得(某种程度上)读心的能力——要我说,这技术真是顶尖。
查看大图[size=5][b]描述:
[/b][/size]
夜之城到处都是并非真正的人的人。他们有阵营、有武器、有巡逻路线。朝其中一个开枪,它的反应和上一个一模一样,因为在表象之下只是一个空壳,就像游戏里大多数 AI 一样:要么是无头苍蝇,要么是 T-800 终结者,没有中间地带。
The Alienist 增加了一层心理学的底层。不是人格[i]标签[/i]——而是一颗运转中的心智,建立在心理学家用于真实人类的工具之上,产生行为,而非描述行为。
[heading]扫描某人:[/heading]
把你的扫描器对准任何人,The Alienist 就会给你一份评估。
[quote][b]焦虑 94 · 大胆 89 · 审慎 85 | IQ 105 · 偏执[/b]
靴子换过两次底。同一双靴子。确信有人在盯着自己。并没有。渴望安慰,却不会开口去要。[/quote]每一行要么在对方身上看得见,要么在他们脑子里。超过一千行词汇,同一个 NPC 读出来永远一样——被描述的是他们的心智,不是掷骰子。
有些发现并不令人舒服:
[quote]本该早就出人头地了。
爱上了一个不知道的人。
有些事发生了。它仍在他们身上发生着。
终于有人好好地注视着他们了。[/quote]最后一条,是他们注意到了[b]你[/b]。
[b]这些文本主要受《神探夏洛克》《超感神探》和《别对我撒谎》等剧集启发。
你是 The Alienist,在观察陌生人。
[/b]
接下来给各位网络行者来点技术内容!
[heading][size=5]这里面到底有什么?[/size][/heading]
四套真实的测量工具
[list]
[][b]HEXACO[/b]——六个人格因素,二十四个侧面[/]
[][b]Schwartz 的 PVQ[/b]——十种基本人类价值观[/]
[][b]ECR[/b]——依恋风格,基于焦虑与回避两个轴[/]
[][b]自我决定理论[/b]——自主、胜任与关联作为活的需求[/]
[/list]外加[b]黑暗三角[/b]、[b]情商[/b],以及[b]Klinger 的当前关切理论[/b],用来描述一颗心智此刻在追求什么。
所有这些共同塑造了一个 NPC 是谁,以及它在游戏中如何回应你。
[b][size=5]IQ 分数:[/size]
[/b]
每个 NPC 也有一个 IQ 分数;这就是 The Alienist 对智力的建模方式,以及它实际的作用:
每个 NPC 都有一个,它不是伤害修正值。
智力决定了一个人其他一切特质呈现出来的[b]分辨率[/b]。聪明的心智能充分表达其心理。迟钝的心智则以粗糙的方式表达同样的心理——特质都在;只是它们来得迟钝而滞后。
让这套机制成立的纪律是:[b]智力缩放的是保真度,而非有利度。[/b]聪明会把糟糕的档案呈现得和优秀档案一样充分,所以智力永远不会悄悄变成“当 NPC 更在行”。
它还决定了一个人走完下面这个循环的速度,这就是为什么敏锐的对手会真正在思维上胜过你,而迟钝的对手可以被摆弄。
十五种心理构念
在人格与行为之间,有一层构念——那些在事情发生时真正会动的东西:
[quote]镇定 · 威胁敏感度 · 挫折耐受度 · 冲动控制 · 自我脆弱性 · 社会支配性 · 亲和驱力 · 共情共鸣 · 审议 · 承诺坚持 · 从众压力 · 相互依存 · 新奇 · 习惯化 · 恢复[/quote]这些没有一项是编写好的或像胡言乱语那样直接敲进去的。一个 NPC 的镇定源自他们是谁,并会在持续火力下崩溃。他们的挫折耐受度决定了一个计划能否撑过接触。
[size=5][b]情绪:[/b][/size]
重新载入一个存档,再走一次那道门口。它不会和上次一样。
NPC 是同一个人——同样的人格、同样的价值观、同样的经历。但他们处在不同的[b]情绪[/b]中,而情绪会改变这个人呈现的一切:多快投入、注意到什么、能容忍什么、在哪里神经崩断。
一共有二十种。不过,一颗心智并不是从列表里被分配一种情绪——情绪是一个[i]位置[/i],它会移动。它朝那个人静止时所处的位置漂移,被发生的事推动,而你所看到的名称,只是它此刻最接近二十种中的哪一种。
这意味着它无法瞬移。没人会在同一个箱子后面十秒内从专注变成惊恐再变成冷漠。它会移动,而你可以看着它移动。
一颗心智的起始位置每次生成时都会重新设定。所以守着那条巷子的帮派成员,在一次运行中是个谨慎的麻烦,在下一次中则是个过度自信的麻烦,你无法通过重复来学会一场遭遇。
我做了这个特性,就是为了打破“摸透 AI 之后游戏变得乏味”的常见循环。
[b][size=5]世界描述符:[/size]
[/b]
这是我在 Stalker Gamma、Cyberpunk 2077、SPT 和 ARMA Reforger 中测试 The Alienist 之后,最喜欢的一部分。我得出结论:它们感觉都一样,而这说不通。当然,心理是普适的。[b]世界不是。[/b]在 1916 年形成的心智,和 2077 年形成的心智不同;在 Stalker 世界里形成的心智,不同于 Cyberpunk 世界里形成的心智,也不同于 Skyrim 世界里形成的心智。因为生存条件不同——什么会杀死你、伤口是否可存活、你是否自愿来到这里、是否有人会来找你、死后是否有任何东西。
所以引擎并没有把夜之城硬编码进去。它接收[b]二十二项条件[/b],由游戏来声明它们:
[quote]死亡的终局性 · 医疗可及性 · 匮乏 · 意志 · 可替代性 · 社会流动性 · 权威合法性 · 正义 · 秩序 · 视野超越性 · 集体主义 · 经济压力 · 技术中介 · 威胁来自人类 · 情感许可 · 知识可及性 · 美 · 传奇潜能 · 机构支持 · 成长期安全 · 环境强度[/quote]夜之城把[i]医疗可及性[/i]设为高,把[i]死亡的终局性[/i]设为低——创伤小组存在,死亡只是一个订阅档位。它把[i]可替代性[/i]设为高,[i]正义[/i]设为低,[i]技术中介[/i]设为接近最高。
[b]没有任何东西会声明一个特质。[/b]世界陈述条件,而每颗心智自行决定这些条件对它做了什么。同一座城市会产生一个殉道者和一个犬儒,因为两种不同的档案遇到了同样的事实。
其中五项条件不是这样运作的。它们描述的是[b]在有任何人在场做出反应之前[/b]发生了什么——在某人学习什么有效时,什么得到了奖励,是否有人保护他们安全,他们是否被教过任何东西。这些不会被评估。它们从一开始就偏向这个人会成为谁。
改变这二十二个数字,你就得到了一个不同世界的人,其他一切都不需要改。这就是为什么它是中间件,而不是一个碰巧能在别处编译的 Cyberpunk 模组。
[b][size=5]六个相互竞争的领域:[/size]
[/b]
一颗心智不是一个声音。六个系统独立评估每一刻,各自想要不同的东西:
[table][tr][th]领域[/th]
[th]询问[/th]
[/tr]
[tr][td][b]威胁[/b][/td]
[td]那危险吗?[/td]
[/tr]
[tr][td][b]地位[/b][/td]
[td]我的位置受到挑战了吗?[/td]
[/tr]
[tr][td][b]归属[/b][/td]
[td]谁是我的人,他们在哪?[/td]
[/tr]
[tr][td][b]自我调节[/b][/td]
[td]我能稳住自己吗?[/td]
[/tr]
[tr][td][b]战术[/b][/td]
[td]地形允许我做什么?[/td]
[/tr]
[tr][td][b]集体[/b][/td]
[td]群体在做什么?[/td]
[/tr]
[/table]
[b][size=5]仲裁者:[/size]
[/b]
六个系统,一具身体——而一具身体会同时做几件事。双腿、姿态、武器、眼睛、声音。每一部分一次只能做一件事,但它们不必做[i]同一件[/i]事。
[b]仲裁者[/b]就是解决这个问题的部件,也正是它让这成为一颗心智,而不是一张规则表。一个士兵可以用腿后撤,用姿态守住角度,持续开火,盯住侧翼并喊出敌情——五个系统同时得到它们想要的东西,因为没有一个想要他身上的同一个部位。
一个选择还必须经受住接触。一旦一颗心智投入某事,它就会坚持——一个决定后撤的 NPC 不会因为数值稍微变动就每半秒在前进和撤退之间闪烁。打破承诺需要真正的理由,而它有多容易被打破,是他们自身的一部分。
当两个系统真的碰撞时,一个获胜,另一个被明显压制。人格就是在那里显现的:一个高支配性、冲动控制差的 NPC 会输给自己恐惧的争论,向你冲锋。一个有纪律的则会守住,而你能看出他并不喜欢这样。同样的情境,同样的阵营,不同的人——而差别不是掷骰子,而是他身上的哪一部分赢了。
同时运行在三个时间尺度上
[list]
[][b]快[/b]——当下。情绪、唤起和恐慌把人推离自己的基线,持续多久算多久。[/]
[][b]中[/b]——这场遭遇。在这一切发生时他们是谁。[/]
[][b]慢[/b]——生涯。[b]可塑性[/b]会永久改变某个人根本上的身份,而它必须靠挣得。[/]
[/list]最后一项是其他 NPC 模组都没做的部分。一个活得足够久的 NPC 之后就不再是同一个 NPC。不是增益,不是军衔——而是另一个人,拥有不同的逃跑阈值。
[b][size=5]可塑性:[/size]
[/b]以上一切都描述的是某人此刻是谁。[b]可塑性[/b]是改变这一切的层。
发生在 NPC 身上的事会改变他们实际的基线人格——不是增益,不是军衔,不是标记。创伤会累积,不会重置。足够长时间的持续战斗会让一颗心智成为老兵,而这里的老兵意味着他们的阈值真的移动了:过去让他们害怕的东西不再让他们害怕,换成了别的东西。
心智抵抗这一点的速度各不相同,因为抵抗本身就是他们是谁的一部分。两个人在同一场交火中不会以相同的幅度改变。
一个活过足够多的 NPC 之后就不再是同一个 NPC。这就是我的主张,而且它是字面意义上的——除了下面一个诚实的边界。
[size=5]剧情角色(已经拥有自我的人):[/size]
以上一切都是关于引擎生成的心智。具名角色是相反的问题:他们已经存在,而一个为强尼·银手凭空发明人格的系统是误解了自己的职责。
所以[b]三十六个剧情角色是手工编写的[/b]——竹村、强尼、朱迪、帕南、里德、华子、织田、罗格、瑞弗、克里、米丝蒂、杰克、伊芙琳,以及其他角色。他们的生成被完全跳过。他们的 HEXACO、依恋风格、价值观和智力都是按照游戏已经确立的他们是谁来编写的,每一个都附有为什么用这些数字而不是其他数字的理由。
竹村的档案之所以存在,是因为他的忠诚是一种价值观,不是一种特质。织田的档案之所以存在,是因为一个在角色之外没有身份的人,在非传统性上得分接近零,在从众性上得分接近最高——而这就是[i]为什么[/i]他以那种方式战斗,而不是事后贴上的标签。
编写好的档案会得到生成档案没有的东西:
[b]边界。[/b]永久改变仍会发生,但有限度,所以编剧的角色不会在一次游玩过程中漂移成另一个人。他们可以被事件留下印记,但不会被事件重写。
在早期扫描他们,然后在战役后期再扫描一次,你就能看到游戏中的事件对他们做了什么。
[size=6]流式加载的代价,直说:[/size]
Cyberpunk 会不断把 NPC 流入和流出。走两个街区,你身后的人群就没了——不是隐藏,是[i]没了[/i],而替代他们的人从游戏的角度看是全新实体。
这给任何持久化设下了硬边界,而我宁愿在这里说清楚。
[b]随机 NPC 的心智只在他们被加载时存在。[/b]以上一切在那整个时间段内都是真实且运行的——整场交火、一栋建筑、一个任务、一次横跨城区的追逐。当他们被流式卸载时,那颗心智就没了。在原来位置生成的另一个人是新人,不是同一个人回来。
所以可塑性是真实的,它在 NPC [i]一生之内[/i]是真实的,而不是跨越一生。一个已经打了四分钟这场战斗的士兵,可测量地不再是刚开始时的他。明天再来,他就不在那里,也没有改变过。
[b]确实会留存的东西:[/b]
[list]
[][b]残余[/b]——每颗心智生成时都是新鲜的,所以城市会不断产生已经对你不对称的人。个体不会持久;现象会。[/]
[][b]原型与城区[/b]——同类型重生的 NPC 从相同的起源生成,所以即使个体不持久,人口仍保持连贯。[/]
[][b]剧情角色[/b]——上面那三十六个另行处理。他们按身份而非实体注册,所以流式加载不会碰他们。[/]
[/list]这是游戏本身的属性,不是 Alienist 引擎的属性。在一个会保持 NPC 存活的宿主中,同一段代码会产生终生弧线——持久层就是为此而设的。Cyberpunk 不是那样的宿主,假装它是就是不诚实。
[b][size=5]OODA 循环:[/size]
[/b]
博伊德循环,得到正确实现:观察、定向、决策、行动。在战斗中,循环更快的心智会进入另一方的决策内部。智力、镇定和损伤都会改变循环速度,所以敏锐的 NPC 会真正在思维上胜过迟钝的,而不是掷骰赢过他们。
[size=5][b]损伤:[/b][/size]
化学和机械改变的心智,其中改变是心理层面的,而非属性惩罚。
[b][size=5]小队与集体行为:[/size]
[/b]NPC 会响应自己的队伍,而不是作为孤立个体行动。士气会传播。恐慌也一样。
[size=5][b]条令:[/b][/size]
平民、街头、执法、军事——不是阵营列表,而是对某人在压力下被训练做什么的建模。
[b]容量、评估治理、个体性漂移、友军误伤、探究、世界评估[/b],以及大约五十多个源文件。
[b]这里没有任何东西是手写的。[/b]没有一张表说帮派成员好斗、公司人冷漠。Alienist 引擎不知道 Maelstrom 是什么——它知道心智是什么,剩下的由世界告诉它。这就是为什么一个恐惧的 Valentino 和一个恐惧的公司保镖行为不同,而没有人编写过其中任何一个。
[heading][size=5]残余:[/size]
[color=#e4e4e7][size=2]携带[/size][/color][b][color=#e4e4e7][size=2]残余[/size][/color][/b][color=#e4e4e7][size=2]的 NPC 在心理上[/size][/color][i][color=#e4e4e7][size=2]对这场遭遇是不对称的[/size][/color][/i][color=#e4e4e7][size=2]——他们已经认识 V。[/size][/color][/heading]
其原则是[size=5]铁血战士[/size];当你以为自己正在狩猎时,威胁早已在注视着。
残余是那颗心智的一部分,与他们一同形成。夜之城是一个人们带着某种东西抵达战斗的地方——一种执念、一种怨恨、一种因曾经活下来一次而学到的套路——而引擎生成它的方式,和生成其他一切的方式一样,从心理学向外展开。
[b]这不是一个对手系统。[/b]没有具名中尉,没有晋升阶梯,没有怨恨值,没有过场动画提醒你做过什么。没有人获得头衔。残余是一种[i]心理状态[/i],它改变那颗心智如何战斗:
[table][tr][th][/th]
[th][/th]
[/tr]
[tr][td][b]痴迷[/b][/td]
[td]执念。不会撤退。士气无法被击溃。[/td]
[/tr]
[tr][td][b]血仇[/b][/td]
[td]士气反转——崩溃让他们[i]更加[/i]富有攻击性[/td]
[/tr]
[tr][td][b]预感[/b][/td]
[td]精于计算,反侧翼,从不被近身[/td]
[/tr]
[tr][td][b]萦绕[/b][/td]
[td]更早警觉,且在火力下异常冷静[/td]
[/tr]
[tr][td][b]破碎[/b][/td]
[td]一触即发:彻底崩溃,或暴走[/td]
[/tr]
[tr][td][b]幸存者回声[/b][/td]
[td]从曾经活下来一次中学到的战术套路[/td]
[/tr]
[tr][td][b]警示[/b][/td]
[td]预先占据位置,并强化周围的盟友[/td]
[/tr]
[tr][td][b]放过[/b][/td]
[td]认出后脱离,并带走自己的朋友[/td]
[/tr]
[tr][td][b]标记[/b][/td]
[td]比任何活物都更快认出你,然后逼近[/td]
[/tr]
[/table]总共四十二种,与依恋风格、价值观和黑暗三角相关联——所以一颗心智[i]能[/i]携带哪种残余取决于那颗心智。其中一些完全针对其他 NPC,和你毫无关系。
你通常会在不知情的情况下遇到一个。迹象是行为上的:某个本该崩溃却没有崩溃的人,某个已经守住了你正要走的那个角度的人。当残余接近时,The Alienist 会警告你:
[quote][b]THE ALIENIST :: 这里有人一直在找你[/b][/quote]它不会说是谁。扫描他们,它会告诉你为什么。
就像猫鼠游戏,只不过你是老鼠(至少在游戏早期)
[heading]他们听起来也不一样:[/heading]
The Alienist 根据承载心智的不同,选择 NPC 使用游戏自带战斗语音中的哪一句。恐慌的平民会求饶。大胆的会咒骂。认出你的心智又会说出不同的话。
没有新音频——还是你已有的那些录音,由心理学来选择。
[heading]需求[/heading]
Cyberpunk 2077 2.3+ · RED4ext · Cyber Engine Tweaks · redscript
[heading][size=5]安装:[/size][/heading]
使用 Vortex、Mod Organiser,或把内容拖入你的 Cyberpunk 2077 文件夹。四个文件,三个文件夹;路径已经是对的。
[size=5][b]卸载:
[/b] [/size]
删除这四个文件。不会写入你的存档,不会替换任何游戏文件,不会覆盖任何方法——扫描器包装会先调用原版再追加。
[heading]设置[/heading]
CET 覆盖层 → [b]Alienist[/b]:
[table][tr][th]选项卡[/th]
[th][/th]
[/tr]
[tr][td][b]常规[/b][/td]
[td]启用、环境人群、NPC 注册速度[/td]
[/tr]
[tr][td][b]子系统[/b][/td]
[td]感知、实时扫描读数、扫描器档案、逃跑[/td]
[/tr]
[tr][td][b]残余[/b][/td]
[td]敌意、生成[/td]
[/tr]
[tr][td][b]难度[/b][/td]
[td]NPC 致命性[/td]
[/tr]
[tr][td][b]诊断[/b][/td]
[td]崩溃隔离[/td]
[/tr]
[/table][b]繁忙城区卡顿?[/b]常规 → NPC 注册速度 → 温和。
[b]觉得是 The Alienist 让你崩溃?[/b]诊断 → 把五项全部关闭。每个人仍保留他们的心理学;模组完全停止写入游戏。如果崩溃继续,那就不是这个模组。如果停止,就一次重新启用一项来找出是哪个。
这个开关存在是因为我用过它。我就是这样确定我花了一整晚追查的崩溃不是我的。
[heading]性能:[/heading]
我在一次全新游玩中测试 The Alienist 大约一百小时;性能影响可以忽略不计,只有在人群密集或长时间行走时才会被注意到。The Alienist 也有每帧硬上限。当城市变得繁忙时,The Alienist 会优雅地落后,而不是占用你的帧时间。
[heading]The Alienist 与其他 AI 模组:
[color=#e4e4e7][size=2]这是人们最容易误解它的地方,所以值得直接说清楚。[/size][/color][/heading]
The Alienist 不与你的战斗 AI 模组竞争。[b]它位于它们之上并使用它们。[/b]
其他每一个 AI 模组都占据同一层:NPC 做什么。更好的掩体选择、更聪明的侧翼、更准的枪法、新的行为树。The Alienist 只问一个问题:NPC [i]是谁[/i]?
然后驱动你已经拥有的模组,作为那个人行动的手段。
所以一个给 NPC 更好战术移动的模组不会与 The Alienist 冲突。它会成为一种心理学可用的词汇。安装一个,同样的人格就会通过更广泛的行为来表达自己,因为他们有更多东西可以去够。
实际后果:[b]它是加法,从不是减法。[/b]没有任何东西被拆掉,没有任何东西被覆盖,你的 AI 栈越有能力,心理学就有越多东西可以用它来说。它在 STALKER GAMMA 中运行过——数百个模组深度,其中几个直接重写了 AI——并在首次加载时就能工作。它也能在启用 SAIN 模组的 SPT 上运行。
技术上说,它只添加文件,不替换任何东西:没有 .archive 编辑,没有世界编辑,没有 TweakDB 覆盖,没有替换方法。
已在最新版本的 Cyberpunk 2077、CET、RED4ext 和 redscript 上,以及一个带有路径追踪的大量模组安装环境中测试过。如果你在最小配置上遇到问题——请附上你的 CET 日志提交 bug 报告。
[heading][size=5]它不做什么:[/size][/heading]
[list]
[]不触碰任务对话或脚本化场景。[/]
[]不重写战斗 AI,也不需要。它决定是谁在做决定;游戏的 AI——以及任何改进它的模组——是那个人行动的方式。[/]
[]不会给随机帮派成员一个名字和背景故事。它给他们一种心理学,这是一个不同且更小的主张。[/]
[]不会跨流式加载边界记住街头 NPC。游戏会丢弃他们,The Alienist 无法留住游戏已经丢弃的东西。剧情角色会持久;人群不会。[/]
[/list]
[heading][size=6]关于支持:[/size][/heading]
[b]没有支持,我宁愿一开始就说清楚,而不是之后对你沉默。[/b]
这个模组是一个演示。The Alienist 是一个引擎,而引擎是我在做的东西——那加上一个虚幻插件,就是我今后时间投入的方向。Cyberpunk 集成之所以存在,是因为它是这件事可行的最佳表达证明,而不是因为它是主要的东西。
所以:
[list]
[][b]我不会调试你的安装。[/b]加载顺序、模组冲突、redscript 编译、CET 版本——那些是社区的领域,而且有人比我擅长得多。[/]
[][b]我不会接受功能请求。[/b]不是因为它们不受欢迎,而是因为我构建的任何东西都会进入引擎,而它是否能到达这个模组取决于 Cyberpunk 能表达什么。[/]
[][b]更新会是偶尔且不预告的。[/b]当引擎前进且桥接能承载它时,新版本就会出现。没有路线图。[/]
[/list][b]我确实想要的:[/b]附带 CET 日志的 bug 报告,以及关于 NPC 实际做了什么的描述。尤其是第二种。这个系统会产生我没有写过、也无法预测的行为,而有趣的报告一直都是有人在描述一场战斗,而不是一份堆栈跟踪。
把这些发出来。我会全部读。我只是不能承诺修复。
[size=5]封面照片:
背景中的抽象画是我的;它叫
“空白画布。”
它显然不是空白的,但那里什么都没有——一种自我的抽象。The Alienist 写起来就像那些困扰之人寄出的奇怪信件之一。
这就是这个模组。游戏中的每个 NPC 都是一块空白画布,结果却发现它密密麻麻满是没有人在读的痕迹。
这幅画不是 AI 生成的:https://www.instagram.com/bassem.khaled.3/[/size]
[heading][size=5]致模组作者:[/size][/heading]
引擎是一个独立的 C++20 库——63 个源文件,大约 17,700 行,里面完全没有 Cyberpunk 的任何东西。它已经在四款游戏、三种不同的桥接技术上运行过,每次都统辖当时已有的任何 AI 栈。桥接是 Lua,用于在两者之间转换。移植到另一款游戏意味着移植桥接,而不是引擎。
[heading][size=5]这是如何构建的:[/size][/heading]
我设计了 The Alienist。我不是程序员;我不写代码——每一行都是由 Claude 按照我的架构和我的方向实现的,历时大约四个月和四次游戏集成。
这里每一个设计决策都是我的:六个领域、世界描述符、引擎中没有任何数字是手工编写的这条规则、残余。我带来的是二十年注意到游戏 NPC 是空洞的观察,以及足够的固执和空闲时间把它做完。
我说这些,是因为你终究会看出来,也因为我认为对此撒谎或假装不是这样是不诚实的。
如果你因为代码是 AI 写的而认为 The Alienist 很糟,那是你的观点,我尊重它。对我来说,我扮演的是系统架构师,AI 扮演的是技术工程师。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。