SlideShare a Scribd company logo
1 of 25
Download to read offline
1
目錄
第一章 序論 …………………………………………………………………2
1-1 專題簡介 …………………………………………………………………2
1-2 製作動機 …………………………………………………………………2
1-2-1 緣由 ……………………………………………………………2
1-2-2 目的 ……………………………………………………………2
1-3 開發工具 …………………………………………………………………2
1-3-1 工具列表 ………………………………………………………2
1-3-2 XNA Game Studio 簡介 ………………………………………3
1-3-3 執行環境 ………………………………………………………3
第二章 系統設計 …………………………………………………………………4
2-1 遊戲簡介 ……………………………………………………………4
2-2 遊戲流程圖 ……………………………………………………………8
2-3 操作方式 ……………………………………………………………9
第三章 系統架構 …………………………………………………………………10
3-1 Screen System ………………………………………………………10
3-2 2D Object System………………………………………………………12
3-3 3D Object System………………………………………………………14
3-4 Camera System ………………………………………………………15
3-5 Terrain System…………………………………………………………16
3-6 Networking System …………………………………………………17
第四章成果展示 …………………………………………………………………18
4-1 開場影片…………………………………………………………………18
4-2 開場畫面…………………………………………………………………18
4-3 選單畫面…………………………………………………………………19
4-4 角色選擇畫………………………………………………………………19
4-5 場地選擇畫………………………………………………………………20
4-6 主遊戲畫…………………………………………………………………20
第五章 遊戲資源 …………………………………………………………………21
5-1 圖片 …………………………………………………………………21
5-2 模型 …………………………………………………………………21
5-3 音效 …………………………………………………………………22
5-4 字型 …………………………………………………………………22
第六章 結論 …………………………………………………………………23
6-1 問題與解決方法…………………………………………………………23
6-2 心得感想…………………………………………………………………23
第七章 參考資料 …………………………………………………………………25
2
第一章 序論
1-1 專題簡介
這是一款可以四人連線的動作格鬥遊戲,系統架構在微軟推出的一套遊戲類
別庫XNA之上,內容結合2D、3D及網路等遊戲常見相關技術,玩家可以透過網際
網路連線,以Client to Server的方式達到即時連線對戰。
系統開發過程中,以作為一個遊戲引擎的目標來撰寫程式,方便日後可以迅
速的加入遊戲物件,且讓資源反覆的利用,達到物件導向程式的精神。
1-2 專題動機
本節將說明製作此專題的緣由和最終目的。
1-2-1 緣由
在大學二年級時我們修過遊戲製作的相關課程,所以在遊戲開發上已經累積
了一些經驗,也了解到完成一款遊戲所得到的成就感,開發此專題遊戲也是相同
的理由,為了能在開發過程中讓自己的技術提升外,也能抱持著愉快的心情來完
成自己有興趣的專題。
1-2-2 目的
在眾多軟體的發展中,遊戲程式一直以來都屬於較難切入的,因為遊戲開發
的分工很細,需要結合程式、美術、音效、動畫等領域的要素才能完成,所以早
期接觸遊戲開發的人可說少之又少。
XNA 是微軟 2004 所推出的一套架構在.Net Framework 之上的遊戲程式類別
庫,可以同時跨 PC、XBOX360 及 Zune 三種平台執行,開發者不需要再撰寫底層
那些繁雜的程式,可以專心在遊戲本身內容的開發,並且可以在網路社群上找到
許多非常專業的參考資源,對開發者技術的提升有相當大的幫助。
1-3 開發工具
本節將分別介紹專題製作過程中所用到的工具程式和 XNA Game Studio 這套
微軟提供的免費遊戲製作類別庫,以及執行專題遊戲所需要的基本環境。
1-3-1 工具列表
工具名稱 工具說明
Microsoft Visual Studio 2005 程式開發工具
Microsoft Cross-Platform Audio
Creation Tool
遊戲音效匯入工具
Adobe Flash CS3 Professional 動畫製作軟體
Google SketchUp 6 3D 模型製作軟體
Ulead PhotoImpact X3 遊戲圖片修圖軟體
3
1-3-2 XNA Game Studio 簡介
XNA Framework 是建置於 .NET Framework 2.0 上,另外還加入了一些專注
於遊戲開發的類別庫,在指定的平台上使程式碼重用達之最大效果。
XNA Framework 能在管理式遊戲運行的通用語言執行層(Common Language
Runtime)版本上執行。這個執行層支援 Windows XP、Windows Vista 和 XBox 360。
由於遊戲是開發在執行層上,使得遊戲能在所有支持 XNA Framework 的平台上
只要很少甚至不需要任何更改便能運行。所有在 XNA Framework 上的遊戲必需
使用 C#程式語言開發。
XNA Framework 把所有製作遊戲程式的低階技術包裝起來,由此,遊戲開發
員就可以專注於遊戲內容開發而不用關心遊戲移植至不同平台上的問題,遊戲只
要開發於 XNA 的平台上,所有硬體只要支援 XNA 都能運行。
XNA Framework 還內置一些工具,例如 XACT 以幫助遊戲內容開發。這些工
具還能幫助開發視覺和聽覺效果和和擬真度很高的模型製作。
XNA Framework 同時支持 2D 和 3D 的遊戲開發也支援 XBox360 的控制器和
震動效果。
XNA 工具集於 2004 年 3 月 24 日在美國加州聖荷西市的 Game Developers
Conference 首次亮相,第一個公開技術預覽在 2006 年 3 月 14 日推出,並於 2006
年 12 月 11 日正式發布 1.0 版。
1-3-3 執行環境
項目 需求
作業系統: Microsoft Windows XP SP2 以上 / Vista。
軟體: .NET Framework 2.0 以上。
XNA Game Studio 2.0 Redistributable 以上。
顯示卡: DirectX 9.0c,需支援 Shader Model 1.1 以上。
記憶體: 256MB 以上。
硬碟空間: 200MB 以上。
網路速度: 56Kbps 以上。
基本配備: 鍵盤。
4
第二章 系統設計
2-1 遊戲簡介
角色:
Davis Deep Dennis Firen Freeze John Woody
昇龍拳
氣功彈
金臂勾
上月斬
劍氣
瘋狂亂砍
旋風腿
氣功球
百烈腳
大爆炸
火球
火焰衝
冰之劍
冰氣彈
冰柱
治癒術
氣功波
紫氣神盾
瞬間移動
氣功斬
掃堂腿
場地:
希臘
5
台灣
日本
6
埃及
義大利
7
俄羅斯
道具:
棒球 球棒 鐮刀 冰之劍 牛奶
氣功:
氣功彈 劍氣 氣功球 火球 大爆炸
冰氣彈 冰柱 氣功波 紫氣神盾 氣功斬
8
2-2 遊戲流程圖
9
2-3 操作方式
按鍵組合 說明
D 角色向右移動
A 角色向左移動
D+D 角色向右衝刺
A+A 角色向左衝刺
J 角色跳躍
H 角色一般攻擊/角色檢道具/使用道具
G 角色特殊攻擊/丟出道具
W+G 角色特殊上攻擊
S+G 角色特殊下攻擊
↑ 選單項目移動
←
→
↓
Enter 確定選擇項目
Esc 跳出離開選單
10
第三章 系統架構
本章將介紹構成整個遊戲架構中幾個較重要的系統細節。
3-1 Screen System
Screen System 主要是在控制遊戲畫面的部分,遊戲中會有選單畫面、角色
選擇畫面、場地選擇畫面和主遊戲畫面等,這些都是繼承 GameScreen 類別,並
由 ScreenManager 類別統一操作畫面的顯示。
11
類別圖:
12
3-2 2D Object System
2D Object System 是遊戲中的 2D 物件,例如角色、道具、子彈等圖片元素,
他們共同的底層是由 LMAnimation 和 LMSprite 所構成。
13
類別圖:
14
3-3 3D Object System
3D 系統在專題上我們是運用在遊戲的場地背景部份,每個關卡的背景都是
由相關的模型組成,並且會隨著角色移動改變位置,呈現出層次的感覺。
類別圖:
15
3-4 Camera System
Camera System 負責當角色移動時,螢幕畫面所呈現的位置,將真實的世界
座標轉換成螢幕上的投射作標。
類別圖:
16
3-5 Terrain System
Terrain System 負責將遊戲場地的地形計算出來,產生高低差的感覺,使
角色移動時可以改變至不同的位置。
類別圖:
17
3-6 Networking System
網路連線系統,負責將加入的玩家設定成 Client 端,並且統一傳送指令至
建立遊戲的玩家 Server 後處理,再作統一回傳更新的動作。
18
第四章 成果展示
4-1 開場影片
在進入遊戲時,會先導入開場影片,為遊戲的聲光效果加分不少
4-2 開場畫面
開場畫面背景圖
19
4-3 選單畫面
在連線遊戲中,玩家可以選擇要當 server 端或是 client 端。
4-4 角色選擇畫面
20
4-5 場地選擇畫面
4-6 主遊戲畫面
21
第五章 遊戲資源
5-1 圖片
在整個遊戲中,人物圖片來源。來自於原版遊戲<<小朋友齊打交 2>>。而在
載入圖片系統中,我們將所有需要的圖片編製為像(圖一)的圖片檔,之後在 XML
檔裡,輸入相關的數據(圖二),像是動作起始影格的行列數,播放方式,每秒播
放格數,諸以此類的資料都寫在各自的 XML 中,如 Character.XML 便是記錄了所
有角色動作的資訊,而 item.XML 則是各項道具的資料。而經由這類的方式去編
寫並在遊戲本身程式中去控制大大的提昇了在遊戲製作中的便利性。
圖一 圖二
5-2 模型
在遊戲中可以發現到,有許多的背景都是 3D 模組的模型圖,並且會隨著人
物的移動而轉動,而我們 3D 模組的來源於 Google 3D Warehouse(圖三),而我
們則利用此類模型在人物移動時跟著旋轉。來造成整體視覺上的效果
圖三
22
5-3 音效
音效方面,我們利用 XNA 的音樂庫工具(Microsoft Cross-Platform Audio
Creation Tool (XACT)),在這 Tool 中,我們先將所需要的 wave 檔選取到音訊
來源(wave bank),再將所要定義的聲音拉至音訊設定(sound bank)。而我們可
以在點選音訊設定之後,於左下角去設定聲音播放時是否連續,也可以去進行混
音的工作。
5-4 字型
XNA 也提供字型的資源,將需要用到的字型匯入後會產生相對應的
spritefont 的資源檔可以指定字型,大小,以及字元範圍等。
在此專題遊戲中,我們使用了兩種字型,分別式顯示選單中文的微軟正黑體跟顯
示英文數字的 Bauer 字體兩種。
23
第六章 結論
6-1 問題與解決方法
1. 圖片動畫的播放:
因為要讓角色做出一個連續動作,會需要播放很多圖片,如果把每個動
作都存成一張圖片的話,不論是圖片的管理或是程式碼的撰寫都會很繁
雜,所以我們把所有角色自己的動作都製作成一張圖片,再配合 XML 檔
案的方式來擷取每個動作做成連續播放的動畫,大大降低了複雜性,並
且很容易加入新的物件。
2. 座標定位
在所有物件的座標定位上我們一開始碰到了相當大的瓶頸,因為最後實
際要投影在螢幕上的座標都跟物件在遊戲世界裡的座標不同,所以許多
的判定上都碰到問題,例如背景目前所呈現的位置,角色是否跟道具在
同一個位置等等的判定上都會有差異存在,最後我們是另外實作了一個
Camera 系統來統一集中管理遊戲的座標,將所有物件的世界座標丟給
Camera 轉換成實際螢幕上的座標。
3. 網路同步連線
網路同步連線的部分是最困難的,一直到最後都還存在著 BUG,因為我
們是先把所有功能都完成,最後再實作連線部分,但是因為格鬥遊戲是
需要即時更新動作的,誤差不能太大,但是如果需要每次都傳送角色動
作跟座標的話,速度會大幅降低,產生每個玩家畫面都不一樣的結果,
後來我們改成只傳送一個代碼,遊戲自己本身將許多動作的代碼都記錄
起來,然後只需要解析傳來的代碼然後解碼成相對應的動作再執行,同
步率就會大大的提升。
6-2 心得感想
吳孟修:
這個專題,在三個學期的醞釀之下,終於結束了。從一開始訂題目、規劃遊
戲內容,到後期的人物設定、製作,才能了解到設計一個遊戲所要考慮的層面是
如此的廣泛。在一開始的函式庫的選擇,在陳偉凱老師與微軟的 XNA 兩者之間,
猶豫了頗久。但後來還是選擇了 XNA。其主要原因是覺得,老師之前的平台於上
課時已經操作過了,想要去嘗試看看不同的平台,並且也想看看在 C#語言與 C++
語言的物件表示上有何差異。
在製作過程中,時常遇到各類問題,尤其越到最後期末展示的時候,似乎問
題就一個一個跑出來。這也是一個特殊的經驗。在設計程式的同時,也必須同時
去做測試,在這種時候,才能夠真正感覺出來不論是遊戲的設計還是任何程式的
設計,任何一點點的小問題,都有可能到最後變成一個大問題。最明顯的,莫過
於在設計人物一個動作時,只單純考慮到動作的完成,而未考慮到其他層面,導
24
致其動作在執行時發生錯誤。諸以此類的問題,印證了老師在課堂上說過,一個
程式主體可能只有 20%,剩下的 80%都在作除錯的處理。
而在最後的期末展示,原本在本機端的測試都毫無問題,但沒想到在多台電
腦上執行時,似乎因為封包傳輸的問題導致例外錯誤一直出現,也無法在許多教
授面前完整的展示。這是比較可惜的部分,不過很意外的事情是,竟然能夠得獎,
這對我們努力而言,是個讓人非常開心的肯定。而且也非常感謝老師在我們製作
遊戲的途中,給我們許多的建議,也給我們很多在程式設計上的概念,並且從一
開始就告訴我們必須要將整體程式的架構給架好,這樣才算是一個好的程式設計
者。
吳建興:
由於我們從以前寫程式所使用的工具都脫離不了微軟的 Visual Studio,無論
是 C++或是最近才學到的 C#,剛好這幾年微軟正在大力推廣 C#語言的 XNA,讓
撰寫遊戲程式的門檻降低,並且在有那麼多的國內外資源幫助下,我們的專題總
算是完成了,雖然當初想到的很多點子最後都來不及實現,但是我們已經盡最大
的努力把它做到最好了,不但得到了許多專業的遊戲製作技術與經驗,也了解到
要完成一款完整的遊戲,中間還需要很多不同領域的心血結晶,例如圖片美工,
3D 塑模,音效編輯等等,要整合所有資源並且跟遊戲搭配不突兀是一件很難的
事,經過兩個學期的準備、摸索 XNA、規劃,到最後製作完成,我們撰寫了約兩
萬行的程式碼,經過三十次的版本,所得到的經驗和成就感是不可言喻的。
25
第七章 參考資料
XNA Creators Club Online
http://creators.xna.com/
Ziggyware XNA
http://www.ziggyware.com/
Kersson
http://www.kersson.com/
XNA Workshop
http://xna-workshop.com/
XNA Wiki
http://www.xnawiki.com/
點部落-IT 技術知識社群
http://www.dotblogs.com.tw/
StreamWhite
http://teexit1224.pixnet.net/blog
Google 3D Warehouse
http://sketchup.google.com/3dwarehouse/

