03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)

月石一 发自 凹非寺量子位 报道 | 公众号 QbitAI

还记得它们吗?

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(1)

对00后们来说,也许有些陌生,但是80后、90后的游戏玩家们,应该再熟悉不过了~

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(2)

《毁灭战士RPG》、《兽人与侏儒》1和2、《德军总部RPG》等等……满满的回忆啊~

这些游戏的开发者,最近发了几条推特,其中提到,自己曾经开发了这几款游戏的“功能手机”版本

风轻云淡说出这话的大神,就是被称为“3D游戏、FPS游戏之父”的约翰·卡马克(John Carmack),他也是游戏公司id Software的创始人之一(FPS:第一人称射击)。

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(3)

这段话直接在网上引发了一波回忆杀。

考古经典游戏

事情的起因是这样的,卡马克的儿子想要玩《兽人与侏儒2》,而高通公司的BREW平台上已经没有模拟器和档案了。

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(4)

△2015年,约翰·卡马克之子(图源:大神的Twitter)

好在,J2ME(java移动)版本仍在流传,可以进行仿真,于是大神父子俩开启了一场“复古冒险”。

虽然,游戏可以在KEmulator(在电脑上运行的java模拟器)上运行,但是音频存在问题,而且在游戏中死亡后就会挂起

好吧,我们是程序员,应该能修复它。

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(5)

于是父子俩转向了开源软件freej2me,这次没有发生挂起的问题,但是音频却更糟了,需要用补丁修复。

此外,卡马克发现,尽管游戏是为100MHz以内的移动CPU设计的,可模拟器却占用了大量CPU。

经过探索,最后他们通过Flight Recorder(记录引擎)和JDK Mission Control(实时监控),发现根本原因在于:明确地调用垃圾收集(GC)。

因为在一些手机上,每一帧都必须调用system.GC(),以避免出现问题。

在128k的手机上和在多GB堆内存的台式机上,进行GC扫描是非常不同的,在现代计算机上,一个操作的速度要慢10倍以上。

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(6)

怎么办?

虽然无法改变游戏的源代码,但是JVM有个很好用的参数:-XX: DisableExplicitGC,可以禁止代码中显示调用GC。

此外,卡马克还分享了自己早年间的文章,感兴趣的朋友可戳文末链接~

用C 写CNN的卡马克

大神约翰·卡马克,何许人也?

出生于1970年的他,可是一位名校辍学、自学成才的典型。

他曾经对3D图形技术作出了巨大贡献,称他是游戏行业最具影响力的人也不为过。

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(7)

△约翰·卡马克(图源:Wikipedia)

卡马克与游戏的渊源,当然不止Twitter中提到的这些。

1991年,由他和朋友共同创办的id Software游戏公司,开发了风靡全球的《德军总部3D》,在很大程度上普及了FPS游戏

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(8)

△id Software的Logo(图源:Wikipedia)

这款游戏还使用了他独创的3D引擎,而不久之后问世的《毁灭战士》,再次席卷全球。

此外,他还用3D加速技术,为《雷神之锤》制作了特别版本,使游戏画面渲染速度更快、分辨率更高。

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(9)

1999年,卡马克的公司推出了《雷神之锤III》,这是一款多人连线FPS游戏,由id Tech3引擎制作,这款强大的引擎,直到6年后仍被许多游戏采用。

并且,它还是首个要求显卡具备硬件加速能力的游戏。

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(10)

△雷神之锤III(图源:Wikipedia)

2008年,《德军总部RPG》推出,它是一款RPG(角色扮演游戏),同时也是射击类的探险游戏。

不仅是电脑端,在2005年和2009年,id Software又分别推出了《毁灭战士》1和2的RPG移动版。

除了游戏开发之外,卡马克还是开源运动的积极拥护者。

他在90年代陆续放出了《德军总部3D》、《毁灭战士》、《雷神之锤》等游戏的源代码,不少游戏都是在它们的基础上被制作出来的。

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(11)

这位大神级别的程序员,你以为他只“玩”游戏吗?对于新兴的人工智能,他也没落下。

只不过是以一种“电脑怪才”的方式,他用一周时间玩了一把「复古与现代的碰撞」——用C 写了个CNN代码。

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(12)

除此之外,卡马克还是个火箭爱好者。埃隆·马斯克还曾有意邀他合作,多年来两人时常在社交媒体上互动。

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(13)

网友集体怀旧

这场卡马克父子俩的“复古大冒险”,引得网友直呼:really cool!

很好的故事! 和你的儿子一起回到过去,摆弄这种东西,一定非常酷 :)

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(14)

我在手机上装了J2ME Loader,玩当年在索尼爱立信W595上的游戏,感觉非常爽 :)

蠕虫病毒、僵尸感染、模拟人生、魔鱼等等…… 真是巨大的怀旧冲击

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(15)

我以为这只是怀旧,但实际上这些游戏保持得很好,特别是考虑到平台的局限性!

当然,与现在移动平台上充斥着交易、广告……的游戏相比,它们真是一股清流。

一位曾经从事J2Me开发的网友表示:

对于诺基亚和索尼来说,应该是可以运行旧模拟器的。

但是对于某些手机来说,比如三星、摩托罗拉,可能很难实现。

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(16)

除了怀念游戏之外,对于调用GC的问题,也有网友表示同感:

我遇到过这种情况,以前的开发者在C#应用中不断调用GC。这些调用被清理后,性能有了巨大的提升。

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(17)

不过也有人指出:

Java的GC其实很懒,其暂停(STW)与堆大小(heap size)呈现线性关系。

禁用显式GC会有一段时间的帮助,但一旦它满了,最终会有一个非常长的暂停。

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(18)

当然,提到经典游戏《毁灭战士 RPG》,不少网友都想在智能手机上体验一把,并且期待卡马克能让它实现。

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(19)

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(20)

还有人分享了《毁灭战士》论坛中关于游戏逆向工程的帖子,并且表示这个版本不会发生丢失。

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(21)

一些网友认为,这些游戏应该都能在Switch实现,还有人想在Switch上做一个BREW复古游戏汇编,并且已经有一些J2ME和iMode了。

03年至10年诺基亚手机游戏(3D游戏之父考古诺基亚时代)(22)

你期待再次玩上这些经典游戏吗?

参考链接:[1]https://twitter.com/id_aa_carmack[2]https://web.archive.org/web/20060502175605/http://www.armadilloaerospace.com:80/n.x/johnc/Recent Updates/[3]https://news.ycombinator.com/item?id=27220657[4]https://www.doomworld.com/forum/topic/117360-doom-rpg-reverse-engineering-project/[5]https://zh.wikipedia.org/wiki[6]https://www.facebook.com/

— 完 —

量子位 QbitAI · 头条号签约

关注我们,第一时间获知前沿科技动态

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页