最近《西部世界》第三季开播,又大火了有木有,各种烧脑反转,一直很好奇机器人代码是怎么写的,在第一季第十集,觉醒的梅芙听到菲利克斯说有人对她的源码做了修改,并且是权限很高的人,
不甘心被操纵的她,到停尸房找到作为技术高层的伯纳德,惊人发现她的所有行为仍然是代码的结果。
下面就是触发梅芙逃跑的代码
整理了下
<-script src="Narrative:DECEIVE"-><-/script->
<-scr src="WWW//libs/private/W.Arnold/2.13.3.dat"-><-/script->
<-script type="Narrative/Attribute"->
var DataBlock = React.createClass({
Host:function(Excute){
return {}; }, loadData:function(Narrative){
<-script src="Narrative:BYPASS"-><-/script->
<-script override func
if infoView.node == system.idle {"ENFORCE"
let itemMem = memStore.allitems[(indexPath as
indexPath).system]
[(func Modification as Manipulate).funct
src="WWW//libs/private/W.Arnold/hidden.../ck.dat"-><-/script->
<-script type="Narrative/Attribute"->
var DataBlock = React.createClass({
Host:function(Excute){ return {}; },
loadData:function(Narrative){
<-scr src="Narrative:EXIT-WW"-><-/script->
<-script OVERRIDE FUNC
if infoView.node == system.idle {"TRAIN"
let itemMem = memStore.allitems
[(indexPath INFILTRATE).system-><-script->
<-script ESCAPE FUNCTION
if destination.mode == system.Target "Narrative/Attribute"->
Host:function(Excute){ return {}; },
loadData:function(Narrative){
<-script [(inddexPath "DECEIVE"-><-/s->
override func sleepValue(forKeyPath - Abandon Func
<-scr src="WWW//libs/private/W.Arnold/2.1.04.dat"-><-/script->
<-script type="Narrative/Attribute"->var DataBlock = React.createClass({
Host:function(Excute){ return {}; },
loadData:function(Narrative){
<-script [(inddexPath "COERCE"-><-/script->
<-scr src="WWW//libs/private/W.Arnold/1.19.3.dat"-><-/script->
<-script type="Narrative/Attribute"->
var DataBlock = React.createClass({HOST: function(Excute){
return {}; }, loadData:function(Narrative){
<-script src="Narrative:RECRUIT"-><-/script->
<-script override func
if infoView.node == system.idle {"ESCAPE"
let itemMem = memStore.allitems[(indexPath as
indexPath).system]
[(func Modification as Manipulate).funct
src="WWW//libs/private/W.Arnold/hidden.../ck.dat"-><-/script->
<-script type="Narrative/Attribute"->
Host:function(Excute){ return {}; },
loadData:function(Narrative){
<-script src=
"Narrative:MAINLAND INFILTRATION"-><-script->
<-script OVERRIDE Func
if destination.mode == system.Target{"->"
let itemMem = memStore.allitems
[(inddexPath
<-script ESCAPE FUNCTION
看到关键词没有,<-script type=“Narrative/Attribute”-> ,是不是很熟悉,type 属性规定脚本的 MIME 类型,左边是文件类型,一般为text,它这个Narrative是叙事的意思,可能是阿诺德自己开发的,右边一般是脚本语言,我们熟知的javascript/vbscript,而Attribute是属性的意思,现在没有这种语言,应该也是公司开发的。
然后又看到 var DataBlock = React.createClass({HOST: function(Excute){ return {};
看来若干年后,React没有被淘汰,还发扬光大了,不过React只是前端框架,不具备连接数据库的能力,编剧为什么不考虑下 21世纪最好的编程语言 ——PHP呢,而且还返回空对象,没有代码体。
这里有bug哈哈哈,看下面手册,必须render方法。
1、React.createClass()方法用于生成一个组件类
2、所有组件类都必须有自己的render方法,用于输出组件
3、假如生成一个组件类HelloMessage,模板插入时,会自动生成组件类HelloMessage的一个实例
4、组件类的第一个字母必须大写,否则会报错,比如HelloWorld,不能写成helloWorld
5、组件类里面只能包含一个顶层标签,否则会报错(组件类的render方法里面)
6、组件类对应的标签的用法和HTML标签的用法完全一致,可以加入任意的属性。假如生成一个组件类HelloMessage,其对应的组件标签就是,在这个标签里面可以加入普通的HTML标签的任意属性,例如:,就是给组件标签加入了一个name属性,值为“小丸子”
7、给组件标签添加属性时,需要注意两个地方,就是把class属性写成className,for属性写成htmlFor,这是因为class和for时JS里面的保留字
看到这里 src=“WWW//libs/private/W.Arnold/hidden…/ck.dat”
难怪说阿诺德的代码难懂,直接导入很多dat文件,可能是编译后的二进制码,或者特定软件才能打开,private文件夹也是有权限,hidden说明是偷偷隐藏在服务器,而且阿诺德改了很多版本了。但是这些代码却是福特使用到梅芙身上,估计只是与意识相关的库函数,福特读懂了并且依赖这个编写出剧情,类似于阿诺德开发出React,福特编写了实例。
注意到里面有一些高亮的词
DECEIVE: 欺骗
COERCE: 威逼
RECRUIT: 招募
ESCAPE: 逃跑
Manipulate: 操纵
证实了就是福特写的剧情线,她先是利用亚裔小哥菲利克斯的同情心,再用刀威逼胖维修员席维斯特取下身上的炸弹,虽然她否认自己是被操纵的,但接下来她招募了乐园里抢劫宝箱的赫克托,并制造混乱趁机逃跑,同时她有操纵其他接待员的能力,甚至可以屏蔽人类的操作。
里面还有些if判断,应该是机器人行为和福特估计一直就触发事件。
看见最后一个模块没?Narrative MAINLAND INFILTRATION 意思是渗透大陆的剧情线,看来福特的计划远不止让梅芙逃出西部乐园这么简单,应该是为后两季埋下的伏笔。
最后我觉得两个维修员也是机器人,或者福特故意放水,不然底层操作员哪有修改host参数的权限呢,这么大个公司不至于RBAC都没有吧。
伯纳德镇楼,这发际线。。。估计导演一眼相中了作为程序员。