故事继续。

电子游戏艺术的萌芽,就跟资本主义的萌芽一样,像星火一样,先在大学和科技机构里掀起了燎原之势。

1951年5月5日,伦敦科学馆展出了Nimrod电脑。这款电脑是为玩《Nim》而专门设计的,它是有记载的最早专门设计用来游戏的计算机。

游戏为什么重写底层代码(No.3电子游戏艺术简史)(1)

Nimrod电脑的复制品

1951年2月,最早的计算机科学家克里斯托弗·斯特雷奇开始在Pilot ACE编写跳棋程序。Pilot ACE也是大有来头的玩意,它是图灵设计的ACE的预选方案,也是当时运行速度最快的计算机。多快呢?基础时钟频率高达1MHz。

而图灵是公认的计算机和人工智能科学的开创者。

游戏为什么重写底层代码(No.3电子游戏艺术简史)(2)

Pilot ACE

1952年,A·S·道格拉斯在EDSAC电脑上编写了《OXO》,这是一款人机对战的井字棋游戏。上面的Pilot ACE是图灵亲自设计的,很炸。可EDSAC更炸:EDSAC是受冯·诺伊曼的“First Draft of a Report on the EDVAC”启发,以EDVAC为蓝本,设计和建造出来的。1949年5月6日正式运行,是世界上第一台实际运行的存储程序式电子计算机。

游戏为什么重写底层代码(No.3电子游戏艺术简史)(3)

EDSAC

可为何《OXO》为何没有流行起来呢?

我认为有以下几个原因:EDSAC造价在1952年就高达50万美元,要准备300平米的专门房间,要接受150千瓦时的功率,还要忍受它的噪音和热量。

此外你还要拥有剑桥的博士学位。

以上一切,仅仅是为了玩到一种井字棋?

时间继续往前,电子游戏的载体——计算机开始在全世界普及起来了。与此同时,影响人类发展进程的程序语言也先后被发明出来了。FORTRAN、LISP、COBOL等等语言在1950-1960年代开始大放异彩,人们能用计算机做的事情开始在增加。

下面是1950-1960年代程序语言的诞生表。

1951 - Regional Assembly Language

1952 - Autocode

1954 - FORTRAN

1954 - IPL (LISP的先驱)

1955 - FLOW-MATIC (COBOL的先驱)

1957 - COMTRAN (COBOL的先驱)

1958 - LISP

1958 - ALGOL 58

1959 - FACT (COBOL的先驱)

1959 - COBOL

1962 - APL

1962 - Simula

1962 - SNOBOL

1963 - CPL (C语言的先驱)

1964 - BASIC

1964 - PL/I

1967 - BCPL (C语言的先驱)

保持耐心,离1970年代那些屠龙刀级别的程序语言出现,只有一步之遥啦。

1958年出现了用示波器模拟网球的游戏《双人网球》。

《双人网球》采用侧视的简化网球场。球受重力作用且必须过网。游戏通过模拟计算机控制,“主要包括电阻、电容和继电器,但在打出球时快速切换用晶体管”。

咱不说,你是不是不知道这是在打网球。

示波器这个创意,和《阴极射线管娱乐装置》的专利很像。

游戏为什么重写底层代码(No.3电子游戏艺术简史)(4)

双人网球

《双人网球》的出现并没有引起太大的波澜,而1962年《Spacewar!》出现,才是真正启发一代电子游戏艺术的作品。

游戏为什么重写底层代码(No.3电子游戏艺术简史)(5)

Spacewar!

这款游戏是一名麻省理工的学生鼓捣出来的,名叫史蒂芬·罗素。叫罗素的,一般都很强,这位罗素同样很强。

他师从计算机科学家约翰·麦卡锡,约翰·麦卡锡建立了MIT计算机科学与人工智能实验室,然后又跳槽去了斯坦福大学并在那里协助建立了斯坦福人工智能实验室。所谓名师出高徒,这就是了。

《Spacewar!》使用的是PDP-1的显示设备,两个玩家各使用操纵杆和按钮互相发射鱼雷对战,直到消灭对方为止。对比EDSAC50万美元的售价,PDP-1只需要1万2千美元。可这个数字,仍然不是普通人可以承受的。

所以《Spacewar!》只能在美国的各个大学和实验室流传,直到它流传到了犹他州盐湖城的犹他大学。

游戏为什么重写底层代码(No.3电子游戏艺术简史)(6)

1965年,正在犹他州上大学的诺兰·布什内尔第1次玩到了 《Spacewar!》。他认为 “这是一款有趣的好游戏,但是执行需求的电脑成本过于昂贵,不符合经济效益。”

1968年从犹他州毕业后,诺兰·布什内尔在加州的Ampex公司搬砖。有一天,他与同事重玩《Spacewar!》,点燃了他“对游戏的狂热及潜在商机的信心。“

