ADVERTISEMENT
《GameMaker》是行之有年的遊戲開發系統,入門遊戲開發的絕佳工具,除了擁有類似Flash程式開發的直觀性,還具備夠水準的程式深度,在獨立遊戲領域擁有廣泛的支持度。本文將介紹GameMaker的概觀與架構,以及改版之路的幕後秘辛,了解這個工具為何能活躍至今而屹立不搖。
▲GameMaker的使用介面。
ADVERTISEMENT
GameMaker早在1999年就以《Animo》的名稱問世,由馬克.歐沃瑪(Mark Overmars)獨力開發。Animo當時僅具備2D小動畫的開發能力,內建的腳本語言缺乏深度,沒有獲得市場的注意。後來Animo導入一系列的拖拉功能(drag and drop),強化C++或Java等程式語言的支援度,並正名為現在的GameMaker,才開始獲得開發者的青睞。
可惜GameMaker的功能並不突出,市場占有率一直無法提升,直到2007年被開發商YoYoGames收購。2009年,獨立遊戲勢力抬頭,YoYoGames發現機不可失,便找來羅素.凱(Russell Kay,YoYoGames現任技術長)與麥克.戴利(Mike Dailly)強化GameMaker的系統能力,讓GameMaker成為更具深度的遊戲開發系統。
ADVERTISEMENT
▲羅素.凱,GameMaker改版的大功臣。
改版後的GameMaker雖然沒有花俏的3D功能,2D功能卻十分健全,立刻被許多獨立開發商採用,造就許多精彩的獨立遊戲,如《Super Crate Box》與熱線邁阿密系列(HotlineMiami Series)。湯姆.法蘭西(Tom Francis)甚至只靠自己加上GameMaker,就完成了頗受好評的《Gunpoint》。
「2007年以前的GameMaker是歐沃瑪的個人傑作,他自己就包辦了一切。」羅素.凱指出,「後來我與戴利合作,開始替GameMaker導入許多3A遊戲的開發知識,將這個系統由內而外徹底翻新。新版的GameMaker與舊版相比,幾乎是完全不同的玩意。」
ADVERTISEMENT
▲《熱線邁阿密2》以GameMaker開發而成。
歐沃瑪以Delphi語言來開發GameMaker,而Delphi是以Pascal為基礎的物件導向語言,而非現在主流的C與Java。加上熟悉Delphi的工程師並不多,舊版的編譯功能不支援Windows以外的多平台,這些都限制了GameMaker的發展性。
ADVERTISEMENT
直到GameMaker轉手給YoYoGames,凱與戴利等人利用C++與C#,將GameMaker的系統核心慢慢轉換過來,才使得GameMaker能有現在的強勢表現。至截稿為止,GameMaker的細部功能轉換作業仍然持續進行。
▲馬克.歐沃瑪,GameMaker的催生者。
GameMaker的開發元件可分為兩個部分。首先就是拖拉系統(drag and drop system),使用者只需熟悉基本的動作指令(如'Jump')與滑鼠的拖拉動作即可,就算沒有程式基礎也可以開發遊戲。
第二個部分是腳本語言GML,GML內建顏色提示與動態錯誤偵測功能,輔助使用者抓出程式碼內的臭蟲。GML具有高度直觀性與彈性,能夠彌補拖拉系統力有未逮之處,而且很容易上手。
YoYoGames花了不少功夫,才將上述兩個開發元件整合起來。「拖拉系統與GML使用兩種不同的執行引擎,彼此的代碼片段又分別獨立。GameMaker會分別編譯兩個元件的代碼片段,再以不同的方式執行,最後再將兩個執行結果匯集在同一條管線上並加以組合。」凱說。
▲GameMaker也具備時下流行的渲染功能。
GameMaker編譯器目前的作法是:將拖拉系統的程式碼轉換成GML程式碼,此舉將有效抑制無謂的疊代(iteration)次數,大幅提升遊戲的運行效率,同時提升遊戲盜版的難度。
「GameMaker早期使用ASCII碼,方便卻缺乏安全性。有心人士便看準這點來破解遊戲,甚至在程式碼中暗藏木馬程式。」凱這麼表示。
戴利則認為,拖拉系統以GML程式碼呈現,這種做法能夠幫助使用者學習GML語言。他還有一個構想,就是讓使用者執行拖拉系統時,旁邊能夠即時顯示GML語言的運作狀況。
GameMaker的願景是提供一個簡單方便的遊戲開發環境。GML除了顏色提示與動態錯誤偵測功能外,若將游標移到任何的函數上按下滑鼠中鍵,還會自動秀出該函數的說明與範例碼。
▲功能毫不含糊的GML程式碼編譯器。
(後面還有:GameMaker的其他秘辛)
ADVERTISEMENT