More Related Content

What's hot

Ext 中文手册
Ext 中文手册Ext 中文手册
Ext 中文手册donotbeevil
 
Back track中文指南v9
Back track中文指南v9 Back track中文指南v9
Back track中文指南v9 o0tao
 
FreeNAS installation and setup for shared storage (1/2)
FreeNAS installation and setup for shared storage (1/2)FreeNAS installation and setup for shared storage (1/2)
FreeNAS installation and setup for shared storage (1/2)康志強 大人
 
VR-Zone 中文版 - 追蹤新奇科技脈動 2012 Issue 4
VR-Zone 中文版 - 追蹤新奇科技脈動 2012 Issue 4VR-Zone 中文版 - 追蹤新奇科技脈動 2012 Issue 4
VR-Zone 中文版 - 追蹤新奇科技脈動 2012 Issue 4VR-Zone .com
 
Ubuntu手册(中文版)
Ubuntu手册(中文版)Ubuntu手册(中文版)
Ubuntu手册(中文版)byp2011
 
深入浅出 Android
深入浅出 Android深入浅出 Android
深入浅出 AndroidYUCHENG HU
 
G:\Documents And Settings\Kim Yoojin\桌面\Kn9 Series\Kn9 Series
G:\Documents And Settings\Kim Yoojin\桌面\Kn9 Series\Kn9 SeriesG:\Documents And Settings\Kim Yoojin\桌面\Kn9 Series\Kn9 Series
G:\Documents And Settings\Kim Yoojin\桌面\Kn9 Series\Kn9 Seriesguestd4f63b
 
