SDL 2.0

經過多年的開發,SDL(Simple DirectMedia Layer)於近日發佈 2.0 的正式版本(在開發期間又稱為 1.3 版)。不過在此之前,已經有一些遊戲採用 2.0 的開發版本,其中包含 Valve 旗下的 Linux 遊戲。2.0 的主要更新項目可參閱此頁面:

http://wiki.libsdl.org/moin.fcg/MigrationGuide

 

SDL 是一款基於跨平台開發需求所設計的多媒體函式庫,並主要是針對遊戲開發領域。其設計原理是將各個平台原生的函式庫(例如 Windows 的 DirectX、Unix-like 系統的 Xlib 等)重新包裝成相同的存取方式 ,讓開發者得以使用相同的程式碼來建構不同平台的應用程式。此外 SDL 也大幅簡化了實作多媒體功能所需撰寫的程式碼(可參見此 PDF 簡報第 13-25 頁)。

 

SDL 原生支援的程式語言為 C/C++,但也有其它語言的綁定版本,例如 Python 等。2.0 的授權模式也從 LGPL 改為 zlib,也就是說,SDL 2.0 用在封閉原始碼的商業遊戲上並不會有任何連結方式的規範。

 

SDL 2.0 與之前的 1.2 版還有個顯著的不同是除了原本就支援的 PC 平台外(Windows、Mac OS X、Linux),還正式支援目前主流的行動平台:iOS 和 Android。支援行動平台的具體改進包含支援了 3D 繪圖所需的 OpenGL ES,在此之前,SDL 若要整合 OpenGL ES,就得使用特別的修改版本,或者另外撰寫繪圖的部份而不經過 SDL。

 

當年 SDL 可說是在基於提昇 Linux 桌面市場的考量下發展出來的,不僅是為了將既有的 Windows 遊戲移植到 Linux,也是為了能夠吸引遊戲開發商以不需多少額外成本的方式,開發出同時支援 Windows 和 Linux 的遊戲。

 

這讓 DR 想到,近年來行動平台的生態戰場越戰越烈,應用程式的供應仍然是很大的影響因素,新加入或者殿後的平台與其發展專屬於自家平台的開發技術,不如考慮發展並且推廣一套能夠支援多種平台的開發技術。如此一來,就有機會吸引開發商藉由使用跨平台的技術,來為該平台推出應用程式。

 

至於 DR 自己應該是不會很快的就用到 SDL 2.0,因為目前有空就稍微研究的遊戲原始碼都還是基於 SDL 1.2。除此之外,根據 Ryan C. Gordon 的公開筆記,他和另一位主要開發者 Sam Lantinga 在撰寫針對 2.0 的文件時經過實作發現了一些問題(這故事告訴我們:撰寫文件對程式除錯頗有助益),包含 bug 以及部份不符合初始設想的函式功能,尚未修正的問題可能會在下一版做出修正。

 

分類: