我是如何度过1982年的夏天的:为雅达利2600制作驴孔

2020-10-29 15:47:37

1982年夏天,我花了大约三个月的时间创建了一个包含4096个数字的列表,一丝不苟地确保每个数字都是正确的值,并且在列表中的正确位置。当我完成工作时,我工作的唯一有形证据就是那份长长的数字清单。

当清单完成后,经过近1000个小时的工作,前康涅狄格州皮革公司?将数字(按顺序)放入计算机内存芯片和塑料盒中,并在全国各地的商店出售。人们真的买了它。

我创建的数字列表被公众称为热门投币式视频游戏金刚的雅达利2600版本。为了创建这个列表,我花了大约3个月的时间用6502汇编语言编写了一个计算机程序,几乎没有睡觉。为了赶在假日销售前及时提交最终代码,我承受着巨大的压力,我在办公桌前连续72小时完成了游戏,之后我被告知我看起来像个僵尸。

就背景而言,任天堂的“金驴子”(街机游戏)是电子游戏设计上的一次突破,也是20世纪80年代初最成功的投币游戏之一。需要澄清的是,“金驴子”不是我发明的。这款游戏是由传奇人物宫本茂(Shigeru Miyamoto)设计的,他可能已经成为历史上最成功的视频游戏设计师。这是第一款以马里奥为主角的视频游戏,马里奥后来在超级马里奥兄弟系列游戏中成名致富(尽管在金刚驴子中他只被称为Jumpman)。金刚是最早使用卡通质量的动画和讲故事将玩家吸引到行动中的视频游戏之一。我的角色仅限于创作宫本杰作的雅达利2600版。

金刚驴子的故事发生在一个建筑工地上。遇险的少女,马里奥的女朋友?波琳被一只顽固的²猿绑架了。作为无畏的英雄马里奥,你的任务是把公主从无礼的灵长类动物手中拯救出来。街机游戏如下所示。

在游戏的第一阶段,目标是跑上在建建筑的大梁,到达波琳(注:屏幕顶部说有遇难的少女,大喊“救命!”)。玩家用操纵杆和按钮控制马里奥。操纵杆可以上下左右移动马里奥,而按钮可以让他跳跃。为了阻止马里奥到达波林,猿猴沿着倾斜的大梁源源不断地发射桶,以阻止他爬上大楼。

如果马里奥成功地避开了桶,到达了大楼的顶端,他就会清扫波林,从屏幕顶部爬到第二阶段。这款街机游戏总共有四个阶段(关卡),在建筑工地的不同区域都有类似的越轨和游戏挑战。

1982年,金枪鱼是拱廊里最大的东西之一,以创纪录的速度吞噬了25美分。即使你不玩电子游戏,你也很可能听说过金刚。

与此同时,家庭视频游戏市场正处于井喷式增长之中。在20世纪70年代初,你的标准家庭视频游戏设备连接到电视上,可以玩一种或多种类似乒乓球和划桨的游戏。

每种游戏的选择都差不多,但它们都有巧妙的名字,比如网球、乒乓球和曲棍球,让你觉得自己玩的不是乒乓球。当你厌倦了球类和划桨类游戏时,系统就会被扔进壁橱(或垃圾)。

1977年,雅达利视频计算机系统(VCS,或2600)推出。2600在头几年打入了家庭视频游戏市场,尽管价格比之前的产品高得多,这在一定程度上要归功于它的可拆卸游戏盒。能够购买更多的盒式游戏极大地延长了机器的寿命,让家人在厌倦了玩到死的游戏时可以尝试一些新的东西。

然而,推动雅达利2600进入平流层的事件是1980年太空入侵者子弹的释放。由日本游戏公司Taito的西加多智弘(Tomohiro Nishikado)设计的大型街机游戏“太空入侵者”(Space Invaders),是街机大片进入家庭视频游戏市场的第一个重要许可证。当它到达雅达利时,不仅墨盒卖得疯狂,而且雅达利2600机器的销量在一夜之间翻了两番,因为一群发烧友需要游戏机来玩墨盒。

该行业已经学到了宝贵的一课。授权一款热门街机游戏并将其带到家用游戏机上,有可能是纯粹的黄金。

现在回到我的故事部分。20世纪70年代中期,作为新泽西州的一名大学生,我非常幸运地在一家四人电子公司找到了一份兼职工作,从事设计和工程小工具的业务,如计算器、数字钟,最后是电子玩具。作为地位低下的人,我最初的职责包括为工程师准备午餐。

