Oct 27 2008

Database Hot Loader 三部曲:Implementing Observer Entity

文章分類: 進階技術
Observer Entity

Observer Entity

在前篇文章裡,以 VSTO 與 Lua 實作了 DHL 系統中資料匯出、讀取以及管理的核心功能後,本文將以一個簡單的 3D 程式範例,介紹如何將 DHL 系統與遊戲物件相互結合,以實現真正能夠使用於遊戲專案中的預定目標。

藉由之前建立完成的 LuaDatabaseManager 類別,已經能夠幫助我們動態修改並且載入 Lua 格式的資料庫表格,但是該如何使遊戲中的物件對資料庫的變化產生自動化反應呢?只要利用設計模式中的 Observer 模式,就能夠使我們順利達成目標。

如圖所示,在範例程式中,以 OpenGL 繪製出一個基本的三角形物件以及一個矩形物件,同時在視窗裡不停地旋轉;而視窗程式的建立,則使用 GLUT 函式庫以簡化相關的程序。

首先,在程式碼中創建出 Triangle 與 Quad 類別,分別用來代表畫面中的三角形與矩形物件。而這兩個物件的頂點、顏色、位移、旋轉軸與旋轉速度數值,則由 Excel 工作表中的資料數據進行設定。在範例程式的 Excel 檔案中,共有以下三張工作表:

  • triangle
  • quad
  • speed

在 triangle 表格裡的 vertex1、vertex2、vertex3、color1、color2 與 color3 欄位,分別定義了三角形物件的三個頂點及顏色的資料,而最末的 translate 與 rotate 欄位則用來定義三角形物件的位移量與旋轉軸;quad 表格以此類推。在 speed 表格中,只有 triangle 與 quad 兩個欄位,分別定義了這兩個物件的旋轉速度。

繼續閱讀 << "Database Hot Loader 三部曲:Implementing Observer Entity"


Oct 21 2008

《OpenGL 3 & DirectX 11: The War Is Over》:繪圖 API 終戰之日?

文章分類: 遊戲程式閱讀
OpenGL Logo

(圖片來源:www.cnblogs.com)

原文出處:OpenGL 3 & DirectX 11: The War Is Over

現今在 DirectXOpenGL 皆已相當普及的年代裡,我們似乎也逐漸淡忘了兩者從前的那段江湖恩怨。在著名硬體網站 Tom’s Hardware 的這篇專欄文章裡,作者帶領我們重新回顧這場「繪圖 API 戰爭」中的起伏轉折,以及 OpenGL 3 與 DirectX 11 的未來展望,是篇值得仔細閱讀的好文章。

「DirectX 最殺!很強很邪惡的微軟帝國萬歲!」
「想跨平台嗎?OpenGL 才是唯一的光明道路!」
「我是初學者,應該要選擇 DirectX 或 OpenGL?」
「我想做出一款超棒超好玩的遊戲,要用 DirectX 還是 OpenGL 比較好?」

身為遊戲程式設計者,如果你有定期瀏覽國外各大程式論壇的習慣,應該會對以上這些問題感到非常親切、熟悉,而且可能還會有些反感吧?在遊戲程式設計相關領域的討論區裡,最常見的萬年討論串非「DirectX 與 OpenGL 的比較」莫屬。DirectX 與 OpenGL 雙方各有死忠的支持者陣營,只要在網路上裡提出類似以上敘述的問題,往往會引來雙方擁護者激烈的對抗與辯論;如果又不小心觸動了某些資深程式設計者的「逆鱗」,就更加會戰到天荒地老無以復加。

在過去的短短幾年之內,我們親身經歷了消費性 3D 顯示卡市場的爆炸性成長。從以前只有硬派玩家會花大錢購買的「3D 加速卡」,到現在幾乎已成為標準配備的「3D 顯示卡」,電腦繪圖硬體不僅成功地打入了一般消費者的市場中,其性能也獲得革命性的突破,目前 GPU 的電晶體數量甚至已經超越了 CPU。時至今日,DirectX 與 OpenGL 在電腦繪圖與遊戲業界中的地位,究竟是處於分庭抗禮的情勢,或者已經分出了勝負?且讓我細說從頭。

繼續閱讀 << "《OpenGL 3 & DirectX 11: The War Is Over》:繪圖 API 終戰之日?"


Oct 15 2008

Database Hot Loader 二部曲:Using VSTO and Lua

文章分類: 進階技術

接續前篇文章的簡短介紹,本文將開始使用 VSTO 與 Lua 語言實作 DHL 系統。首先,定義 DHL 系統的開發環境以及執行環境:

Database Hot Loader 系統

  • 程式開發環境:Visual Studio 2005 Team Suite
  • 使用者執行環境:Office 2003

為了使 Office 2003 達成轉換資料格式的任務,必須仰賴 VSTO 所提供的擴充功能。Visual Studio Tools for Office (簡稱為 VSTO)的作用,簡單來說就是讓程式設計者能夠在 Office 應用程式中,使用 .NET 撰寫附加的擴充元件,使一般的文件檔案,也能夠具備客製化的特殊功能。另外,微軟 .NET 平台的優勢,就是能夠使用 .NET 家族中的任何一種語言來撰寫程式,在此我選擇 C# 做為開發 DHL 系統的語言。

