Show Me Demo
讓我?把焦點轉?遊戲程設??心?????就是 Graphics API ? DirectGraphics 與 OpenGL ?學習??無論是學習?種 API??開始?不?都是需要熟記?????函式?稱?呼?方式?傳?參數等等繁複?東西?然?還需要把整?繪圖 API ?程式設計流程架構?從頭?尾?徹底瞭解??學習 API ???要??件事?就是要用心??考繪圖 API 設計??想法?盡???掌握?這?繪圖 API ??設計?維???其?維模式來學習??果?夠掌握??這??點?則我?信不管是?學習繪圖 API ?理論?或??是記憶函式??稱等等?都會變成是??然而然?容?理解?記得試著?問???why?與?why not??
?學習?應該是?種?動性??考?而非僅止?被動性??識填?而???
當?確定???經?立起正確?觀念與?維模式??就該開始來寫寫?程式囉?對??學?來說?從無?有?往往是最難跨???步??果想??從零開始??行行?撰寫程式碼????最??發現辛苦?結果??部變成不解?程式 bug??果覺得????還沒辦法?獨立完整?完成??程式?那麼比較??方法就是??參考???程式碼?無論是 DXG 或 OGL???種?籍與網?中?都有?數不少?範例程式???藉由 trace ??範例?完整程式碼?????而學????程式寫?方式??果?經把整?範例?程式碼都瞭解?差不???或?還有疑惑不?白之處???試著改變程式中??些變數或函式呼????程式?結果會有什麼變化?這?是?種?不錯?學習方式?
?學習 Graphics API 最?要?是什麼?熟記函式和參數?搞懂整?理論架構??
都不是?最?要?是?動手做??果所謂?學習??是腦袋裡記???堆不?所?然?東西?而?少真正動腦?想?動手?做?那麼所有??切???說都是白費?夫?沒有實際踏實?程式寫?經驗?幾?月??記憶裡?會剩??堆不連續?殘?碎影罷????寫程式?要注意???方或?技巧?我?稱之? tip 或 trick?????籍或網???提供概略性?教學?對?實做?細節??些?技巧?就需要??親身經歷過???真正體會???簡而言之?就像是?種經驗??累積囉?現??辛苦?練等????真正要?臨?陣???魔??????不會臨場怯陣??漏百??
?果對整? API ?經有??當程??瞭解????間經驗?累積之??就??開始動腦想?些有趣?點?來做囉?有?角??有燈??有?質???做些什麼?讓燈??顏色隨著?間變化???還是改變?質?座標讓?體??有變化?還有透?????做??變化??具??手??創意??腦中?魔法??會變?巧妙卻?有不??之前經歷過這麼??學習曲線??路篳路藍縷?披?斬棘???這裡?終?是???由揮灑?????快把??腦中?積???所有點?都壓榨?來?? : )
?嗯?有什麼?方不對勁嗎??
隨著??寫??程式數目??累積?來?或許??經發覺??件事實??其實?本不用每次都從零?有??行行程式碼撰寫?對???沒錯???來說都會??有?部??程式碼是?複??不變??例??視窗程式??始化?繪圖 API ?定會做??始化之類?動??那應該?麼做比較??需要????從之前?程式 “copy-paste”?不?這絕對是既沒有?率??有?險?方法?什麼是最??做法?最??做法?就是把每次都會?複使用?程式碼?寫成??骨幹架構 (framework)?所謂骨幹架構部分?通常是??程式中變異性???程式碼?例?視窗程式?繁複?始化動??動輒數百行程式碼????卻有???固定性?所?就非常適?寫成骨幹架構??果我?把骨幹部分?程式碼?獨立??? source file 中?而把真正?關繪圖部分?程式碼抽離?來???? source file 中?把所有不?關?閒雜?等?寫成?? source file ?次解決?從?不需要?煩惱那些不?關?東西??要我?把?要繪圖部分?程式碼撰寫完成???和?前就寫??骨幹程式做編譯連結?就??讓專? (project) ?整體架構?起來?清楚?懂???幅增??專??結構性?
?除?最基本? framework 之??還覺得需要什麼嗎??
沒錯??需要???圖?館 (library)?什麼是 library?讓我舉?例?來說???果?所學習? API 是 OpenGL????會發現?不管是 BMP?TGA 或 JPG 等等所有?圖檔?式?都需要??撰寫程式碼來讀??OK?那就寫??The same as old??會發現??無論所需讀??是??種?式?圖檔?我??目?都是???類???就是做??邊???質 (texture)?那我??不? C++ ??件導?模式?寫???專?處理?關 texture ????事務?類?呢?把讀?每?種圖檔? function 寫? texture class ?成?函式中????樣?把它獨立成?? source file????來??要每當需要處理 texture ?關程式??就把?經寫?? texture source file 和我??專?做編譯連結?夠簡單?結構化??起來?棒??
?理?證?除?處理 texture ?類???還有文??輸?呢?計?器?控?呢?鍵盤滑鼠?操縱?????忘?還有最基本?矩陣和?量?把所有??想??基本???都寫成????獨立 source file???需要????和它編譯連結???不?程式碼??維護除錯?未來?擴展性??對?寬廣許??而這???? source file 集?起來?就是所謂? library 囉?就像是??家裡有座圖?館?樣?架?擺著分類齊????眾???種?本???依照???需求而選?不???本來運用?而不是把幾萬行?程式?都濃縮??本? (source file) 中??日????果生??蟲??怕連???都不認識??內容??
?所???寫?程式賺?經驗?????最?要???就是要開始?立起??? library??
其實不管是?網路或?籍範例中?都????????寫? library?有?些 library ??還具備??強??????是我?不?議????程式中使用??? library?有什麼壞處??學習??立場來??使用??? library 所?學???識遠遜???辛苦寫?來??參考??? library 寫法?或許是?不錯??意??是要記得???? library???應該要?得懂?行??則?說是擴?????就連善??用???沒辦法做???寫 library ?過程中?就????之前學習?成果?????果程式語言?資?結構?基礎沒有學??現??定會是最痛苦??刻??撰寫??? library 之???未必要?次就寫???非常齊???件類???果使用?件導?設計模式來撰寫 library?就???用其?擴??彈性??有需要????寫新?????????對應?成?函式?????減輕??始設計?負擔?
Hardcore Stuff
經過漫???程?寫過幾?? demo?擁有?些??? library 之??應該??感???點遊戲程設?樂趣與魅?????是這樣??識???還是不足?達?設計?心目中理想遊戲????對??基本?識有??繪圖 API 熟??接?來呢?讓我??進?步來??比較深??遊戲程設???
?Ok, let’s talk something seriously.?
我想??要是對?遊戲設計稍有興趣??????款遊戲?????少都會問????這?遊戲是?麼做???是???果?是?路踏實??走來?學習???現??應該認真?考這些問題?除???家?身?體驗?款遊戲?樂趣之???要?設計??角?來?這款遊戲????網路??許?網??就扮演???要?學習媒介角色??信??學習過程中偶爾都會聽過?些?怪??詞術語?像是?BSP?Portal?Octree?LOD?Lightmap?Ray tracing ???等等?這些就是遊戲設計??關技術?詞???道這些技術和遊戲程式有什麼關連性嗎????這些技術??應用?遊戲程設中嗎??????英文?? (或翻譯軟體 :p) 就?分??要??
??想?道??切?網路?都找??答???
網路資源??用??說是學習過程中非常?要???不?或???環??國????遊戲設計網? Gamasutra?Flipcode 和 Gamedev 來比較?Gamasutra 通常會提供?當深??內容?實??究?題????遊戲程設??術????樂與?畫管理?非常適?想對某?特定?題深?探討??????Gamasutra ?是 Game Developer 這本著?遊戲設計雜誌??關網??Flipcode??會不定期有教學文章??新??題?數都蠻具實用性???? Flipcode ? Image Of The Day 區域提供?家??展示程式??方???往往????不少有意???品?絕對是這?網?不?不??部分?Gamedev ?較???兩???業?新聞及教學文章??新速?都比較快???文章?數量???分類詳細?不過其所提供?教學文章??概論???少有比較深??探討?
????止??算是真正開始逐步踏?遊戲程設殿堂?????
?要稍微瀏覽過國?遊戲設計網??話?應該不難發現?其中?文章數目及種類實?太?太???其實對???學?而言?這?樣?反而不見得是?件?事???會不?從?開始學習?文章裡?斥著??堆?不懂?專業術語?????搞不清楚??想要學習什麼?萬事起頭難??開始或許?整篇文章?從頭?尾?細?閱讀?兩次?還是?懂得其中?兩?成內容?這???就需要踏實?投注?間與精??點點滴滴?累積?識?廣??文章?得???程式寫得勤??漸漸?就??瞭解???成???內容囉?每篇文章所講??題?就像是?????點????找?點與點之間??關係??將這?????點?連成?線??進而化成???識??????是學習中?得?考??件事?
除?每?網??教學文章之???屬?網?之??討論區?是??非常?要?資源?試著用英文?達??誠懇?發???問題??使文法不是百分百正確??使找不??適?詞彙?達??意???會發現總是有許?熱心???樂意幫?????國?討論區?答問題???往往都?願意幫???解答疑惑?就算是??不熟悉?問題??會提????經驗和想法???連程式碼?展示?毫不?嗇?所??要?問?問題夠? (我?信唯有??問題??導引???答?)?往往??得?遠超過?所想像?豐富收穫?學???有用??識??發問前?????搜尋??該討論區有沒有類??討論?或許??問題早?有?問過??記得不要?問?DirectX and OpenGL, which one is better??這種問題囉? : )
?網路?資訊是學習新?技術最???條途徑?那?果想對基礎??理有?深?認識呢??
?無?法?就是?本??本??說是學習?識最紮實? (?或許是最痛苦? :p) 途徑?其實真正學習?最?最?方法?就是找????老師???本???不管任??識??果有??老師?授業解惑?絕對有事???之????惜?是???稱職??老師真??難找?特?是?遊戲程設這?怪領域中?所?靠?靠天?最?還是靠??最實???本?就是閉關練??武林密笈?不?法??或許?會懷疑??經學會?程式語言?視窗程式?繪圖 API??什麼還要????裡寫?不都是?堆無聊?理論??複雜?數學式嗎?正??之前?文章所提???瞭解理論?不見得會帶來什麼立???益??不?定?增強寫程式?????是?本??識??夠幫???確實?掌握?事??本質基礎與?維模式?特?是?日趨複雜?遊戲程式設計中??果沒有深厚穩固?理論基礎所?構起?法則做??基??怕難?負擔起越來越龐?複雜?遊戲程式架構?
還是那?老話??想創造規則???必?瞭解規則??每?本???都是前??無?計數??間經驗所得來?心血結晶?集英薈萃之??文???式傳諸???讓所有有心學習?識??都????惠?從?本中?我???輕??學?前???識經驗與心血結晶??來????要?費數??間??領??道理?現??需要從閱讀?本中??識就?輕?習得?? 3D 電腦圖學來說?瞭解其背??許?理論基礎???幫???快?學習??收新??識?例??瞭解? Phong reflection model ?定義之??就???容??理解?什麼?源?組成要分成 ambient?diffuse 及 specular ??成分???果瞭解 3D 電腦圖學?發展歷??就不難理解?什麼目前? 3D 繪圖?流方式還是? polygonal mesh ????諸??類?太?太??例???舉?理論?識這東西?不會是????飯碗?卻會是??輩??財富?
Build Up Toolbox
熟悉??些遊戲??心技術之??就??開始?立????具箱???謂?具箱???常見?講法就是?編輯器?(editor)?編輯器?致?有兩種用途??是做?程式?測試?具??是做?遊戲開發?編輯?具??第?種用途來說?例??想用之前文章提過?質點系統 (Particle System) 來做??施?魔法??特?場??要?麼要???道所寫?來?程式碼有沒有符?需求呢?這???就??寫??質點系統?編輯器?具?把所有??調整?變數?部??編輯器???中???會?括質點????置?顏色?速?及運動法則等等要??然?就???編輯器??????接調整變數??????觀察質點系統?變化情????使用這種方法?就?夠?便????種不?數據測試程式?結果?而不是每次都要?程式碼中?改數據????新編譯連結整?程式?????處?就是??讓不懂程式碼??????覺性?調整?控?程式??現結果?所??立編輯器之??就算是複雜?交?數據測試??會變得容??而??覺許??
編輯器?第?種用途呢?舉?例?來說?Quake 3 Arena 中宛?藝術品?驚?天???麗場景是??製????果?對遊戲設計??心技術?經具備有基本概念?就應該?夠瞭解?它?場景不??是由幾?程式設計???????件?撰寫程式碼而完成整?複雜場景??那應該是用什麼樣?方式來?立複雜?遊戲場景呢?就是依靠所謂?編輯器???來講???完整? 3D 場景就稱做?? level?而編輯場景用?就?做關?或場景編輯器 (level/map editor)?通常編輯器是由程式設計??將所有??會使用?????設計完???做?????操??使用?介?????來就??讓專?負責場景?設計? (level designer) 來完成所有?關?與場景??要編輯器???夠強?齊????不用懂得任?程式碼????設計?非常棒?場景?而這正是編輯器?真正???
編輯器?真正目?應該是化繁?簡????最理想??態應該要做??不需要任?說?文件與教學?任?稍具遊戲設計概念??都??輕??手?是?編輯器?產生?使得遊戲開發?分?變得??理?行??要程式將???對話編輯器寫?之??就??交給?畫負責編撰???文???果程式開發?夠強?場景編輯器?就??讓?術來負責整?場景??模與成???所?編輯器往往是遊戲?製?過程中??當?要???部分??果說??遊戲?開發?間?有百分之五?投注?設計開發編輯器?過程??不?過?
?我?道??想什麼??
??這裡??要?次?臨類??問題?Borland C++ Builder 與 MS Visual C++??底要選擇??做?開發?具用?編譯器?我?答?還是?樣?平??兩?都學??說??之前?文章提過?要寫?比較進階?視窗程式???用 Win32 SDK?Borland ? VCL 或是 Microsoft ? MFC?其實編輯器就是屬??種進階?視窗程式設計???它會????複?性?元???繪圖 API ??現?對話盒?控???與檔??儲?載?等等????程式設計討論區?BCB 與 MSVC ?批評比較?絕對不亞? OpenGL 與 DirectX ?情???果用??種方式來比喻?話?BCB 就像是家裡?萬?老媽?樣?會幫?把所有想做?事情都打理?????要用?拖拉點???方式?就??完成?部分?視窗元件設計?而 MSVC 就像是精打細算?老婆?樣?所有要完成?事情都要跟?報備?照著規矩?項?項?來做?雖然有?些便??設計精靈??應用??是?部分還是要用?手?打造??方式?循?漸進?來完成?
而兩???點呢?BCB 常被?所詬病??就是其不佳?程式編譯?率及執行???而 MSVC 則是 MFC ?學習曲線太??龐?複雜? MFC 結構?往往使?學?望之卻步?我??議還是???不管???說法???還是?有??親身用過之???體會其優?勝敗之處?兩?都學習之??或許?會發現???眼裡是優點??方???不??然?而???眼裡是?點??方???卻不??意?不論是 BCB 或 MSVC?都?是?種?具???達成某些目?而被造?來??具?所??????宜?選擇?適??具????用?比較順手就使用???或許?是比較??方式?
On The Way
?什麼??是認真?嗎?這麼無聊??篇文章?都???這裡?喔?真服??耶??
?嗯??說?前??所有學習步驟都完成??接?來呢??
?不??果?會有這?疑問??示?還沒?達這裡??
???????????
????????果?真????話?讓我??來稍微談談之??路??
其實?容????有幾?簡單?選擇??是對??有興趣??題繼續深??究?往深?發展??是?尋找其?沒學習過??題?往廣?發展?第??還有??嗎?就是寫 GAME?跟我唸?次?G?A?M?E?GAME??忘?我??路從這漫?艱辛?路程走來???是什麼目??現??終????聲?說?我有??寫???遊戲??開始激發??創意?爆發??潛??構?設計?? GAME ?? : )
最??提?件事情?或許??會常常聽?某某遊戲用?什麼?3D 引擎?之類??嗯??說這?系??文章??麼從來沒有談過有關 3D 引擎??題?咳咳?請記得這篇文章??題是?淺談遊戲程式設計????不是什麼???? 30 天內做??? 3D 引擎???快快樂樂學做 3D 引擎??或???? 30 歲前擁有?生第?? 3D 引擎?之類?OK???????啦?講認真??3D 引擎真?是非常複雜?東西?絕非像這樣??兩篇文章??解決???不是我目前?????分享??其實像之前所提??編輯器?具???說就是 3D 引擎????要?心?不過 3D 引擎??還必須整??術及?樂?部分?將?切製?遊戲所需?元?都考慮進????算得?是??完整??真正??3D 遊戲引擎??不過我??議是?就算??經學習???還是?不要想太? 3D 引擎?東西?繼續?實???累積寫程式?經驗??用??現有??識與技術?做???有趣??遊戲??
??慣??文??達?我???這裡還是不禁要懷疑?這些辛苦敲打?來?文??究竟?不?適當??達我心裡真正想說?話呢?真正?瞭解我想?達?意???有?少呢?而真正???做???達成目標???有?少呢???????????我承認我想太?? (其實是?經不?道要說什麼? ~_~)?總而言之?基本?這?系?文章??點差不??經???段落??接?來?最??篇文章中?我會???親身?學習經驗?例?和?家做?分享?還請?家???教?