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. 數位著作權管理"


Sep 29 2008

Database Hot Loader 首部曲:Introduction

文章分類: 進階技術

mana-energy-potion「我有一個夢想,期望有天我們能夠免於調校遊戲資料數據的苦痛。」馬丁路德博士夢想,是人人生而平等並且免於種族歧視的迫害。而我的夢想,沒有這麼崇高偉大,只是希望能夠幫助團隊成員改善遊戲的開發流程。

每次當我看到遊戲企畫者,為了調整遊戲中的各種數據,而必須不斷重複一連串繁瑣而且漫長的操作程序,就替他們感到很辛苦。為了測試資料數據的正確性,首先要在 Microsoft Office Excel 上輸入資料內容,存檔後匯出,接著以外部工具將文字檔轉換為遊戲自訂的檔案格式,把檔案置入遊戲目錄中,最後再開啟遊戲,等待遊戲程式以及遊戲資料載入完成,然後檢視執行的結果。

「咦,食人怪的偵察範圍太遠,而火球魔法的距離太近了些。」於是按下離開遊戲的快速鍵,然後在 Excel 表格中修改相對應的數據後,再次存檔匯出,再次以外部工具轉換為遊戲自訂的檔案格式,再次把檔案置入遊戲目錄中,然後再次開啟遊戲,再次等待遊戲程式與遊戲資料載入完成。

(圖片來源:www.play-gadgets.com)

除非企畫設計者擁有強大的靈動感知能力,能夠精準地預測出合適的遊戲數值,否則總是需要不斷地嘗試錯誤並且經歷許多修改程序,才能夠將遊戲數據調校到完美平衡的狀態。不停地、不停地、不停地重開遊戲,幾乎是每位遊戲企畫設計者都曾經歷過的處境。在遊戲專案開發初期時,可能還感受不到特別的困擾之處;然而當專案到了後期階段,遊戲中的美術素材動輒佔有成千上百 MB 的份量,所以每次開啟遊戲都必須要等待漫長的遊戲初始化載入時間,甚至只是修改單一一個欄位的數據,同樣難以免於遊戲重開的等待過程。

有沒有可能改善這種狀況,減少重新開啟遊戲程式的頻率?有沒有可能在不需要重新啟動遊戲程式的情況下,讓企畫設計者能夠即時調整遊戲的資料庫數據?

繼續閱讀 < < "Database Hot Loader 首部曲:Introduction"


Sep 24 2008

《The Code/Art Divide: How Technical Artists Bridge The Gap》:技術美術設計者,為您搭起團隊的橋樑

文章分類: 遊戲美術閱讀

saints-row2原文出處:The Code/Art Divide: How Technical Artists Bridge The Gap

當遊戲專案的規模日益龐大,團隊成員的數目也越來越多的情況之下,伴隨而來的就是更為精細的分工模式與更加複雜的製作程序。精細的分工合作模式,使美術設計者、企畫設計者與程式設計者都能夠專注在自己最擅長的領域中,但同時也無可避免地加深了不同領域之間的距離與鴻溝。而為了解決美術設計者與程式設計者之間的鴻溝,本文將介紹在遊戲開發團隊中的一個相當特別的職位:Technical Artist,技術美術設計者,簡稱為 TA。

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

何謂「技術美術設計者」?這個角色所具備的專業能力為何?TA 究竟屬於美術設計者還是程式設計者?如果以英文的字意來解釋,Technical Artist 所指的是「技術的美術者」,也就是懂得程式技術的美術設計者。在遊戲開發團隊中,TA 的作用就像是一座橋樑,職責在於連結起美術設計領域與程式設計領域之間的萬丈鴻溝。

以 3D 遊戲的開發流程來說,美術設計者在 3ds Max 或 Maya 軟體中所創造的各種遊戲素材 (Game Asset),包含模型、動畫與其他物件,並不是只要在製作完成之後按下「儲存檔案」的按鈕後就算是大功告成。事實上,在絕大多數的情況下,由這些套裝軟體所產生的原生檔案格式如 .max 與 .3ds 等等,都無法直接在遊戲程式的系統中使用。