Au698 x mp user's manual chinese
Au698 x mp user's manual chineseAu698 x mp user's manual chinese
Au698 x mp user's manual chineseod1ner
 
Sony vaio摄像头安装方法以及驱动手动安装
Sony vaio摄像头安装方法以及驱动手动安装Sony vaio摄像头安装方法以及驱动手动安装
Sony vaio摄像头安装方法以及驱动手动安装onetruetime
 

What's hot (10)

Ext 中文手册
Ext 中文手册Ext 中文手册
Ext 中文手册
 
080620-16461915
080620-16461915080620-16461915
080620-16461915
 
Back track中文指南v9
Back track中文指南v9 Back track中文指南v9
Back track中文指南v9
 
FreeNAS installation and setup for shared storage (1/2)
FreeNAS installation and setup for shared storage (1/2)FreeNAS installation and setup for shared storage (1/2)
FreeNAS installation and setup for shared storage (1/2)
 
VR-Zone 中文版 - 追蹤新奇科技脈動 2012 Issue 4
VR-Zone 中文版 - 追蹤新奇科技脈動 2012 Issue 4VR-Zone 中文版 - 追蹤新奇科技脈動 2012 Issue 4
VR-Zone 中文版 - 追蹤新奇科技脈動 2012 Issue 4
 
