我刚刚在浏览器窗口中玩了一个RBI棒球游戏。
这本身就让我感到非常惊讶。在我年轻的时候,NES是一个神奇的盒子,能够为全世界的小孩提供数小时的享受。
现在,几十年后,我是一名程序员。我可以欣赏几十年前用更原始硬件开发的游戏中的编程。事实上,有一天,我完全期望其中一些游戏的代码将被载入史密森学会。
我的编程问题:
有任何经典的NES游戏(如RBI 棒球)是开源的,如果是的话,我在哪里可以找到要研究的代码?
如果没有,是否有任何 NES游戏的源代码可供学习?
我认为从他们的榜样中学习是值得的。
例如:
答案 0 :(得分:26)
没有。至少没有我知道的(我一直在寻找)。
<> NES出现在1983年的视频游戏崩盘之后,市场崩溃的主要原因是大量糟糕的游戏,引发了客户不买单场游戏,因为没有办法知道什么游戏是好的。因此任天堂在推出NES(以及当时所有其他游戏机,如SEGA的Master System)时,决定只有批准的游戏才会被释放,并且任何开源都会导致违反合同的巨额罚款,原因在于,如果不发布公共API,就会让“自制软件”更难以涌入市场。
今天任天堂在允许游戏方面要容易得多,看到Wii上大量糟糕的游戏,但仍然没有控制台允许你使用他们的“真正的”API,以避免泛滥,甚至有当有人在Wii上使用GPL引擎(ScummVM)时会出现问题,因为为任天堂系统发布游戏来源是违反合同的行为,GPL要求释放源,在特殊情况下游戏被拉货架上的。
不,XNA和PS3 Linux并不是真正的控制台API,两者都对你可以用控制台做什么施加了严重的限制。
也许你可以找到自制游戏或逆向游戏。但我猜这不是你问的。
有时也可以找到重拍和端口的来源,但这些不使用控制台API。
答案 1 :(得分:12)
也许你已经发现了这个,但是Metroid(最初的NES / Famicom)已被拆解,代码(在漂亮的ASM中)发布在Romhacking.net上。
答案 2 :(得分:12)
如果您对NES编程感兴趣,请查看Episode 91 - Tengen Reunion Roundtable的Retronauts。 (注意这是播客原始剧集的第91集,可以在@ http://www.retronauts.com/找到更新的剧集)
基本上是一群前NES程序员在系统(和其他复古系统)上回忆游戏开发。他们偶尔会参与技术方面的工作,这一切都非常吸引人。
答案 3 :(得分:7)
我从未在电子游戏行业工作过,但我已经阅读了很多相关内容,而且我不时与朋友谈论,所以我会尝试或多或少地解释它们之间的区别关于编程方法的游戏和其他应用程序。
首先要了解的是游戏是一次性产品。它不像电子表格或文字处理器,您可以在其中发布改进和扩展以前代码库的新版本。
第二件事是,你需要尽快发布游戏。通常,您在游戏中花费的时间越多,与当时其他游戏相比就越糟糕。这主要适用于PC游戏,其硬件的发展速度比控制台世界快得多,但仍然在很大程度上适用(即使使用与开发更好的工具和算法相同的硬件,游戏也会继续变得更好)。
第三件事是游戏通常需要将硬件推向极限。所以拧紧所有优雅的模式,如果它们让它运行得更慢,会使你的代码更美观和可维护。
所以在解剖旧的NES游戏源代码之后,我所期待的只是意大利面条代码,其中大部分是用大量的低级别黑客编写的,与机器的架构紧密相关。
我希望我的回答对你有用。
答案 4 :(得分:3)
如果您对NES游戏开发感兴趣,我建议您查看nesdev.com。他们有详细的文件。
答案 5 :(得分:2)
你不太可能找到原始游戏的来源,但那里有大量的自制软件和相对成熟的工具链。作为最喜欢的答案,谷歌是你的朋友。但是为了让你开始,这里是相对不错的教程:
http://www.bestdamnpodcastever.com/millerblog/?p=72 via "The Wayback Machine"
答案 6 :(得分:2)
NES Games只是在汇编程序中开发的(据我所知),我猜这些源代码在这么多年后很久就丢失了。
无论如何,汇编源代码与机器代码的距离并不远,所以它可能不会像C或Java代码那样显露出来。
关于面向对象和设计模式,再次,它是汇编程序和80年代,不要指望任何。