Crystal Space:开源 3D 图形引擎

作者:Howard Wen

想要制作 3D 图形游戏或应用程序?首先,您需要一个 3D 图形软件引擎来构建它。传统上,您的选择仅限于从头开始编写自己的引擎,或者支付高昂的许可费来使用另一家公司的引擎,这可能会限制您对最终产品的商业用途。

然而,还存在第三种选择:Crystal Space,一个由 31 岁的比利时程序员 Jorrit Tyberghein 创建的开源 3D 图形引擎。

Crystal Space: an Open-Source 3-D Graphics Engine

使用 Crystal Space 渲染的室内环境

Tyberghein 在 1997 年看到了像 DoomQuake 这样的游戏后创建了 Crystal Space,并想知道它们是如何制作的。在没有图形编码经验的情况下,他在互联网上研究了 3D 图形编程,并在两个月内完成了 Crystal Space 的第一个版本。Tyberghein 以开源形式发布了代码,Crystal Space 开发社区很快诞生了。此后,该图形引擎已从其原始 Linux 代码移植到 UNIX、Windows 32 位和 NT 以及其他操作系统。

目前使用 Crystal Space 制作的大部分软件是角色扮演游戏。该引擎包含对一个或多个摄像机视角的完全控制,并内置了对网络的支持,这使得开发多人游戏(如角色扮演游戏)更加容易。还有飞行模拟器、实时战略游戏和第一人称射击游戏,类似于 DoomQuake,正在使用该引擎进行开发。

Crystal Space: an Open-Source 3-D Graphics Engine

一个演示 Crystal Space 若干特性的测试应用程序

至于 Crystal Space 与商业 3D 图形引擎(特别是那些驱动像 Quake IIIUnreal Tournament 这样的游戏的引擎)相比如何,目前它在特定图形功能方面具有可比性,但在代码就绪性和性能速度方面则不然。但总的来说,Crystal Space 更加丰富,因为它不仅仅是一个特定于游戏的引擎。它还是一个通用的图形 API,并且正在被用于驱动诸如多媒体互联网浏览器、声音编辑程序和图像查看器之类的应用程序。

来自俄罗斯圣彼得堡的 28 岁程序员 Andrew Zabolotny 一直在为 Crystal Space 的高级编码做出贡献,他说:“我们有很多 QuakeUnreal 永远不需要的东西,因为第一人称射击游戏是一种非常特殊的游戏类型,只需要有限的功能集。”

Crystal Space 的特性:优点和缺点

使用过 Crystal Space 的开发人员认为,该引擎的稳定性(很少崩溃)及其 3D 渲染功能的完整性是他们使用它并为其开发做出贡献的原因。

然而,考虑到先进而强大的 3D 图形芯片组已成为大多数 PC 的标准配置,如今 3D 图形引擎有多必要呢?简单的答案是,即使拥有最好的 3D 技术,您仍然需要一个软件引擎来管理硬件正在做的事情。

Crystal Space 的创建者 Tyberghein 说:“硬件的功能总是有限的”。“即使是最好的硬件也无法仅通过渲染数百万甚至更多的多边形来处理它们。因此,引擎仍然必须进行一些优化,以限制发送到硬件的内容。”

例如,像 Crystal Space 这样的软件引擎是必要的,它可以快速确定游戏虚拟环境中哪些部分对用户可见。这有助于最大限度地提高 3D 芯片组的性能,而不会浪费其资源来渲染实际上不会出现在监视器上的对象,即使它应该存在于虚拟环境中(即使在摄像机外,远离用户的视点)。

Crystal Space: an Open-Source 3-D Graphics Engine

使用 Crystal Space 的 Landscape 创建的示例环境

Crystal Space 在 LGPL 许可下是免费的。这款用 C++ 编写的 3D 游戏开发工具包支持众多图形特性和花哨的效果:真正的六自由度;彩色照明;mipmap 贴图;门户;镜面;Alpha 透明度;反射表面;基于帧和骨骼动画的 3D 精灵;程序纹理;辐射度;粒子系统;光环;体积雾;使用 Python 或其他语言进行脚本编写;8 位、16 位和 32 位显示支持;Direct3D、OpenGL 和软件图形渲染;字体支持;以及分层变换,仅举几例。

虽然它在性能上无法与像 Quake IIIUnreal Tournament 这样的图形引擎相媲美,但 Crystal Space 却比它们具有自己的优势:首先,它是跨平台的,因此您可以编写可以在 Linux、UNIX、Windows 32 位、Windows NT 和已移植该引擎的其他七个操作系统上同样良好运行的代码。

Crystal Space 具有灵活的插件系统,因此单个可执行文件可以与各种渲染器(如 OpenGL、Direct3D 和 Glide)一起使用。自从引擎的第一个版本发布以来,特别是 OpenGL 渲染器已被重写,并且运行速度比以前的版本快得多。

