19.01.2022

从汇编语言到C++:不同时期游戏产业使用的编程语言

Reddit 上出现 关于不同时间开发视频游戏所使用的编程语言的大讨论。用户们回忆起用 BASIC 编写的游戏、汇编语言时代以及转向 C++的经历,并分享了他们自己的实践故事。

汇编语言在80年代和90年代初被广泛使用。可以举出前三部 Sonic The HedgehogSuper Mario以及时代中其他一些项目作为例子。

不过,正如 Raidenkyu 所指出的,不同平台使用的语法因处理器类型而异。68000 型处理器用于 Sega Genesis,6502 用于 NES,65816 用于 SNES

一些用户提到,早期的一些游戏是用 BASIC 编写的。虽然大多数都未取得商业成功,甚至根本没有出售,但也有例外。例如, Sid Meier’s PiratesCommodore 64 版本主要是用 BASIC 编写的。

在80年代,一些商业游戏确实是用基本语言写的。那个时候,独立开发者把它们复制到磁带上,然后在当地的电脑商店出售。根据我的记忆,原版 Ultima 的第一个版本是用 Applesoft BASIC 编写的。

用户 SocksOnHands

关于用 BASIC 编写的游戏

根据用户 codethulu 的说法,第一代 PlayStationNintendo 64和当代其它游戏机已经开始使用 C 语言编写。随着时间的推移,C++ 变得越来越普及,成为游戏市场上的标准之一。

用户 philbgarner 注意到,PC 游戏开发者是最早转向 C 和 C++ 语言的,因为个人电脑对内存限制的依赖较小。他还强调,那个时代通常采用混合的方法:用于图形创建的低级编程语言(如汇编语言)和用于游戏逻辑的 C/C++。

在一次计算机体系结构课程上,我遇到了这种混合编程。我们用汇编语言编写程序的部分,其中涉及低级硬件(例如,设置频率倍增器并将生成器的输出信号连接到内部扬声器以生成音调),而其他部分则使用 C++ (例如,歌曲生成)。

用户 Bad_Chicken_2

关于混合方法的使用

用户 SanityInAnarchy 指出,许多90年代的著名视频游戏同时使用了汇编语言和字节码。他以 Quake 为例,提到游戏中的低级元素是用汇编语言编写的,而高级游戏逻辑则是用 QuakeC,这是 约翰·卡马克 (John Carmack) 于1996年开发的特定语言。

尽管汇编语言的大规模开发已经成为过去,一些开发者在90年代末和2000年代初仍然使用这种语言。例如, 克里斯·索耶 (Chris Sawyer) 完全用 x86 汇编语言编写了 RollerCoaster Tycoon

Naughty Dog PlayStation 2 早期编写了自己版本的 Lisp —— 面向游戏的汇编 Lisp (GOAL)。它首次用于开发 Jak and Daxter: The Precursor Legacy。随着时间的推移,工作室放弃了 GOAL,但在 PlayStation 3 时代偶尔仍使用它来编写脚本,例如在第一款 The Last of Us 中。

BillyTenderness 认为有趣的是,如今 C++ 基本上已变成一种低级语言。它常用于图形和物理,而脚本语言如 Blueprint Lua 则用于游戏逻辑。

其中一位用户指出,他从未听说过脚本语言以这种方式应用。然而,评论中给出了许多使用这种方法的例子。

Civilization 系列游戏中,正是使用 Lua 来创建游戏逻辑(在第四部中使用的是 Python)。根据用户 Noxime 的说法,这就是为什么游戏后期的步伐通常变得如此缓慢。

Lua 在 Metal Gear Solid V 中也被用于这种目的。此外,在2000年代,开发者们常常使用自己的脚本语言来创建游戏逻辑。

Putnam3145 介绍,脚本语言的执行速度比其他语言慢5到10倍,但计算机变得越来越快,因此脚本部分不再是瓶颈。问题仅在于优化。

在讨论编程语言时,不能不提到 Java。在2000年代初,它用于各种游戏,包括浏览器 MMORPG RuneScape。然而,在智能手机普及之前,Java 的主要应用是移动游戏。

大约在2000年代,J2ME(Java 平台的一个子集)用于开发移动游戏——例如,为诺基亚 3410 开发。这样的代码会被编译成字节码,然后在手机上被解释为机器码。因此,开发者必须为不同平台做一些修改。

用户 Valmond

关于2000年代的移动开发

用户 filisoft 指出,针对 Symbian Blackberry 的移动游戏是用 C/C++ 编写的。一些设备强大到可以支持独立的 3D 元素,因此这类游戏的包体积可能达到几百千字节。相比之下,Java 项目的大小限制严格得多——例如,限制为 48 KB。因此,开发者不得不大幅压缩他们的游戏。

然而,随着 iPhone 的发布和智能手机的普及,Java 作为移动开发语言基本上已经消亡。如今,经常使用的开发语言有 C# (Unity)和 C++(Unreal Engine及一些自制引擎)。

评论
写评论...
Related news