繼續閱讀 < < "《The Code/Art Divide: How Technical Artists Bridge The Gap》:技術美術設計者,為您搭起團隊的橋樑"


Sep 18 2008

Prototype:物件原型複製者

文章分類: 設計模式

prototype-uml在物件導向生成設計模式的範疇中,除了之前曾經介紹過的 Facory Method 以及 Abstract Factory 兩項工廠類型的模式以外,本文將繼續介紹另一項在遊戲程式領域中,經常受到廣泛使用的 Prototype 設計模式。

Prototype,原意為原型或雛形,與工廠模式接收到使用者命令之後即時生產物件的方式不同,在 Prototype 模式中,我們需要先打造出物件的原型樣版,待鑄模程序完成以後,接下來就能夠輕易地以此原型複製產生出全新的物件。複製,也可以是一種生成物件的方法。如 UML 圖所示,在 Prototype 設計模式中,定義了三個參與角色:

  • Prototype:宣告自我複製的介面。
  • ConcretePrototype:具體實作出自我複製的操作。
  • Client:叫原型個體自我複製一份,以生出新的物件。

按照上述的責任關係,程式系統的使用者 Client 只需要指涉到基礎的 Prototype 介面,就能夠以此 Prototype 介面所宣告的 Clone() 方法,複製出類別的物件成品;而 ConcretePrototype 們衍生自 Prototype 介面,是 Client 進行 Operation() 方法後將會獲得的實際成品,所以必須一肩扛起實作 Clone() 內容細節的重責大任。

繼續閱讀 < < "Prototype:物件原型複製者"


Sep 12 2008

1980,我們的寂寞星球與孤獨世代

文章分類: 生活雜記

starry-night1980 年前後出生的我們,誕生在一個荒誕而奇異的年代。

1980 往前,是經歷過經濟起飛時期的父母長輩;1980 向後,是成長於物質與資訊不虞匱乏時期的年輕後輩。1980 是民國 69 年,正好處於六年級生後段班與七年級生前段班交界點的位置。屬於 1980 年代這一掛的我們,現在還不是社會上的中堅份子,但也不是媒體形塑出來的爛草莓族。我們所站的位置,似乎有那麼一點特別。

在上一代長輩的眼裡,我們被視為過度早熟的孩子,不論是知識、資訊或者自我意識,所有的事物都接觸得太早也來得太快;事實上,我們都是晚熟的大孩子。大學的錄取率逐年攀高,新鮮人的起薪停滯不前,工作機會越來越少,在畢業幾乎等同於失業的狀況下,不論是有意或者意料之外的延畢,再加上就讀研究所的時間,都拉長了校園生活的時期,也延後了正式踏入社會上班工作的年齡。由於比較晚踏入社會的緣故,所以在心理狀態上,自然呈現出與實際年齡不成正比的晚熟程度。

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

繼續閱讀 < < "1980,我們的寂寞星球與孤獨世代"


Sep 04 2008

《Flagship Founder Bill Roper Interview》:地獄之門崩壞,旗艦之夢沈沒

文章分類: 遊戲開發閱讀

hellgate-london原文出處:Flagship Founder Bill Roper Interview

2003 年,冬天,旗艦工作室 (Flagship Studios) 於萬眾矚目之下創立起始;2007 年,秋天,旗艦工作室的第一個遊戲作品《地獄之門:倫敦毀滅》正式於歐美地區發行上市;2008 年,夏天,旗艦工作室大量資遣公司員工,旋即於同年七月宣告沈沒覆滅。

五年,人生有幾個五年可以揮霍?

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

Bill Roper,身為旗艦工作室的首席執行長以及共同創始人,也是 Blizzard 公司三大名作《魔獸爭霸》、《暗黑破壞神》以及《星海爭霸》的遊戲製作人 (Producer),如果讀者清楚瞭解他的資歷,曾經玩過、看過或者聽過他所參與開發的遊戲作品,應該很難不對於旗艦工作室的黯然落幕感到震驚:像他這樣成功經驗豐富的遊戲開發者,怎麼可能會失敗!?