Ubuntu手册(中文版)
Ubuntu手册(中文版)Ubuntu手册(中文版)
Ubuntu手册(中文版)
 
深入浅出 Android
深入浅出 Android深入浅出 Android
深入浅出 Android
 
G:\Documents And Settings\Kim Yoojin\桌面\Kn9 Series\Kn9 Series
G:\Documents And Settings\Kim Yoojin\桌面\Kn9 Series\Kn9 SeriesG:\Documents And Settings\Kim Yoojin\桌面\Kn9 Series\Kn9 Series
G:\Documents And Settings\Kim Yoojin\桌面\Kn9 Series\Kn9 Series
 
Au698 x mp user's manual chinese
Au698 x mp user's manual chineseAu698 x mp user's manual chinese
Au698 x mp user's manual chinese
 
Sony vaio摄像头安装方法以及驱动手动安装
Sony vaio摄像头安装方法以及驱动手动安装Sony vaio摄像头安装方法以及驱动手动安装
Sony vaio摄像头安装方法以及驱动手动安装
 

More from Amo Wu

Microsoft XNA Game Studio 2D 連線動作遊戲
Microsoft XNA Game Studio 2D 連線動作遊戲Microsoft XNA Game Studio 2D 連線動作遊戲
Microsoft XNA Game Studio 2D 連線動作遊戲Amo Wu
 