随着时间的推移,在一家人才才华横溢,但资源有限,而且有过度承诺习惯的公司里,我被快速地带入了工作中学习的道路,主要是一次又一次地被扔进火里。虽然这并不容易,但它是令人难以置信的回报,并有助于定义我未来的职业道路。

到了1979/1980年,尽管我还没有完成大学学位,但我已经是一名成熟的自学成才的工程师了。到那时,我作为第四名员工加入的公司规模已经扩大,主要精力集中在手持电子玩具上(另一篇报道)。我喜欢从事电子玩具的工作,但我也被雅达利视频游戏系统的市场成功所吸引。在管理层的支持下,我买了一台雅达利(Atari)机器,把它拆开,弄清楚它是如何工作的,这个过程被称为逆向工程。不久之后,我设计并编写了我的第一款Atari 2600游戏(实际上,我的第一款视频游戏),太空骑师,这款游戏于1982年发布。

在那之后,我决定离开第一份工程工作。我的事业蒸蒸日上,是时候为我寻找更有价值的工作了。

1982年5月,我现在是独立的个体经营者,我得到了一份合同,开发一款与雅达利2600兼容的驴子金刚(Donkey Kong)版本。Coleco(前述康涅狄格州皮革公司)在雅达利上看到家庭版《太空入侵者》取得商业成功后,前往任天堂,获得了当时世界上最大的街机游戏的独家版权。虽然与驴子的交易主要集中在Coleco即将推出的Colecovision游戏机上,Coleco是Atari 2600的竞争对手系统,但如果Coleco不为Atari系统营销一个版本,那将是疯狂的,因为Atari系统在国内市场拥有最大的玩家受众。

对我来说幸运的是,几乎没有独立工程师拥有编写雅达利游戏所必需的知识。有雅达利的员工(他们非常忙,没有时间),有Activision的游戏设计师(雅达利的一个分支,也是完全忙碌的,也没有时间),其他人也不多。至于我,我最近失业了,而且愿意而且有能力,所以我接受了这个项目。

正如我在下面解释的那样,这不是一件容易的事情。我非常熟悉街机游戏及其开创性的图形、动画和游戏玩法。手头的任务是创造一款价值3000美元的硬币游戏的商业可行版本,这款游戏将在30美元的雅达利墨盒上运行。

-我大约有3个月的时间来写。我本可以用一年的时间。

-我有4096字节的内存,用来存储所有的代码、图形和音效。另外,我有128字节的RAM内存来跟踪所有事情(注意:不是千字节,字节)。游戏将被编程为在1 MHz的8位微处理器上运行。这些数字几乎肯定会让知识渊博的程序员屈服。

-除了上述限制外,我正在编程的游戏机Atari 2600从技术角度来看受到严重(我是说严重的)限制(这是一个完全独立的讨论),特别是与一台3,000美元的游戏机相比。雅达利2600系统最初设计用来玩两种游戏--乒乓球和格斗。因此,2600的图形能力仅限于显示两(2)个精灵(动画、移动角色),外加一(1)个球和两(2)枚导弹。球和导弹是简单的方形/矩形抛射物,而两个精灵有8位宽,能够显示基本的动画帧。

乒乓球有左拍、右拍和一个球。战斗有玩家1的坦克,玩家2的坦克,以及两枚导弹,每人一枚。雅达利在设计雅达利2600时的假设是,所有未来的游戏都将有两个移动的精灵和最多三个抛射物。这与金刚游戏机形成鲜明对比,后者能够显示“128个前景精灵,每个精灵像素为16x16”。

除了对屏幕上对象数量的限制外,由于内存限制,Atari 2600仅限于在1/2的屏幕上显示独特的背景图形。换句话说,屏幕的右侧只能显示屏幕左侧的副本或反射。由于驴刚标志性的倾斜坡道本质上是不对称的(从左到右比较时不是复制或反射),我不得不想出一种方法来“绕过”硬件来实现倾斜坡道。

为了写这个游戏,我用一种叫做6502汇编语言的语言编写了一个计算机程序。编写的程序是由一个叫做汇编器的基于计算机的工具处理的,它在我的Apple II个人电脑上运行。汇编器的输出是一个包含4096个数字的列表,每个数字的值都在0到255之间(由于二进制数系统的奥秘,我将在以后的帖子中对此进行解释)。