1972年,诺兰·布什内尔辞职创办了雅达利公司。

《Spacewar!》虽然没有从大学和实验室走向普通家庭,但是它间接启发诺兰·布什内尔等一系列的猛人投身于电子游戏艺术。大家屏住呼吸,等待一连串猛人陆续登场。

如果我不说,你肯定不知道这些人竟然跟电子游戏艺术有如此千丝万缕的联系。

等待猛人总是枯燥的。

1963年,华莱士·费厄泽在PDP-1上开发了问答游戏《苏格拉底式系统》,以教育医学生如何诊断病人。

1965年,爱德华·斯坦因贝格尔在PDP-5上编写了一款骰子游戏。

1966年,拉里·贝斯努曼将宾果游戏的BASIC源码提交到DECUS用户组。

1967年5月,查尔斯·贝克勒以BASIC编写了首款篮球模拟游戏。8月,雅各布·贝格曼编写了模拟1967年世界棒球职业锦标赛的棒球游戏。

1969年,肯·汤普森在Multics系统上编写了《Space Travel》。

时间推到了1969年,本文的高潮部分即将来临。

请记住这一行字:

1969年,肯·汤普森在Multics系统上编写了《Space Travel》。

Multics系统是贝尔实验室、麻省理工学院及美国通用电气公司一起研发的分时操作系统,目的是研发出一套多人多任务的操作系统。1969年4月,贝尔实验室退出了Multics系统的研发,留下了麻省理工学院和GE苦战。

贝尔实验室退出Multics项目后,肯·汤普森还想做操作系统,贝尔实验室对汤普森说,你丫嫌我们经费太多么?不肯给汤普森买硬件。

没有硬件怎么开发操作系统?总不能在本子上debug吧。这种常人无解的问题,对汤普森这种超级猛人却没造成丝毫困扰,他找到了一台PDP-7。PDP-7是1964年推出的计算机,在1969年已经过时了。这台机器只有16KB内存,汤普森就用这个PDP-7写了一个游戏,叫做:《Space Travel》。

你以为这就完了?

整个计算机历史上最为离谱的事情之一,此时就发生了。

俗称:三周写出Unix操作系统。

前几天我正在看《Unix:历史与回忆》,这本书里详细地描述当时肯·汤普森在Unix的工作过程。

“在某一时刻,我发现离实现一个操作系统仅有3周之遥了。”他需要写三个程序,每周写一个:用来创建代码的编辑器;将代码转换为PDP-7能运行的机器语言的汇编器;再加上“内核的外层——操作系统齐活了”。

正在那时,肯的太太休了3周假,带着一岁大的儿子去加利福尼亚探望公婆,这样肯就有了3周不受打扰的工作时间。正如他在2019年一次采访中所说,“一周,一周,再一周,我们就有了Unix。”

无论以何种方式来度量,这都体现了真正的软件生产力。

肯和我都从贝尔实验室退休几年之后,我问他3周内写出Unix是否属实。下面是他回复邮件的原文,谈到的情况和最近那次采访完全一致。

游戏为什么重写底层代码(No.3电子游戏艺术简史)(7)

肯回复的邮件

这篇信件翻译如下:

日期:2003年1月9日,星期四,13:51:56-0800

Unix是用来测试吞吐量之类的文件系统实现。实现出来之后,我发现很难用数据给它加上负载。我可以在循环中调用读/写操作,但做不了更复杂的事。

这就是邦妮(Bonnie)去圣迭戈(San Diego)探望我父母时,我面临的状况。

我认为它已经很接近分时系统了,只是还缺少执行调用(exec call)、shell、编辑器和汇编器。(没有编译器)执行调用手到擒来。其他三个每周做一个——加起来正好是邦妮在那边待的时间。计算机内存有8k×18位。4k做内核,4k供用户程序换入换出。

肯·汤普森的简介

在贝尔实验室工作期间,设计和实现了Unix操作系统。他创造了B语言——C语言的前身,而且他是Plan 9操作系统的创造者和开发者之一。

2006年,汤普逊进入Google公司工作,与他人共同设计了Go语言。他与丹尼斯·里奇同为1983年图灵奖得主。

此外,肯·汤普逊还参与过正则表达式和UTF-8编码的设计,改进了文本编辑器QED,创造了ed编辑器。他曾制造过专门用于下国际象棋的电脑“Belle”,并创建了残局数据库。

游戏为什么重写底层代码(No.3电子游戏艺术简史)(8)

肯·汤普森

这就是Unix之父,肯·汤普森的传奇故事。

到这里,今天的故事就要结束了。

能用肯·汤普森作为这篇文章的结尾,我十分欣慰。

准备迎接波澜壮阔的游戏时代吧。

,