物件導向程式設計實習成果報告
物件導向程式設計實習成果報告物件導向程式設計實習成果報告
物件導向程式設計實習成果報告Amo Wu
 
JavaScript 開發實務分享
JavaScript 開發實務分享JavaScript 開發實務分享
JavaScript 開發實務分享Amo Wu
 
Productivity tool
Productivity toolProductivity tool
Productivity toolAmo Wu
 
GuMorning 開發分享
GuMorning 開發分享GuMorning 開發分享
GuMorning 開發分享Amo Wu
 
Git & git flow
Git & git flowGit & git flow
Git & git flowAmo Wu
 
Trello
TrelloTrello
TrelloAmo Wu
 

More from Amo Wu (7)

Microsoft XNA Game Studio 2D 連線動作遊戲
Microsoft XNA Game Studio 2D 連線動作遊戲Microsoft XNA Game Studio 2D 連線動作遊戲
Microsoft XNA Game Studio 2D 連線動作遊戲
 
物件導向程式設計實習成果報告
物件導向程式設計實習成果報告物件導向程式設計實習成果報告
物件導向程式設計實習成果報告
 
JavaScript 開發實務分享
JavaScript 開發實務分享JavaScript 開發實務分享
JavaScript 開發實務分享
 
Productivity tool
Productivity toolProductivity tool
Productivity tool
 
GuMorning 開發分享
GuMorning 開發分享GuMorning 開發分享
GuMorning 開發分享
 
Git & git flow
Git & git flowGit & git flow
Git & git flow
 
Trello
TrelloTrello
Trello
 

