網(wǎng)站首頁(yè) 教育 > 正文
想必現(xiàn)在有很多小伙伴對(duì)于什么是XNA Framework 詳細(xì)方面的知識(shí)都比較想要了解,那么今天小好小編就為大家收集了一些關(guān)于什么是XNA Framework 詳細(xì)方面的知識(shí)分享給大家,希望大家會(huì)喜歡哦。
1、XNA Framework 是一系列幫助開(kāi)發(fā)人員編寫游戲的類庫(kù)。
2、在beta 版即將到來(lái)之際我想來(lái)花點(diǎn)時(shí)間通過(guò)對(duì)XNA 的三個(gè)關(guān)鍵點(diǎn)的解釋來(lái)說(shuō)明一下XNA Framework,也就是:XNA Framework 的目標(biāo)是什么,XNA Framework 是什么,還有它可以做什么 在開(kāi)發(fā)的時(shí)候我們想到的是實(shí)現(xiàn)兩個(gè)主要目的: XNA Framework 的一個(gè)關(guān)鍵目標(biāo)是實(shí)現(xiàn)游戲在Windows 和Xbox 360 分別運(yùn)行的簡(jiǎn)易性,以讓你可以先在Windows 上開(kāi)發(fā)一個(gè)游戲,然后簡(jiǎn)單的移植到 Xbox360 上去。
3、我們的目標(biāo)是提供一系列可以涵蓋大約95%功能的跨平臺(tái)APIs。
4、這里要說(shuō)的是由于某些原因兩個(gè)環(huán)境間仍會(huì)有部分的不同,例如有些操作可能只在一個(gè)平臺(tái)上有效。
5、我估計(jì)大部分你開(kāi)發(fā)的游戲是100%跨平臺(tái)的。
6、 制作游戲是一項(xiàng)有難度的工作。
7、從學(xué)生和愛(ài)好者想要成為專業(yè)游戲開(kāi)發(fā)人員更加困難。
8、常常要在如何實(shí)現(xiàn)繪圖,輸入,運(yùn)動(dòng)等地方反復(fù)試驗(yàn)而浪費(fèi)大量的時(shí)間和代碼。
9、XNA Framework 的另一個(gè)目的就是使這一切變得容易起來(lái)。
10、當(dāng)我們?cè)谶M(jìn)行內(nèi)部討論的時(shí)候,我們經(jīng)常提到開(kāi)發(fā)體驗(yàn)的“頭五分鐘”。
11、我們的想法是使你可以在頭五分鐘內(nèi)開(kāi)始編寫你的游戲。
12、你不必要考慮創(chuàng)建窗口,消息事件隊(duì)列的彈出和處理,你不需要給出圖片處理程序甚至掌握顯示模式。
13、你不需要?jiǎng)?chuàng)建一個(gè)圖形設(shè)備然后在窗口重新定義大小和最小化的時(shí)候管理它。
14、XNA Framework 替你處理了這一切。
15、你要做的第一件事就是為你的游戲邏輯寫代碼。
16、 另一個(gè)問(wèn)題是處理特定的游戲內(nèi)容(Content),把一個(gè)內(nèi)容導(dǎo)入到你的游戲中然后使它在運(yùn)行時(shí)為你所用。
17、XNA Framework 的一項(xiàng)特性叫做內(nèi)容管道(Content Pipeline)。
18、通過(guò)它你可以極為簡(jiǎn)單的把一個(gè)內(nèi)容引入你的游戲。
19、關(guān)于這點(diǎn)將會(huì)在以后的文章作進(jìn)一步的說(shuō)明。
20、不過(guò)想象一下,以后你可以像管理代碼一樣,將游戲的內(nèi)容作為項(xiàng)目的一部分進(jìn)行處理。
21、內(nèi)容管道將會(huì)為你處理內(nèi)容的導(dǎo)入,編譯和載入。
22、 實(shí)現(xiàn)“頭五分鐘”的另一個(gè)方面在于我們將會(huì)提供一些Start Kits,這些Start Kits 將會(huì)作為一個(gè)項(xiàng)目模版包含完整的游戲操作,以及源代碼和媒體文件。
23、在新建項(xiàng)目對(duì)話框中你可以使用它們,并在上面進(jìn)行修改。
24、最終你將可以直接打開(kāi)一個(gè)在編寫中的游戲,進(jìn)行改寫和調(diào)整之后,按下F5 就可以馬上得到反饋。
25、每一個(gè)Start Kits 都會(huì)有完整的說(shuō)明文檔,還包含一些指導(dǎo)教你如何修改增加游戲的特性。
26、 未來(lái)的版本中游戲開(kāi)發(fā)進(jìn)程的簡(jiǎn)化還將得到不斷改進(jìn)。
27、而我們總的努力方向就在于不斷地降低游戲開(kāi)發(fā)的門檻,使更多的人進(jìn)入到游戲開(kāi)發(fā)者的行列中來(lái)。
28、 Layers 在描述XNA Framework 組成的時(shí)候,我們可以認(rèn)為是一系列層次關(guān)系。
29、 Platform 平臺(tái)是XNA Framework 的最下一層。
30、它由一系列底層的原生代碼和托管 APIs 組成。
31、在這一層中有些APIs 就是Direct3D 9, XACT, XInput 和XContent. Core Framework 核心框架是第一層,并且提供核心操作用來(lái)給其它層的進(jìn)行擴(kuò)展。
32、如果你想要在直接使用托管DirectX,就應(yīng)該是在這一層。
33、在這一層次中包含了對(duì)圖像,聲音,輸入和數(shù)據(jù)存儲(chǔ)的處理。
34、當(dāng)我們要改進(jìn)XNA Framwork,附加新的功能我們就要增建這一層。
35、 Extended Framework) 擴(kuò)展框架主要致力于游戲開(kāi)發(fā)的簡(jiǎn)化。
36、當(dāng)前這一層有兩個(gè)主要的部分:應(yīng)用模塊(Application Model)和內(nèi)容管道。
37、我們將通過(guò)這一層使你可以更容易的開(kāi)發(fā)游戲,同時(shí)便于擴(kuò)展。
38、 游戲部分是最高的層次。
39、這一層包含你的游戲邏輯代碼和內(nèi)容。
40、在這一層將你的游戲邏輯和內(nèi)容相整合。
41、Start Kits、游戲模版和游戲內(nèi)容部件就屬于這一層。
42、 以上我們談?wù)摿嗽S多關(guān)于XNA Framework 的目標(biāo)以及它所劃分的功能層次。
43、但什么是XNA 呢,讓我們來(lái)看看。
44、 Application Model 應(yīng)用模塊的意圖在于抽象你的游戲所運(yùn)行的平臺(tái),讓你專注于游戲的編寫。
45、你不必關(guān)心創(chuàng)建窗口,管理消息隊(duì)列,創(chuàng)建定時(shí)器或時(shí)鐘和處理窗口消息。
46、我們?nèi)继婺氵M(jìn)行了封裝。
47、我們也提供一個(gè)GraphicsComponent(譯注:圖形組件,是一個(gè)類)以極為簡(jiǎn)單的方法對(duì)要繪圖的圖形設(shè)備進(jìn)行創(chuàng)建和管理。
48、在 Xbox360 上是不需要窗口和窗口消息的,這和Windows 有很大不同,你也不必?fù)?dān)心,因?yàn)樵趹?yīng)用模塊上兩個(gè)平臺(tái)是完全相同的。
49、我們也提供通用模塊讓你簡(jiǎn)單的和其它人在游戲中合并GraphicsComponent,通過(guò)這樣可以快速的建立可重用模塊。
50、 GameComponents (譯注:游戲組件集合,也是一個(gè)類)在你的游戲中可以由別人所寫入。
51、這樣的處理在建立和快速運(yùn)行或?qū)崿F(xiàn)一個(gè)可重用的庫(kù)的時(shí)候是很重要的。
52、這一部分是我親眼看著完善起來(lái)的,我相信我們將看到用戶通過(guò)它實(shí)現(xiàn)許多神奇的東西。
53、 我們的圖像APIs 是基于Direct3D 9 APIs 的。
54、它們非常類似于MDX 類型結(jié)構(gòu),但是經(jīng)過(guò)了精心的重構(gòu)和清理使它更容易使用,并且和.Net 的設(shè)計(jì)方針保存一致。
55、這部分和MDX 最大的不同的在于,我們決定取消固定函數(shù)式(fixed-function)的管理方式,而使用一種全渲染驅(qū)動(dòng)可編程管道(all shader-driven programmable pipeline) 我們這樣做是有原因的。
56、首先,可編程管道是實(shí)時(shí)計(jì)算機(jī)圖形的未來(lái)。
57、 Direct3D 10 和Xbox360 都不再為固定函數(shù)提供支持。
58、當(dāng)我們和一些早期的合作者和客戶討論這些問(wèn)題的時(shí)候,我們還是多少有點(diǎn)驚訝,其實(shí)他們對(duì)于跨平臺(tái)的關(guān)注大于對(duì)原固定函數(shù)的關(guān)注。
59、由于害怕在Windows 中用固定函數(shù)APIs 開(kāi)發(fā)的程序(也許開(kāi)發(fā)人員都不確切知道),在移植到Xbox360 上時(shí)立刻得到大量的編譯錯(cuò)誤。
60、當(dāng)知道你的代碼在一開(kāi)始就可以確實(shí)的跨平臺(tái)運(yùn)行,這實(shí)在是令人放心不少。
61、 我們還發(fā)現(xiàn)掌握渲染和特效是游戲編寫中要邁出的一大步。
62、所以我們嘗試在托管DirectX 1.1 到 XNA Framework (Beta 1)中提供了一些移植向?qū)降腁PI。
63、例如BasicEffect 類可以簡(jiǎn)單的通過(guò)設(shè)置屬性,包含光照、紋理等等就可以在“五分鐘”內(nèi)實(shí)現(xiàn)對(duì)一個(gè)物體的呈現(xiàn)。
64、使用BasicEffect 而不需要直接去編寫渲染,就可以很快地在屏幕上顯示出一些東西。
65、然后當(dāng)你開(kāi)始對(duì)渲染和特效較為熟悉,或者可以擴(kuò)展類BasicEffect 的呈現(xiàn)功能時(shí),你也可以直接用它們來(lái)寫你自己的渲染和特效。
66、 我們的聲音APIs 是建立在Windows 和Xbox360 通用的聲音API——XACT 上的。
67、XACT 的理念和Direct3D 的渲染部分類似。
68、聲音的制作人員使用XACT 的工具創(chuàng)建好聲音效果包(packages),并且配置好音量,重復(fù)次數(shù),聲道混音(支持5.1)等等。
69、開(kāi)發(fā)人員得到這樣的包之后再載入它,然后就可以簡(jiǎn)單的通過(guò)包的名字來(lái)調(diào)用聲音,而無(wú)須考慮緩存,流導(dǎo)入等其它管理細(xì)節(jié)。
70、例如音效人員制作了一個(gè)包含幾個(gè)wav 文件,有LFE 效果并且和其它通道混音的聲音包“BigExplosion”。
71、而程序員不需要知道這方面的細(xì)節(jié),他只要得到“BigExplosion”,然后對(duì)它調(diào)用Play。
72、漂亮!簡(jiǎn)潔! 輸入API 建立在基于一般Xbox360 的控制器(譯注:就是手柄)的XInput API 之上,它也是跨平臺(tái)的。
73、輸入提供一個(gè)立即模式(immediate mode)API 而不需要初始化。
74、不需要考慮獲得或釋放設(shè)備,設(shè)置共享模式等等。
75、你只需在恰當(dāng)?shù)目刂破黝愋蜕险{(diào)用GetState 就行了。
76、我們提供了一個(gè)GamePad 類型用來(lái)表示 Windows 和Xbox360 上的Xbox360 控制器。
77、同時(shí)在Windows 中還有鍵盤類型和鼠標(biāo)類型。
78、 存儲(chǔ)API 提供了以平臺(tái)無(wú)關(guān)方法來(lái)讀取和保存游戲數(shù)據(jù)(例如保存游戲狀態(tài),高分值等等)的途徑。
79、在Windows 中這不是什么問(wèn)題,因?yàn)槟憧梢允褂肧ystem.IO。
80、并且你可以通過(guò)環(huán)境(Environment)方法正確的為當(dāng)前用戶定位到存儲(chǔ)的數(shù)據(jù)。
81、在Xbox360 上你需要使用Profile 和存儲(chǔ)設(shè)備來(lái)操作游戲狀態(tài),例如硬盤和記憶卡。
82、XNA Framework 的存儲(chǔ)處理部分使這些變得很容易,并可以達(dá)到跨平臺(tái)的效果。
83、我們?cè)赪indows 上對(duì)Xbox360 這些操作進(jìn)行了模擬,以使你用完全一樣的代碼在兩個(gè)平臺(tái)上讀取和寫入數(shù)據(jù)。
84、 數(shù)學(xué)API 提供了一些游戲中常用的數(shù)學(xué)類型,例如Vector2, Vector3, Vector4, Matrix, Plane,還有 Ray。
85、我們也提供了一些卷綁定(bounding volume)類型例如 BoundingBox, BoundingSphere 和 BoundingFrustum。
86、我們的綁定類型也包含交集和容積(containment)測(cè)試的方法。
87、需要注意的是我們的數(shù)學(xué)庫(kù)默認(rèn)是右序的。
88、這里我指的是在Matrix(矩陣)上的情況。
89、例如我們只提供了一個(gè)對(duì)矩陣右序查看的CreateLookAt 方法,而不是分別提供CreateLookAtLH 和 CreateLookAtRH。
90、我們這樣設(shè)計(jì)的目的在于使其它外部?jī)?nèi)容和中間件的整合都較為統(tǒng)一而容易。
91、如果大家都遵守這個(gè)約定那么按照這樣開(kāi)發(fā)的XNA Framework 和外部的APIs 就可以較容易的聯(lián)合使用。
92、以上我說(shuō)的是默認(rèn)的時(shí)候,進(jìn)行左序操作是無(wú)需其它條件的。
93、如果你確實(shí)需要使用左序(或者其它方法)操作也可以,你只需要自己寫操作代碼。
94、 目前我們注意力主要在剛發(fā)布到你手上的XNA Game Studio ExpressV1.0 以及XNA Framework 上。
95、但是我們也在考慮未來(lái)版本的特性。
96、如前面提過(guò)的為了添加新的功能操作,我們將對(duì)Core Framework 層進(jìn)行擴(kuò)展。
97、同時(shí)對(duì)Extended Framework 進(jìn)行增建,使得用XNA Game Studio Express 創(chuàng)建游戲更容易。
98、我們也會(huì)推出XNA Game Studio Professional,以使開(kāi)發(fā)者可以用XNA Framework 在 Xbox360 上開(kāi)發(fā)商業(yè)游戲。
99、請(qǐng)?jiān)谙乱粋€(gè)月中留意這方面的情況。
100、 我提到XNA Framework 的一個(gè)目標(biāo)在于讓編寫游戲更容易,使你專注于你的游戲而不是平臺(tái)。
101、它到底有多簡(jiǎn)單呢?下面的代碼顯示了一個(gè)可運(yùn)行的 XNA Framework 游戲應(yīng)用程序大體框架。
102、 public class SampleGame : Game { private GraphicsComponent graphics; public SampleGame() { this.graphics = new GraphicsComponent(); this.GameComponents.Add(graphics); } protected override void Update() { } protected override void Draw() { this.graphics.GraphicsDevice.Clear(Color.Blue); this.graphics.GraphicsDevice.Present(); } static void Main(string[] args) { using (SampleGame game = new SampleGame()) { game.Run(); } } } 感謝你花時(shí)間閱讀這篇文章。
103、我希望我已經(jīng)講明白了XNA Framework 到底提供什么。
104、Beta 版將會(huì)在幾天內(nèi)放出,所以歡迎您下載下來(lái)使用。
105、然后告訴我們那些是你喜歡的部分,哪些部分是你不喜歡的或者不清楚的。
106、我們期望能為你做出我們最好的產(chǎn)品。
本文到此結(jié)束,希望對(duì)大家有所幫助。
版權(quán)說(shuō)明: 本文由用戶上傳,如有侵權(quán)請(qǐng)聯(lián)系刪除!
猜你喜歡:
- 2022-09-20 富士康投訴郵箱(富士康投訴電話多少)
- 2022-09-20 你說(shuō)的養(yǎng)草和火花是什么意思
- 2022-09-20 戶籍類別代碼是什么(什么是戶籍代碼)
- 2022-09-20 12348法律咨詢可靠嗎,事情會(huì)解決嗎(12348可以為解決糾紛提供意見(jiàn)嗎)
- 2022-09-20 儒家文化對(duì)中國(guó)的影響減少了(儒家文化對(duì)中國(guó)的影響)
- 2022-09-20 急切的近義詞有(急切的近義詞是什么)
- 2022-09-20 三角形的面積公式三角函數(shù)公式(三角形的面積公式三角函數(shù))
- 2022-09-20 形容收獲的成語(yǔ)有哪些成語(yǔ)(形容收獲的成語(yǔ)有哪些)
最新文章:
- 2023-07-01 燃?xì)獾厣瞎艿赖臋z漏方法有哪三種(撿地上的頭發(fā)有什么好方法)
- 2023-07-01 墨鏡如何辨別好壞(墨鏡好壞怎么區(qū)分 墨鏡好壞區(qū)分方法)
- 2023-07-01 清洗魚缸服務(wù)(新買的魚缸怎么清洗 新買的魚缸如何清洗)
- 2023-07-01 寶寶爬行墊(新買的爬行墊怎么清洗 新買的爬行墊清潔的方法)
- 2023-07-01 汽車上斑斑點(diǎn)點(diǎn)怎么去除(汽車表面斑點(diǎn)怎么清洗 汽車表面斑點(diǎn)如何清洗)
- 2023-07-01 掛杯的好壞是評(píng)價(jià)一款葡萄酒品質(zhì)優(yōu)劣的直接標(biāo)準(zhǔn)(怎么區(qū)分葡萄酒的好壞 區(qū)分葡萄酒的好壞方法)
- 2023-07-01 鹿場(chǎng)新鮮鹿茸怎么保存方法(新鮮的鹿茸怎樣長(zhǎng)期保存 如何保存鹿茸才新鮮)
- 2023-07-01 衣物除菌液有必要使用嗎(衣物除菌液有必要用嗎)
- 2023-07-01 住房公積金是要交多少(住房公積金要交多少 住房公積金要交多少合適)
- 2023-07-01 公積金買多久才可以用來(lái)貸款買房(住房公積金怎么用來(lái)買房 住房公積金如何用來(lái)買房)
- 2023-07-01 辦理公積金凍結(jié)需要什么手續(xù)(辦公積金凍結(jié)需要的材料 辦公積金凍結(jié)需要的材料有哪些)
- 2023-07-01 如何使用公積金最劃算(住房公積金怎么用劃算 住房公積金如何用劃算)
- 2023-07-01 重慶市住房公積金管理中心(教師住房公積金怎么用 教師住房公積金如何用)
- 2023-07-01 住房公積金自己交和公司交有什么區(qū)別(怎么有住房公積金 如何有住房公積金)
- 2023-07-01 深圳市住房公積金管理中心(深圳住房公積金怎么用 深圳住房公積金如何用)
- 2023-07-01 住房公積金工資總額的組成規(guī)定(住房公積金按工資按多少交 住房公積金按工資的什么比例上交)