Crystal Space: an Open-Source 3-D Graphics Engine

在实时渲染的场景中,一艘星舰飞向地球

同样重要的是,Crystal Space 可以自动读取许多 3D 图形文件格式。有几个导入器支持各种 3D 格式(如 3DS、OBJ、MDL、MD2、LWO 和 ASE)。相反,该引擎有一组 Python 脚本,因此可以从 Blender 中将环境和模型导出到 Crystal Space。

虽然该引擎的主要目的是生成 3D 图形,但它甚至有一个 2D API 与其 3D API 一起使用。“我编写了一个完全成熟的窗口 GUI,完全基于 Crystal Space 低级 API”,Zabolotny 说。

甚至可以将单独的代码片段在 Crystal Space 之外用于与游戏或多媒体开发无关的项目。这些包括 csIniFile 类(用于 .ini 文件管理)、SCF(共享类工具)子系统、csArchive 类(处理 .zip 文件)和 VFS(虚拟文件系统)子系统。

Crystal Space 最显著的弱点是缺乏良好的碰撞检测编程。Thomas Hieber 一直在使用 Crystal Space 开发第一人称射击游戏 Crystal Shooter,他大部分时间都在改进引擎在这方面的能力。“它有一些支持,但对于游戏来说不是很实用”,这位来自德国的 30 岁软件工程师说。“只有对象与对象之间的静态测试,基本上会返回有关碰撞发生位置的信息(如果有的话)。但是,对于快速移动的物体,没有很好的支持。”

另一个复杂的问题是 Crystal Space 如何处理照明。它支持带有柔和阴影的彩色静态和动态照明,但在所有可能的游戏处理情况下都使其快速工作是一个挑战,而 Crystal Space 目前尚未完全满足这一挑战。

Crystal Space: an Open-Source 3-D Graphics Engine

雪花飘落在闪亮的地板上,演示 Crystal Space 的

Crystal Space 的未来

Crystal Space 社区绝对需要程序员做出贡献。Tyberghein 正在寻找擅长图形引擎内部编程和精通算法思维的人——本质上是那些可以帮助微调核心引擎性能的人。“在 Crystal Space 的其他部分(即 OpenGL 和 Direct3D 编程、Windows 和 Linux 移植)方面,我有很多人的帮助,但很少有人能够帮助我处理引擎”,他说。

“如果我们有更多优秀的程序员,我们可以做得更多”,Zabolotny 说。“我们主要需要擅长跨平台 C/C++ 编程的人。”

在撰写本文时,Crystal Space 团队的首要目标是实现 API 稳定性。“我们的开发版本现在相当稳定,但仍有一些事情要做”,Tyberghein 说。当前发布的 Crystal Space 0.90 版本是期待已久的 1.0 版本的先行版。0.90 和 1.0 之间的 API 应该几乎相同,但发布 0.90 的目的是为了方便错误查找和文档编写。

正在测试的 0.90 版本中的增强功能之一是经过改进的景观渲染引擎,它比以前的版本更紧密、更好地集成到 Crystal Space 的代码中。图形引擎可以绘制几种新的特殊效果,如雾霾和镜头光晕,并且还添加了粒子渲染系统。在技术层面上,Crystal Space 的工具已经变得更加模块化,并且更易于访问。以前在单独库中提供的更多插件和代码已被合并。

最终,Crystal Space 能否发展到足以用于商业游戏开发,并像专有的 3D 图形引擎一样被广泛使用?即使 Tyberghein 也表示怀疑

如果您许可 Quake III 引擎,那么您肯定会获得可以正常工作的高质量产品。因此,如果您需要技术支持,则不应使用免费引擎。但是,如果您觉得自己可以应对缺乏支持的情况,或者如果资金是一个问题,那么开源引擎适合您。

Crystal Space: an Open-Source 3-D Graphics Engine

使用 Crystal Space 的粒子动画系统渲染的星星

Hieber 承认“Crystal Space 离 Quake III 还差得很远”,但他不认为这会妨碍任何人使用 Crystal Space 制作出色的游戏。毕竟,它的设计很好,尽管它不一定拥有强大的技术,这会影响游戏的质量。“看看 Tomb RaiderHalf-Life”,他指出。“它们都没有真正出色的 3D 引擎,但它们都因为其游戏玩法的价值而取得了成功。”

访问 Crystal Space 网站:crystal.sourceforge.net

Crystal Space: an Open-Source 3-D Graphics Engine
电子邮件:wen@airmail.net

Howard Wen 报道视频游戏行业超过十年,为多家出版物和网站撰稿,包括 Wired、Salon.comPlayboy.comGameSpot.com、O'Reilly Network 和 Dallas Observer。他最初是作为 VideoGames & Computer Entertainment 的专职作家开始报道视频游戏行业的。您可以通过他的网站 www.howardwen.com 与他联系。

加载 Disqus 评论