SDL 的起源
SDL 在两年前问世,当时我正致力于从 Macintosh 仿真器 Executor到 Win32 的移植工作。我注意到同一个功能在几个平台上基本上都是以相同的方式实现的。所有目标都要求可以访问屏幕、映射鼠标和键盘输入,以及播放声音。我想:为什么不写一个跨平台的库来提供这些许多人会用到的基本服务?应用程序开发者只需要写一个 API,这样就大大简化了他们的工作,还可以使他们的代码可以迅速在多个平台上运行,以吸引尽可能多的观众。我开始着手进行,一年多以后,第一个稳定的 SDL 发行版诞生了。
创建 SDL 的第一步就是要标识所需的功能。根据分析 Executor 和以往的移植经验,我已经有了一个好的想法。下一步就是构建在 Win32 和 Linux 上运行的有效原型。我知道对于 API,最大的考验就是在实际的应用程序下工作,因此我所做的第一件事就是使用它来完成从 Executor 到 Win32 的移植。在这段时间里,我不断添加 API 的主体,并将它移植到 BeOS。然后,采用最新得到的 DOOM!源码,在短短三天时间内,就使它可以在所有三个受支持的平台上顺畅地运行。
一年以后,我现在使用它来将世界上最好的一些游戏移植到世界上最受欢迎的操作系统 Linux 上。虽然我就职于商业公司,但这个库本身是免费的,并且它是开放源码概念力量的体现。
来订阅该邮件列表。该邮件列表镜像为 上的一个新闻组。加入这个邮件列表以获取关于使用 SDL 的提示,错误修正的最新公告和新的功能,及使用 SDL 的项目的预览版本。 有一个非常棒的用于 Win32、DOS、Linux、OS/2 和 QNX 的图形库。但它是一个商业库,而 VESA 控制台驱动程序对于 Linux 是免费的。因此,可以支持 SDL 中的 VESA 控制台驱动程序。
Mesa 集成为一个 GLX 层。OpenGL 绝对是将来在 Linux 上开发三维游戏的方法。但是,GLX API 处理事件的方法不如 SDL 那样灵活。有人要求将类似于 GLX 的扩展集成到 SDL,以将它用作基于 GL 的游戏的输入接口。
重新设计体系结构以允许多重显示和多重输入。当前的体系结构将 SDL 函数以存根模块编译,并在运行时动态装入低级驱动程序。这种跨平台执行方式将导致一个难于使用的构建过程,并产生一个复杂的头文件。对我来说,最要紧的一件事就是重新设计构建过程,这样所有驱动程序都可以编译到一个库中,然后在运行时动态选择。这样做的好处就是可以同时有多个活动的显示和输入方法。想像一下游戏同时在控制台和远程 X11 显示器上运行!
更多游戏!SDL 的改进将使越来越多的人使用这个库,而越来越多的游戏将会出现在 Linux 上。在 http://www.devolution.com/~slouken/SDL/intro/toc.html上可以找到 SDL API 的非常好的介绍,以及使用 SDL API 的项目列表。
能够涉足 Linux 游戏,我感到非常激动,我希望能够继续工作为 Linux 世界带来欢乐,因为 Linux 待我太好了。正如他们所说的,企鹅也喜欢寻开心。
阅读(1762) | 评论(0) | 转发(0) |