只要使用 VSTO,幾乎就能夠達成一切 Winform 可以做到的事情。在活頁簿上放個按鈕元件?沒問題;另外產生一個全新的 Winform?小意思;在 Excel 的主選單上增加自訂項目?一片蛋糕。總是覺得 Office 應用程式某些地方用得不夠順手嗎?有了 VSTO 以後,就可以幫助我們達成自己動手撰寫擴充功能的願望。

在前篇文章中,曾特別提到需要使用 Visual Studio 2005 的 Team Suite 版本,原因在於 DHL 系統必須使用 VSTO 的「文件層級」(document-level) 擴充程式,而在 Visual Studio 的眾多版本中,只有 Team Suite 版本能夠開發文件層級的擴充程式,一般程式設計者常用的 Professional 版本則只能夠開發 VSTO 的「應用程式層級」(application-level) 擴充程式。關於文件層級與應用程式層級的介紹,請參考「Visual Studio Tools for Office 」中文線上文件裡的詳細說明。

繼續閱讀 << "Database Hot Loader 二部曲:Using VSTO and Lua"


Oct 10 2008

登泰山而小天下:Boost C++ Libraries 初體驗

文章分類: 學習筆記

說來有些慚愧,一直以 C++ 語言做為謀生工具的我,在使用了多年的 C++ 程式語言之後,最近終於與聞名遐邇的開源專案 Boost C++ Libraries(簡稱為 Boost)進行了第一次的親密接觸。在本文裡,將參照 Boost 官網的「Getting Started on Windows」文章,於 Windows 作業系統以及 Visual Studio 2005 程式編譯器的環境下,詳細介紹安裝及建置 Boost 的步驟,並且在最後使用 Boost.Thread 函式庫做為測試範例。

從前就常聽到其他人談論著 Boost 的優點,但是只要知道其中由上千個標頭檔以及數十個函式庫所組成,而且還需要以繁複的步驟手動建立函式庫的 .lib 檔案,很容易就會使初學者望而卻步。對於用慣了程式整合開發環境以及現成函式庫的我來說,Boost 簡直就像是一座美麗動人但又戒備森嚴的堡壘般令人不敢輕易接近。多年以後的現在,總算是鼓起了勇氣重新面對 Boost。花了些時間閱讀文件,然後按照指示一步步完成安裝建置之後,發現原來這些步驟比起從前已經簡化許多,函式庫的使用也不如想像中的困難!

One of the reasons for boost’s success has been the cross-pollination of ideas between diverse library projects.

Boost 是由一群功能獨立的函式庫所組合而成的集合體,其中涵蓋了許多熱門而經常使用的函式庫,以及比較冷門的特殊功能作用函式庫。所有的函式庫都包含在名為 boost 的 namespace 中,不僅能夠使各函式庫維持一致的使用風格,同時也得以避免命名衝突的問題。如官網中的 FAQ 所述,Boost 的成功正是由於不同功能函式庫之間的「交叉授粉」(cross-pollination) 作用所致;雖然其中多數函式庫都能夠分開獨立使用,但正是由於函式庫之間相互支援的功能以及介面,才使得 Boost 的開發者社群與使用者社群能夠蓬勃發展且欣欣向榮。

繼續閱讀 << "登泰山而小天下:Boost C++ Libraries 初體驗"


Oct 04 2008

電腦遊戲市場的善與惡:玩家權利法案 VS. 數位著作權管理

文章分類: 市場行銷

在美國的憲政體制中,《權利法案》(Bill of Rights) 的制訂是一項相當重要的里程碑,不只保障了身為美國公民的基本權利,更進一步使人們能夠享有充足的言論自由與媒體出版自由。換個角度,如果站在「遊戲玩家」的立場來看,我們是否也應該擁有關於遊戲軟體產品的基本權利以及保障?

在今年八月底時,獨立遊戲開發公司 Stardock 的執行長 Brad Wardell 提出了一份「玩家權利法案」(The Gamer’s Bill of Rights),洋洋灑灑總共列出十項遊戲玩家應享有的基本權利;此舉動不僅震驚了整個遊戲業界,也隨即在國外各大網站的玩家社群中引起廣大的迴響與討論。

(圖片來源:www.aeropause.com)

玩家權利法案

  • 玩家有權利退回無法在他們電腦上執行的遊戲,並且獲得全額退費。
  • 玩家有權利要求遊戲必須以完成狀態上市。
  • 玩家有權利期望在遊戲上市之後,獲得有意義的更新內容。
  • 玩家有權利要求不需強制執行遊戲的下載管理員與更新器,才能夠進入遊戲。
  • 玩家有權利期望遊戲能夠在最低需求配備的電腦上充分地運行遊戲。
  • 玩家有權利期望遊戲不會安裝隱藏的驅動程式,或其他可能潛在有害的軟體。
  • 玩家有權利能夠在任何時間重新下載任何一款他們所擁有的遊戲的最新版本。
  • 玩家有權利不被遊戲開發者或發行商視為潛在的犯罪者。
  • 玩家有權利要求遊戲的單人模式,不強迫他們在每次進行遊戲前都必須連結網際網路。
  • 玩家有權利要求遊戲可以完整安裝於硬碟,不需要遊戲的光碟片才能夠執行遊戲。

請以遊戲玩家的身份,仔細地閱讀以上「玩家權利法案」中的條文敘述:你的直覺反應是搖頭不以為然,或者猛然點頭稱是?

繼續閱讀 << "電腦遊戲市場的善與惡:玩家權利法案 VS. 數位著作權管理"