除了编写程序外,我还必须创建将显示在电视机屏幕上的计算机图形。当时,没有工具来创建这样的图形,所以我在一张图表纸上用正方形着色来创建背景,每个人物,如马里奥,以及其他物品,如锤子,以及显示分数的单个数字。左边的图像显示Mario处于站立位置,每行由8个像素(即像素=图片元素)和18行图形组成。右边的图像是马里奥头部的更近距离的视图,显示了每个像素是如何在8个单元格宽的图形纸上用颜色填充的。由于Atari系统被限制为每行(每个字符)一种颜色,请注意,Mario是由18个单色线组成的。

一旦在图表纸上绘制了图形,我就必须将它们转换成数字(是的,我们回到4096个数字的列表中),马里奥图形的每一行都占据了一个数字来表示点的图案,另一个数字来表示颜色。因此,如上所示,Mario的站立图像占据了我可用的4096字节数据中的大约36(18x2)字节。

虽然我在Apple II上完成了大部分工作,但在某个时候,我不得不将4096个字节放入Atari机器中,以查看我正在编写的程序是否完成了我设计的功能(这些程序很少能做到)。在编写游戏程序时,您需要花一个小时左右的时间编写代码,汇编您编写的代码,然后试用该程序,看看它是否正常工作。要做到这一点,一种方法是将数字列表,称为二进制,并将其放入墨盒中的计算机芯片中,插入雅达利。不幸的是,这种方法需要很多时间,而且不是你想要一天做20次的事情。

因此,我设计了一个定制的电子板,将雅达利系统直接连接到Apple II计算机上。一旦程序组装完成,电路板就允许雅达利立即运行程序(就像将盒式磁带插入游戏机一样)。我的定制雅达利接口板如下所示。

当我让游戏处于相当好的状态时(从游戏的角度来看),我比分配的4096个字节多了大约1200个字节。在这一点上,我别无选择,只能开始代码优化过程,或者正如我们过去所说的那样,削减字节。要减少字节,我必须逐个例程查看程序,并弄清楚如何用更少的代码完成相同的任务(而不破坏功能)。这听起来很可怕,但实际上是我最喜欢做的事情之一。

下图显示的是雅达利2600版“驴子刚”的第一个舞台画面。提到这张图片,我不得不创建图形并编写计算机代码来生成非对称倾斜坡道(紫色)、4个滚动桶(这里只显示了一个)、Mario、Donkey Kong、Pauline、锤子、一个“Lives”显示(右上角的块)和6位(总共)分数。我上面列出的所有物品都不符合雅达利机器“两(2)个精灵加一(1)个球和两(2)枚导弹”的限制。复杂的、时间错综复杂的汇编语言代码被用来欺骗硬件来显示可用的有限对象的许多唯一副本(当然可以在另一次讨论)。

虽然我觉得我在一项几乎不可能完成的任务上尽了最大努力,但港口并不完美。由于内存的限制,我只能包括四个街机游戏阶段中的两个(如上所述,在最初的投币机中有四个不同的游戏屏幕)。多年来,我对这一决定感到非常悲痛,但从技术上讲,我不可能在盒式磁带上添加任何其他东西,除非出版商Coleco同意使用更大的盒式存储器,这将给我8192字节的工作空间。考虑到制造成本的增加,他们下降了。有了这样的现实,我专注于制作这款游戏最具可玩性和图形愉悦的版本,这是在考虑到众多限制的情况下可以完成的。

驴刚2600游戏盒式磁带对Coleco来说是一个巨大的商业成功。几年前,我读到一份分析师报告,报告称,虽然雅达利2600版的驴子是Coleco当年推出的550款产品之一,但它占其总收入的25%。保守估计,仅1982年这款游戏的零售收入就为1亿美元,相当于2020年约2.69亿美元,即4096个数字中每个数字约65,670美元。

我很感谢我在正确的时间出现在正确的地点,为这样一个标志性的游戏工作。这当然是一次令人筋疲力尽的努力,但我不会用这段经历换取任何东西。

他说:康涅狄格州皮革公司?在凭借卷心菜贴娃娃和视频游戏成名致富之前,Coleco被称为康涅狄格州皮革公司。

他说:你会问为什么是建筑工地?问得好。答案很简单,那就是它对游戏性有效。出于这个原因,你在视频游戏中看到了许多奇怪的东西,标准的游戏设计师反驳道:“这是一款视频游戏,我不需要理由。”有没有问过自己,在“愤怒的小鸟”中,你为什么要用弹弓把鸟扔向由猪建造的建筑?答案是一样的。

他说:顽固的猿游戏的设计者宫本茂(Shigeru Miyamoto)最初把猿称为顽固的猿。当从日语翻译成英语时,“顽固”这个词被翻译成“驴子”,原因显而易见。因此才有了独特的名字“驴子金刚”。