實務專題競賽報告

  • 1. 1 目錄 第一章 序論 …………………………………………………………………2 1-1 專題簡介 …………………………………………………………………2 1-2 製作動機 …………………………………………………………………2 1-2-1 緣由 ……………………………………………………………2 1-2-2 目的 ……………………………………………………………2 1-3 開發工具 …………………………………………………………………2 1-3-1 工具列表 ………………………………………………………2 1-3-2 XNA Game Studio 簡介 ………………………………………3 1-3-3 執行環境 ………………………………………………………3 第二章 系統設計 …………………………………………………………………4 2-1 遊戲簡介 ……………………………………………………………4 2-2 遊戲流程圖 ……………………………………………………………8 2-3 操作方式 ……………………………………………………………9 第三章 系統架構 …………………………………………………………………10 3-1 Screen System ………………………………………………………10 3-2 2D Object System………………………………………………………12 3-3 3D Object System………………………………………………………14 3-4 Camera System ………………………………………………………15 3-5 Terrain System…………………………………………………………16 3-6 Networking System …………………………………………………17 第四章成果展示 …………………………………………………………………18 4-1 開場影片…………………………………………………………………18 4-2 開場畫面…………………………………………………………………18 4-3 選單畫面…………………………………………………………………19 4-4 角色選擇畫………………………………………………………………19 4-5 場地選擇畫………………………………………………………………20 4-6 主遊戲畫…………………………………………………………………20 第五章 遊戲資源 …………………………………………………………………21 5-1 圖片 …………………………………………………………………21 5-2 模型 …………………………………………………………………21 5-3 音效 …………………………………………………………………22 5-4 字型 …………………………………………………………………22 第六章 結論 …………………………………………………………………23 6-1 問題與解決方法…………………………………………………………23 6-2 心得感想…………………………………………………………………23 第七章 參考資料 …………………………………………………………………25
  • 2. 2 第一章 序論 1-1 專題簡介 這是一款可以四人連線的動作格鬥遊戲,系統架構在微軟推出的一套遊戲類 別庫XNA之上,內容結合2D、3D及網路等遊戲常見相關技術,玩家可以透過網際 網路連線,以Client to Server的方式達到即時連線對戰。 系統開發過程中,以作為一個遊戲引擎的目標來撰寫程式,方便日後可以迅 速的加入遊戲物件,且讓資源反覆的利用,達到物件導向程式的精神。 1-2 專題動機 本節將說明製作此專題的緣由和最終目的。 1-2-1 緣由 在大學二年級時我們修過遊戲製作的相關課程,所以在遊戲開發上已經累積 了一些經驗,也了解到完成一款遊戲所得到的成就感,開發此專題遊戲也是相同 的理由,為了能在開發過程中讓自己的技術提升外,也能抱持著愉快的心情來完 成自己有興趣的專題。 1-2-2 目的 在眾多軟體的發展中,遊戲程式一直以來都屬於較難切入的,因為遊戲開發 的分工很細,需要結合程式、美術、音效、動畫等領域的要素才能完成,所以早 期接觸遊戲開發的人可說少之又少。 XNA 是微軟 2004 所推出的一套架構在.Net Framework 之上的遊戲程式類別 庫,可以同時跨 PC、XBOX360 及 Zune 三種平台執行,開發者不需要再撰寫底層 那些繁雜的程式,可以專心在遊戲本身內容的開發,並且可以在網路社群上找到 許多非常專業的參考資源,對開發者技術的提升有相當大的幫助。 1-3 開發工具 本節將分別介紹專題製作過程中所用到的工具程式和 XNA Game Studio 這套 微軟提供的免費遊戲製作類別庫,以及執行專題遊戲所需要的基本環境。 1-3-1 工具列表 工具名稱 工具說明 Microsoft Visual Studio 2005 程式開發工具 Microsoft Cross-Platform Audio Creation Tool 遊戲音效匯入工具 Adobe Flash CS3 Professional 動畫製作軟體 Google SketchUp 6 3D 模型製作軟體 Ulead PhotoImpact X3 遊戲圖片修圖軟體
  • 3. 3 1-3-2 XNA Game Studio 簡介 XNA Framework 是建置於 .NET Framework 2.0 上,另外還加入了一些專注 於遊戲開發的類別庫,在指定的平台上使程式碼重用達之最大效果。 XNA Framework 能在管理式遊戲運行的通用語言執行層(Common Language Runtime)版本上執行。這個執行層支援 Windows XP、Windows Vista 和 XBox 360。 由於遊戲是開發在執行層上,使得遊戲能在所有支持 XNA Framework 的平台上 只要很少甚至不需要任何更改便能運行。所有在 XNA Framework 上的遊戲必需 使用 C#程式語言開發。 XNA Framework 把所有製作遊戲程式的低階技術包裝起來,由此,遊戲開發 員就可以專注於遊戲內容開發而不用關心遊戲移植至不同平台上的問題,遊戲只 要開發於 XNA 的平台上,所有硬體只要支援 XNA 都能運行。 XNA Framework 還內置一些工具,例如 XACT 以幫助遊戲內容開發。這些工 具還能幫助開發視覺和聽覺效果和和擬真度很高的模型製作。 XNA Framework 同時支持 2D 和 3D 的遊戲開發也支援 XBox360 的控制器和 震動效果。 XNA 工具集於 2004 年 3 月 24 日在美國加州聖荷西市的 Game Developers Conference 首次亮相,第一個公開技術預覽在 2006 年 3 月 14 日推出,並於 2006 年 12 月 11 日正式發布 1.0 版。 1-3-3 執行環境 項目 需求 作業系統: Microsoft Windows XP SP2 以上 / Vista。 軟體: .NET Framework 2.0 以上。 XNA Game Studio 2.0 Redistributable 以上。 顯示卡: DirectX 9.0c,需支援 Shader Model 1.1 以上。 記憶體: 256MB 以上。 硬碟空間: 200MB 以上。 網路速度: 56Kbps 以上。 基本配備: 鍵盤。
  • 4. 4 第二章 系統設計 2-1 遊戲簡介 角色: Davis Deep Dennis Firen Freeze John Woody 昇龍拳 氣功彈 金臂勾 上月斬 劍氣 瘋狂亂砍 旋風腿 氣功球 百烈腳 大爆炸 火球 火焰衝 冰之劍 冰氣彈 冰柱 治癒術 氣功波 紫氣神盾 瞬間移動 氣功斬 掃堂腿 場地: 希臘
  • 7. 7 俄羅斯 道具: 棒球 球棒 鐮刀 冰之劍 牛奶 氣功: 氣功彈 劍氣 氣功球 火球 大爆炸 冰氣彈 冰柱 氣功波 紫氣神盾 氣功斬
  • 9. 9 2-3 操作方式 按鍵組合 說明 D 角色向右移動 A 角色向左移動 D+D 角色向右衝刺 A+A 角色向左衝刺 J 角色跳躍 H 角色一般攻擊/角色檢道具/使用道具 G 角色特殊攻擊/丟出道具 W+G 角色特殊上攻擊 S+G 角色特殊下攻擊 ↑ 選單項目移動 ← → ↓ Enter 確定選擇項目 Esc 跳出離開選單
  • 10. 10 第三章 系統架構 本章將介紹構成整個遊戲架構中幾個較重要的系統細節。 3-1 Screen System Screen System 主要是在控制遊戲畫面的部分,遊戲中會有選單畫面、角色 選擇畫面、場地選擇畫面和主遊戲畫面等,這些都是繼承 GameScreen 類別,並 由 ScreenManager 類別統一操作畫面的顯示。
  • 12. 12 3-2 2D Object System 2D Object System 是遊戲中的 2D 物件,例如角色、道具、子彈等圖片元素, 他們共同的底層是由 LMAnimation 和 LMSprite 所構成。
  • 14. 14 3-3 3D Object System 3D 系統在專題上我們是運用在遊戲的場地背景部份,每個關卡的背景都是 由相關的模型組成,並且會隨著角色移動改變位置,呈現出層次的感覺。 類別圖:
  • 15. 15 3-4 Camera System Camera System 負責當角色移動時,螢幕畫面所呈現的位置,將真實的世界 座標轉換成螢幕上的投射作標。 類別圖:
  • 16. 16 3-5 Terrain System Terrain System 負責將遊戲場地的地形計算出來,產生高低差的感覺,使 角色移動時可以改變至不同的位置。 類別圖:
  • 17. 17 3-6 Networking System 網路連線系統,負責將加入的玩家設定成 Client 端,並且統一傳送指令至 建立遊戲的玩家 Server 後處理,再作統一回傳更新的動作。
  • 19. 19 4-3 選單畫面 在連線遊戲中,玩家可以選擇要當 server 端或是 client 端。 4-4 角色選擇畫面
  • 21. 21 第五章 遊戲資源 5-1 圖片 在整個遊戲中,人物圖片來源。來自於原版遊戲<<小朋友齊打交 2>>。而在 載入圖片系統中,我們將所有需要的圖片編製為像(圖一)的圖片檔,之後在 XML 檔裡,輸入相關的數據(圖二),像是動作起始影格的行列數,播放方式,每秒播 放格數,諸以此類的資料都寫在各自的 XML 中,如 Character.XML 便是記錄了所 有角色動作的資訊,而 item.XML 則是各項道具的資料。而經由這類的方式去編 寫並在遊戲本身程式中去控制大大的提昇了在遊戲製作中的便利性。 圖一 圖二 5-2 模型 在遊戲中可以發現到,有許多的背景都是 3D 模組的模型圖,並且會隨著人 物的移動而轉動,而我們 3D 模組的來源於 Google 3D Warehouse(圖三),而我 們則利用此類模型在人物移動時跟著旋轉。來造成整體視覺上的效果 圖三
  • 22. 22 5-3 音效 音效方面,我們利用 XNA 的音樂庫工具(Microsoft Cross-Platform Audio Creation Tool (XACT)),在這 Tool 中,我們先將所需要的 wave 檔選取到音訊 來源(wave bank),再將所要定義的聲音拉至音訊設定(sound bank)。而我們可 以在點選音訊設定之後,於左下角去設定聲音播放時是否連續,也可以去進行混 音的工作。 5-4 字型 XNA 也提供字型的資源,將需要用到的字型匯入後會產生相對應的 spritefont 的資源檔可以指定字型,大小,以及字元範圍等。 在此專題遊戲中,我們使用了兩種字型,分別式顯示選單中文的微軟正黑體跟顯 示英文數字的 Bauer 字體兩種。
  • 23. 23 第六章 結論 6-1 問題與解決方法 1. 圖片動畫的播放: 因為要讓角色做出一個連續動作,會需要播放很多圖片,如果把每個動 作都存成一張圖片的話,不論是圖片的管理或是程式碼的撰寫都會很繁 雜,所以我們把所有角色自己的動作都製作成一張圖片,再配合 XML 檔 案的方式來擷取每個動作做成連續播放的動畫,大大降低了複雜性,並 且很容易加入新的物件。 2. 座標定位 在所有物件的座標定位上我們一開始碰到了相當大的瓶頸,因為最後實 際要投影在螢幕上的座標都跟物件在遊戲世界裡的座標不同,所以許多 的判定上都碰到問題,例如背景目前所呈現的位置,角色是否跟道具在 同一個位置等等的判定上都會有差異存在,最後我們是另外實作了一個 Camera 系統來統一集中管理遊戲的座標,將所有物件的世界座標丟給 Camera 轉換成實際螢幕上的座標。 3. 網路同步連線 網路同步連線的部分是最困難的,一直到最後都還存在著 BUG,因為我 們是先把所有功能都完成,最後再實作連線部分,但是因為格鬥遊戲是 需要即時更新動作的,誤差不能太大,但是如果需要每次都傳送角色動 作跟座標的話,速度會大幅降低,產生每個玩家畫面都不一樣的結果, 後來我們改成只傳送一個代碼,遊戲自己本身將許多動作的代碼都記錄 起來,然後只需要解析傳來的代碼然後解碼成相對應的動作再執行,同 步率就會大大的提升。 6-2 心得感想 吳孟修: 這個專題,在三個學期的醞釀之下,終於結束了。從一開始訂題目、規劃遊 戲內容,到後期的人物設定、製作,才能了解到設計一個遊戲所要考慮的層面是 如此的廣泛。在一開始的函式庫的選擇,在陳偉凱老師與微軟的 XNA 兩者之間, 猶豫了頗久。但後來還是選擇了 XNA。其主要原因是覺得,老師之前的平台於上 課時已經操作過了,想要去嘗試看看不同的平台,並且也想看看在 C#語言與 C++ 語言的物件表示上有何差異。 在製作過程中,時常遇到各類問題,尤其越到最後期末展示的時候,似乎問 題就一個一個跑出來。這也是一個特殊的經驗。在設計程式的同時,也必須同時 去做測試,在這種時候,才能夠真正感覺出來不論是遊戲的設計還是任何程式的 設計,任何一點點的小問題,都有可能到最後變成一個大問題。最明顯的,莫過 於在設計人物一個動作時,只單純考慮到動作的完成,而未考慮到其他層面,導
  • 24. 24 致其動作在執行時發生錯誤。諸以此類的問題,印證了老師在課堂上說過,一個 程式主體可能只有 20%,剩下的 80%都在作除錯的處理。 而在最後的期末展示,原本在本機端的測試都毫無問題,但沒想到在多台電 腦上執行時,似乎因為封包傳輸的問題導致例外錯誤一直出現,也無法在許多教 授面前完整的展示。這是比較可惜的部分,不過很意外的事情是,竟然能夠得獎, 這對我們努力而言,是個讓人非常開心的肯定。而且也非常感謝老師在我們製作 遊戲的途中,給我們許多的建議,也給我們很多在程式設計上的概念,並且從一 開始就告訴我們必須要將整體程式的架構給架好,這樣才算是一個好的程式設計 者。 吳建興: 由於我們從以前寫程式所使用的工具都脫離不了微軟的 Visual Studio,無論 是 C++或是最近才學到的 C#,剛好這幾年微軟正在大力推廣 C#語言的 XNA,讓 撰寫遊戲程式的門檻降低,並且在有那麼多的國內外資源幫助下,我們的專題總 算是完成了,雖然當初想到的很多點子最後都來不及實現,但是我們已經盡最大 的努力把它做到最好了,不但得到了許多專業的遊戲製作技術與經驗,也了解到 要完成一款完整的遊戲,中間還需要很多不同領域的心血結晶,例如圖片美工, 3D 塑模,音效編輯等等,要整合所有資源並且跟遊戲搭配不突兀是一件很難的 事,經過兩個學期的準備、摸索 XNA、規劃,到最後製作完成,我們撰寫了約兩 萬行的程式碼,經過三十次的版本,所得到的經驗和成就感是不可言喻的。
  • 25. 25 第七章 參考資料 XNA Creators Club Online http://creators.xna.com/ Ziggyware XNA http://www.ziggyware.com/ Kersson http://www.kersson.com/ XNA Workshop http://xna-workshop.com/ XNA Wiki http://www.xnawiki.com/ 點部落-IT 技術知識社群 http://www.dotblogs.com.tw/ StreamWhite http://teexit1224.pixnet.net/blog Google 3D Warehouse http://sketchup.google.com/3dwarehouse/