这部分可能会让人有些困惑,主要是因为与其他游戏机相比,它缺乏底层文档。 微软/英伟达似乎真的希望开发人员使用他们的库,而忘记其他一切。 不过,这是一种有趣的策略。
无论如何,我都尽量将文档内容翔实地记录下来,但又不会太深入。
开发生态
该游戏机的游戏开发在库、术语等方面非常复杂。 因此,我按照框架将其分开。
硬件抽象
我们已经看到,像"带微码的可编程协处理器"这样的元素一开始往往会大张旗鼓,但当开发者发现新硬件的真正复杂性后,这些元素就会慢慢消失。
从开发者的角度来看,我认为这款游戏机的卖点之一就是加入了能有效管理底层功能的流行高级库。 微软和英伟达的策略是,与其记录硬件的每一个底层方面,不如提供一个功能齐全的硬件抽象库,让开发者无需完全了解硬件的内部工作原理就能执行预期的操作。
目前有多种SDK可用于为该游戏机进行开发,有些是"官方"的,限制较多,有些则是"非官方"的,但很灵活。 下面我们就来看看最受欢迎的几种。
微软XDK
微软的Xbox开发工具包(Xbox Development Kit,"XDK")是用于Xbox开发的官方SDK。 它是一个包含许多工具、库和编译器的软件包。 最值得注意的是,它与Visual Studio .NET(2002版)一起使用,无论好坏,后者在当时都是相当不错的IDE。
图形库是对Direct3D 8.0的定制实现,并对其进行了扩展,以包含Xbox特有的功能。 Direct3D是一个非常强大的API,用于开发与许多GPU兼容的代码。 有了它,PC开发人员就有机会移植他们的PC游戏,而无需做太多改动(理论上如此!)。 不过,顶点程序和像素着色器使用的语法与汇编语言极为相似。
除此之外,音频功能由DirectSound提供,它负责APU,无需担心音频数据的移动。 此外,还有一些网络库,对于实现在线功能(即多人游戏)非常方便。 网络API依赖于Windows Sockets,这是微软为简化网络通信而尝试使用的Windows专用协议(尽管其设计基于标准化的对应协议BSD sockets)。
为了尝试这一切,微软分发了他们自己的开发套件硬件,这只是一个绿色的零售版游戏机,安装了双倍的RAM(总计128MiB),有时还安装了不同的MCPX芯片(称为MCPX-2,可直接从闪存ROM启动)。 它包含一个增强版Dashboard,可启动经XDK签名的可执行文件。 在另一端,Xbox Neighbourhood(一个Windows应用程序)用于将开发工具包与Visual Studio相连,从而方便部署和调试。 为了试用Xbox Live,微软还提供了沙盒服务器。
NXDK

NXDK的结构。 请注意,尽管一些低级库被高级库所包裹,但开发者仍可访问它们
为了避免使用官方SDK的自制软件开发者遭遇版权诉讼,一群与微软无关的开发者创建了一个名为Open XDK的官方SDK替代版本。 几年后,开发工作停止了,于是另一个开发小组接手了它,并将新分支命名为"New XDK"或"nxdk"。
该项目对底层硬件组件(微代码、推送缓冲区等)进行了逆向工程,并设计了新的C/C++应用程序接口,为系统的每个部分提供了高级调用。
为了在不依赖Direct3D的情况下简化图形层,nxdk使用了CG 编译器。 CG是英伟达为开发着色器而创建的语言。 CG与其他编译器连锁生成与Xbox兼容的代码。 在编译过程中,CG代码会被转换为NV20兼容的汇编程序,然后再使用自定义编译器进行翻译,生成NV2A兼容的微代码和推送缓冲区。 对于不想使用CG的用户,nxdk还提供了其他编译器来编写底层着色器。
其他可用的API可处理其他服务(音频、网络等)。 总而言之,该库提供了更多的硬件控制(与官方SDK相比),代价是不使用微软的API(事实上的标准,尽管完全是专有的)。 不过,nxdk仍是开发合法自制软件的最佳选择。
存储介质
游戏以双层DVD光盘(最大容量为8.5GB!)的形式发布,随后由包含反盗版保护功能的定制DVD驱动器读取(尽管使用的是标准接口ATA)。 值得一提的是,XDK包括一些定制光盘数据布局的工具,使程序员能够提高读取速度!
现在,游戏机还内置了一个8 GB HDD,游戏可以用它来存储保存内容或缓存临时内容。 系统则存储Dashboard、Xbox Live设置和网络设置。
网络服务
忘掉调制解调器或实验性服务吧。 Xbox包含了如今我们认为理所当然的一切,以提供像样的在线服务: 以太网连接和集中式在线基础设施(称为Xbox Live)。
此外,Xbox Live不仅支持在线多人游戏,还包括其他功能,如用于实时语音聊天的音频流。
但Xbox Live到底是什么呢? 嗯,它只是一个相互连接的在线服务集合,公司可以用它来建立自己的在线平台。 例如,其中一项服务提供用户个人信息,因此工作室在访问游戏的在线功能时可以将其用作验证方法。 在官方SDK中,微软包含了一些与Xbox Live服务器进行对话的API。
需要指出的是,微软控制着向谁授予Xbox Live访问权,因此开发者必须向微软注册,以获得游戏将使用的认证密钥。
真正的在线体验发生在标题服务器(Title Server)中,这是一种与世界各地的客户端(Xbox游戏机)应答并处理实时通信的服务器。 微软在其SDK中提供了一些示例来演示如何构建这些服务器,不过这些示例依赖于Windows系统,而且必须部署在运行Windows Server的数据中心中。
新趋势的开始
在分析了微软推出的Xbox Live及其对整个行业的影响之后。 现在听起来很明显,对吗? 好像"正规在线游戏"(即以太网+网络基础设施)的秘诀一直都在,但并非每家公司都愿意投资。
事实证明,事情没那么简单: 微软还必须让用户相信,他们"需要"这种功能,在线多人游戏不是可有可无的附加功能,而是某些游戏的基本组成部分。 否则,微软的努力将只是另一种"在线尝试"。
试着想象一下,在这样一个世界里,没有游戏机玩家想要在线游戏,也没有人相信PC架构可以成为游戏机。 事实就是如此。 但现在看来很明显,事实并非如此。
——Seamus Blackley