還記得五年前,那個 2003 年的夏天,當我正在軍營裡折騰翻滾的時候,Blizzard North 分部的三位創始人以及副總裁 Bill Roper 宣布集體離開如日中天的 Blizzard 公司,不僅在玩家社群中掀起巨大的波瀾,也大大地震撼了整個遊戲業界。於是,開始有人說 Blizzard 公司快要完蛋了,有玩家說《暗黑破壞神》不會再有續作了。經過將近四年的開發時程後,背負著無數玩家的熱切期望,在許多狂熱者眼中引頸期盼,能夠繼承《暗黑破壞神》系列作精神的《地獄之門:倫敦毀滅》終於在 2007 年 10 月 31 日上市。

但是很遺憾地,這款嘔心瀝血的遊戲大作,在大多數的遊戲評論者與玩家之中,都無法獲得良好的回應及評價。

繼續閱讀 < < "《Flagship Founder Bill Roper Interview》:地獄之門崩壞,旗艦之夢沈沒"


Aug 30 2008

遊戲開發入門:專案時程怎麼估?

文章分類: 流程管理

gantt-chart在專案管理領域中,所謂的時程,也就是一般常聽到的 Schedule 一詞。當上司、主管或者指導教授交付給你一項工作時,需要知道這項任務的預估完成時間。我們身為遊戲開發者以及工作執行者的身份,應該要使用什麼方法來預估工作的時程?如何達到預估的準確性?工作時程中又隱含著些什麼樣的秘密呢?

經過前篇文章「遊戲開發入門:專案管理管什麼?」的介紹之後,相信即使是從未接觸過專案管理領域的讀者,也能夠對於專案管理的基本概念有一些基礎的概念與認識。接下來,本篇將深入時程的層面,探討在專案管理中相當重要的專案時程估算議題。

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

任何一項工作的時程安排,都需要具備三項條件:起始日期結束日期以及與其他工作的依存關係。在專案管理領域以及專案時程表中,最受到廣泛使用的甘特圖 (Gantt Chart),可以用清楚易懂的圖示來描述工作項目的這三項條件。而另外一項在專案時程中會經常聽到的術語是 Work Breakdown Structure(工作分解結構),或經常簡稱為 WBS。簡單來說,WBS 近似於前篇文章裡所提到的「工作項目階層分解程序」,能夠將原來非常龐大的功能項目,逐步往下分解為可處理的單一工作項目。

在遊戲開發流程中,為什麼我們需要制訂出專案時程表

繼續閱讀 < < "遊戲開發入門:專案時程怎麼估?"


Aug 25 2008

給遊戲程式設計者的推薦文章

文章分類: 遊戲程式閱讀

本篇是推薦文。很短,但藥效很靈而且不傷身體噢。

我要誠心誠意地推薦一個網站「程式者的胡言亂語」,以及其中的一些文章,給各位現在身處業界或者未來即將成為程式設計者的讀者。

繼續閱讀 < < "給遊戲程式設計者的推薦文章"


Aug 20 2008

Triforce:遊戲開發三原力

文章分類: 業界觀察

triforce3,是一個很奇妙的數字,經常用來描述相互抗衡,同時又彼此連結的能量關係。

生命生存的三要素是陽光、空氣與水;色彩學中的三原色是紅色、綠色與藍色;三國演義的三霸主是曹操、孫權與劉備;程式的三元素是語言、API 與工具。而在《薩爾達傳說》的故事背景中,則仰賴著力 (Power)知惠 (Wisdom)勇氣 (Courage) 所結合而成的 Triforce 維持著世界的平衡。

(圖片來源:http://www.neoseeker.com/)

以遊戲作品來說,受到玩家喜愛的原因可能有很多,例如畫面漂亮、故事感人、音樂動人、操縱流暢以及玩法創新等等許多不同的因素。但是如果從遊戲創造者的觀點檢視,各位是否曾經思考過遊戲開發的三大原力為何?遊戲業界中是否也存在著神秘又奧妙的三原力?本文中,將分別以研發部門、專案管理以及遊戲開發,這三種不同角度的觀點,探討遊戲開發領域中的「三大原力」。

繼續閱讀 < < "Triforce:遊戲開發三原力"