基于3D局域網(wǎng)的校園大富翁游戲_第1頁(yè)
基于3D局域網(wǎng)的校園大富翁游戲_第2頁(yè)
基于3D局域網(wǎng)的校園大富翁游戲_第3頁(yè)
基于3D局域網(wǎng)的校園大富翁游戲_第4頁(yè)
基于3D局域網(wǎng)的校園大富翁游戲_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、吉林大學(xué)珠海學(xué)院畢業(yè)設(shè)計(jì)基于3d局域網(wǎng)的校園大富翁游戲the 3d game “school monopoly” based on local area network完成日期 2013年 4月 18 日吉林大學(xué)珠海學(xué)院本科畢業(yè)論文(設(shè)計(jì))開題報(bào)告基于3d局域網(wǎng)的校園大富翁游戲摘要在生活水平不斷提高和科學(xué)技術(shù)飛速發(fā)展的今天,電腦游戲已經(jīng)成為人們的主要娛樂(lè)項(xiàng)目。隨著越來(lái)越多的的電腦游戲進(jìn)入人們的視線,簡(jiǎn)單的單機(jī)游戲越來(lái)越單調(diào),難以滿足人們的需求。顯然,大家更加熱衷于網(wǎng)絡(luò)游戲。網(wǎng)絡(luò)游戲改變了單純的人機(jī)對(duì)戰(zhàn)模式,使人們?cè)诓煌牡胤侥芡瑫r(shí)享受游戲帶來(lái)的快樂(lè)。同時(shí),近幾年3d技術(shù)的不斷成熟,大量的2d游

2、戲和2.5d游戲開始向3d游戲發(fā)展,在感受了3d游戲真實(shí)的畫面和場(chǎng)景后,無(wú)數(shù)玩家為它瘋狂為它著迷。本文詳細(xì)介紹了集當(dāng)下最受歡迎的網(wǎng)絡(luò)和3d技術(shù)為一身的校園大富翁游戲的策劃和設(shè)計(jì)的具體流程,對(duì)于程序?qū)崿F(xiàn)方法的思想和算法作了詳盡的闡述。此外,unity 3d引擎和一些相關(guān)的插件進(jìn)行了介紹,特別對(duì)于一些例如描繪指令和路徑尋找算法等能使程序減少內(nèi)存消耗并能優(yōu)化性能的技術(shù)作了比較詳細(xì)的介紹。在不斷的學(xué)習(xí)和完善下希望游戲的可操作性、可玩性、畫面感都有了很大的突破。關(guān)鍵詞: 網(wǎng)絡(luò)游戲;3d技術(shù);unity 3d引擎;游戲策劃the 3d game “school monopoly” based on loc

3、al area networkabstractnowadays,computer games have became the dominant entertainment with the increasing living standard and rapidly developing technology.people have already could not be content with such simple console game as more and more computer games appear.obviously,people are fond of onlin

4、e games more .online games change the man-machine models,which makes players enjoy the game at one time but at different places.meanwhile,the developing 3d technology triggers that a great number of 2d and 2.5d games turn into the 3d games.countless people are fascinated with 3d computer games after

5、 experiencing the real scene.the game school monopoly,which combines with the most popular elements network and 3d technology is introduced in details in this text for its plan and design,also, the main idea and algorithm about how to achieve each applications is supposed to be stated . unity 3d sof

6、tware and some plug-in is introduced how to apply in the system,too. the technology,such as the draw calls or intelligent routing algorithm is discussed as it can optimizing the system.i hope that the school monopoly could make progress for the playability, the screen and the operability of the game

7、.key words:online game;3d technology ;unity 3d game engine;game design目錄1 緒論11.1 課題背景介紹11.2 課題研究?jī)?nèi)容21.3 課題研究的意義21.4 論文結(jié)構(gòu)22 開發(fā)環(huán)境簡(jiǎn)介42.1 unity3d游戲引擎概述42.2 開發(fā)環(huán)境組成52.2.1 工程視圖62.2.2 層次視圖62.2.3 屬性視圖72.2.4 平臺(tái)設(shè)定82.2.5 場(chǎng)景視圖92.2.6 游戲視圖102.2.7 工具欄102.3 unity3d腳本語(yǔ)言112.4 資源管道112.4.1 3d max122.4.2 maya122.4.3 photo

8、shop132.4.4 monodevelop143 游戲策劃153.1 游戲策劃簡(jiǎn)介153.2 目標(biāo)消費(fèi)群體153.3 游戲類型153.4 世界觀設(shè)定153.5 游戲概況163.6 規(guī)則介紹173.6.1 游戲目標(biāo)173.6.2 進(jìn)入游戲173.6.3 擲骰前進(jìn)173.6.4 物業(yè)173.6.5 銀行系統(tǒng)173.6.6 回合停留183.6.7 勝利條件184 游戲設(shè)計(jì)184.1 游戲結(jié)構(gòu)設(shè)計(jì)184.2 場(chǎng)景設(shè)計(jì)194.3 界面設(shè)計(jì)204.4 地圖設(shè)計(jì)224.4.1 小地圖模塊224.4.2 地圖模塊234.5 游戲?qū)ο笤O(shè)計(jì)244.6 按鍵控制254.7 數(shù)據(jù)設(shè)計(jì)254.8 卡片抽取設(shè)計(jì)274

9、.9 多媒體設(shè)計(jì)294.10 截屏功能294.11 網(wǎng)絡(luò)模塊294.12 聊天模塊305 具體實(shí)現(xiàn)315.1 mvc模式315.2 游戲中的有限狀態(tài)機(jī)315.3 插件的使用325.3.1 ngui325.3.2 itween335.4 優(yōu)化drawcall335.5 游戲中角色選擇355.6 游戲中的網(wǎng)絡(luò)實(shí)現(xiàn)365.7 聊天功能的實(shí)現(xiàn)395.8 游戲路線的實(shí)現(xiàn)405.9 物理碰撞425.10 游戲邏輯的實(shí)現(xiàn)425.11 攝像機(jī)425.12 小地圖的實(shí)現(xiàn)435.13 四個(gè)按鈕的實(shí)現(xiàn)445.14 數(shù)據(jù)存儲(chǔ)446 結(jié)束語(yǔ)45參考文獻(xiàn)46致謝471緒論1.1課題背景介紹計(jì)算機(jī)游戲是近幾十年誕生的一種新

10、形勢(shì)的娛樂(lè)方式。它以計(jì)算機(jī)為操作平臺(tái),操作者和計(jì)算機(jī)不斷互動(dòng),相互獲取信息,是一種高級(jí)的計(jì)算機(jī)技術(shù)。世界上第一款pc游戲冒險(xiǎn)島1978年在美國(guó)問(wèn)世,給全世界人民的娛樂(lè)生活帶來(lái)了一種全新的體驗(yàn)。直到1990年,計(jì)算機(jī)游戲經(jīng)歷了初生的混沌時(shí)代,role-playing game(角色扮演游戲)在不斷摸索中艱難成長(zhǎng)。1990年以后的10年時(shí)間是計(jì)算機(jī)游戲的成熟年華,real-time strategy game(即時(shí)戰(zhàn)略游戲),real-time strategy game(回合制戰(zhàn)略游戲),adventure game(冒險(xiǎn)類游戲)等內(nèi)容豐富并且形式多變的游戲越來(lái)越多的出現(xiàn)在了人們的娛樂(lè)生活中。古

11、墓麗影等經(jīng)典的游戲讓全世界的玩家們感受到了計(jì)算機(jī)游戲的魅力。2000年以后,計(jì)算機(jī)游戲更是迎來(lái)了它的新紀(jì)元。2001年,第一屆world cyber games(世界電子競(jìng)技大賽)在韓國(guó)首爾開賽,直至今日,這項(xiàng)賽事依然吸引著全世界的玩家。隨著計(jì)算機(jī)游戲技術(shù)的飛速發(fā)展,有特色有新意的游戲?qū)映霾桓F,但是單一的人機(jī)對(duì)戰(zhàn)模式已經(jīng)滿足不了市場(chǎng)和玩家,網(wǎng)絡(luò)游戲的興起再一次將計(jì)算機(jī)游戲推向了一個(gè)高峰。多人同時(shí)在線這一特點(diǎn)時(shí)游戲變得真實(shí)和生動(dòng),每個(gè)玩家都能在網(wǎng)絡(luò)中跟另一個(gè)玩家智能地游戲。2003年,中國(guó)福布斯富豪榜上,丁磊,陳天橋等多名網(wǎng)絡(luò)游戲業(yè)內(nèi)人士榜上有名,進(jìn)一步說(shuō)明了計(jì)算機(jī)游戲?qū)W(wǎng)絡(luò)需求的必要性。游戲技

12、術(shù)在不斷的發(fā)展,市場(chǎng)對(duì)游戲的需求也在不斷的增加。當(dāng)溝通和連接不再是問(wèn)題的時(shí)候人們開始對(duì)電腦游戲的畫面有了更新的更高的需求。以往的2d甚至是2.5d畫面已經(jīng)顯示不出游戲中精致夢(mèng)幻的場(chǎng)景。于是游戲制作者和程序員開始研究怎樣利用現(xiàn)有的2d顯示設(shè)備顯示出3d的游戲畫面。3d是英文“three dimensions”的簡(jiǎn)稱,中文是指三維、三個(gè)維度、三個(gè)坐標(biāo),即有長(zhǎng)寬、高。今天的3d,主要特指是基于電腦和互聯(lián)網(wǎng)的數(shù)字化的三維立體技術(shù),也就是三維數(shù)字化,包括3d軟件技術(shù)和硬件技術(shù)。近些年3d技術(shù)在不斷的完善和取得巨大的突破,3d的消費(fèi)和使用,如通過(guò)3d技術(shù)做出來(lái)的游戲、電影、手機(jī)等等,更已經(jīng)成為了普通大眾工

13、作和生活中的一部分,3d讓我們回歸從一個(gè)新的方式新的視角體驗(yàn)整個(gè)世界。3d游戲是使用空間立體計(jì)算技術(shù)實(shí)現(xiàn)操作的游戲。3d類型的游戲有很多,比如捕魚達(dá)人,游戲場(chǎng)景采用3d制作,各種魚類游動(dòng)姿態(tài)自然,炮彈打擊粒子效果華麗,打擊感強(qiáng)烈。伴隨互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)絡(luò)游戲所具有的信息雙向交流性、高速度及不受空間限制等娛樂(lè)優(yōu)勢(shì)日益顯現(xiàn),而3d網(wǎng)絡(luò)游戲更是吸引著廣大的玩家,像魔獸世界、永恒之塔 ,天下2、 誅仙2、完美國(guó)際、龍之谷等等很多的網(wǎng)絡(luò)游戲都占據(jù)著一定的市場(chǎng)份額。1.2課題研究?jī)?nèi)容由于游戲場(chǎng)景需要按照吉林大學(xué)珠海學(xué)院真實(shí)場(chǎng)景還原,所以需要在3d建模軟件3d max和maya里進(jìn)行建模。建立一套輕量化建

14、模的方法,使得模型經(jīng)過(guò)輕量化原則處理后滿足網(wǎng)絡(luò)傳輸?shù)囊蟆p小模型的資源量大小,以達(dá)到縮短下載時(shí)間和提高畫面流暢度的目的。是課題研究的一個(gè)內(nèi)容。作為游戲程序設(shè)計(jì),做好詳盡的游戲策劃以及編寫有吸引力劇本和高效的場(chǎng)景管理對(duì)整個(gè)游戲的實(shí)現(xiàn)有著重要的意義,所有這也將是課題研究的一個(gè)重要內(nèi)容。unity 3d是一款方便向其他平臺(tái)移植的的游戲引擎,受不同的平臺(tái)屏幕分辨率,內(nèi)存,cpu頻率和系統(tǒng)的限制,如何設(shè)計(jì)一種方法最有效的實(shí)現(xiàn)內(nèi)存管理,網(wǎng)絡(luò)連接等則是另一個(gè)研究?jī)?nèi)容。1.3課題研究的意義目前,在國(guó)內(nèi)外,網(wǎng)絡(luò)技術(shù)和3d技術(shù)在軍事,教育,醫(yī)療等領(lǐng)域都有廣泛的應(yīng)用,在計(jì)算機(jī)游戲領(lǐng)域中網(wǎng)絡(luò)技術(shù)和3d技術(shù)更是時(shí)下游

15、戲設(shè)計(jì)最熱門和需求較高的兩種技術(shù),例如英雄聯(lián)盟,魔獸世界等具有這兩種技術(shù)的游戲都擁有眾多的玩家。但是實(shí)現(xiàn)網(wǎng)絡(luò)3d的游戲的方法有很多,但一款方便靈活,易學(xué)易懂且支持跨平臺(tái)的游戲引擎吸引了我的注意。在了解了unity3d引擎后我仿佛看到了未來(lái)移動(dòng)互聯(lián)網(wǎng)終端最強(qiáng)勁的開發(fā)平臺(tái) ,學(xué)習(xí),研究和使用這款游戲引擎來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)3d游戲既能掌握新技能又是對(duì)自我的一種挑戰(zhàn)。另一方面,作為一名即將畢業(yè)的學(xué)生,對(duì)吉林大學(xué)珠海學(xué)院美麗的校園風(fēng)光和積極的校園生活的眷戀讓我決定制作一款以校園為背景的游戲,既可以帶領(lǐng)大家真實(shí)的感受學(xué)校的環(huán)境又能豐富大家的課余生活。1.4論文結(jié)構(gòu)本文介紹了基于3d局域網(wǎng)的校園大富翁游戲的設(shè)計(jì)和實(shí)

16、現(xiàn),對(duì)聯(lián)網(wǎng)的實(shí)現(xiàn),場(chǎng)景管理等有針對(duì)性的研究。本課題具體內(nèi)容如下:第一章 ,為緒論,概括的介紹了基于3d局域網(wǎng)的校園大富翁游戲的研究背景,研究?jī)?nèi)容和研究意義。第二章 ,為開發(fā)環(huán)境的簡(jiǎn)介,對(duì)unity 3d的相關(guān)知識(shí)和技術(shù)以及模型制作需要的軟件進(jìn)行了介紹。第三章 ,講述了該游戲的游戲策劃,確定了主題和規(guī)則。第四章 ,討論的是游戲各個(gè)模塊的設(shè)計(jì),使程序編寫的時(shí)候邏輯更加清晰。第五章 ,詳細(xì)的講解了各個(gè)模塊的具體實(shí)現(xiàn)的方法和過(guò)程,并在難點(diǎn)出給出了代碼。2開發(fā)環(huán)境簡(jiǎn)介2.1unity 3d游戲引擎概述當(dāng)下,不僅僅移動(dòng)互聯(lián)網(wǎng)發(fā)展迅猛,pc硬件水平的提升也毫不遜色。這些變化都給予了游戲研發(fā)巨大的空間,使得新

17、想法新技術(shù)層出不窮。思想和技術(shù)的雙管齊下讓跨網(wǎng)、跨平臺(tái)和跨終端的網(wǎng)絡(luò)應(yīng)用得到了更大的拓展。不難發(fā)現(xiàn),網(wǎng)頁(yè)游戲的發(fā)展趨勢(shì)近年來(lái)側(cè)重于2d畫面向3d的升級(jí),3d游戲已經(jīng)被公認(rèn)為將是該領(lǐng)域的主流形態(tài)。而基于unity 3d引擎的畫面和跨平臺(tái)應(yīng)用優(yōu)勢(shì)使得它成為游戲程序員關(guān)注的焦點(diǎn)。unity3d是由unity technologies開發(fā)的一個(gè)輕松創(chuàng)建諸如三維視頻游戲、建筑可視化、實(shí)時(shí)三維動(dòng)畫等類型互動(dòng)內(nèi)容的多平臺(tái)的綜合型游戲開發(fā)工具,是一個(gè)全面整合的專業(yè)游戲引擎。unity3d類似于director,blender game engine, virtools 或 torque game builde

18、r等利用交互的圖型化開發(fā)環(huán)境為首要方式的軟件其編輯器運(yùn)行在windows 和mac os x下,可發(fā)布游戲至windows、mac、wii、iphone和android平臺(tái)。但是unity3d收費(fèi)、封閉源碼避免了人們隨便的對(duì)源碼進(jìn)行修改,讓引擎更加安全地為我們服務(wù)??缙脚_(tái)游戲開發(fā)成為了unity3d引擎功能強(qiáng)大的一個(gè)最顯著特點(diǎn)。如今的現(xiàn)狀是各個(gè)大公司紛紛開發(fā)出自己特色的操作系統(tǒng),每一款操作系統(tǒng)用于編寫能夠運(yùn)行于該系統(tǒng)的軟件的語(yǔ)言都不盡相同。這使得程序員需要掌握大量的語(yǔ)言和開發(fā)技能才能做出能占領(lǐng)各個(gè)市場(chǎng)的軟件。在如此復(fù)雜和低效的背景下,跨平臺(tái)開發(fā)無(wú)疑為開發(fā)者節(jié)省了大量時(shí)間。平臺(tái)之間的差異會(huì)直接影

19、響到開發(fā)進(jìn)度,開發(fā)者在開發(fā)時(shí)必須考慮到屏幕尺寸、硬件條件的差異。而將大量時(shí)間浪費(fèi)在平臺(tái)轉(zhuǎn)換上并不值得。unity 3d幾乎為開發(fā)者解決了這一難題,將平臺(tái)移植功能自動(dòng)封裝在軟件內(nèi),但使用它后也并非一點(diǎn)麻煩都不會(huì)產(chǎn)生。因?yàn)楦髌脚_(tái)的硬件條件是不同的,比如pc的硬件條件肯定會(huì)強(qiáng)于手機(jī)或是平板電腦,所以開發(fā)者還需要針對(duì)不同的平臺(tái)做一番取舍。2.2開發(fā)環(huán)境組成unity 3d開發(fā)環(huán)境中包含了多組工具和組件,如圖2-1和2-2所示。應(yīng)用程序開發(fā)者可以通過(guò)這些工具和組件高效、快速的開發(fā)出多種多樣的應(yīng)用程序,這些工具和組件包括:圖2-1 unity 3d 引擎工作界面圖2-2 unity 3d 引擎工作界面2.

20、2.1工程視圖project視圖主要存放游戲中用到的所有資源文件,常見(jiàn)的資源包括:游戲腳本,預(yù)設(shè),材質(zhì),動(dòng)畫,自定義字體,紋理,物理材質(zhì)和gui皮膚等,這些資源需要賦予hierarchy視圖中的某些游戲?qū)ο?。如圖2-3所示。圖2-3 project視圖2.2.2層次視圖層次(hierarchy)與當(dāng)前場(chǎng)景關(guān)聯(lián),包含全部的游戲具體對(duì)象。這些對(duì)象是在資產(chǎn)文件里物體直接實(shí)例化,像3d模型、攝像機(jī),平面貼圖,光源,平面,地形或?qū)嵗念A(yù)制品(自定義對(duì)象)。在層次里,你可以選取和父類化對(duì)象。當(dāng)對(duì)象被添加及從場(chǎng)景里移除時(shí),它們將也從層次里顯示及消失。如圖2-4所示圖2-4 hierarchy 視圖2.2.

21、3屬性視圖inspector 視圖:在unity里的游戲由多個(gè)的游戲?qū)ο螅ㄎ矬w)組成,包括網(wǎng)格、腳本、聲音或其它圖形元素如光。檢視器面板顯示關(guān)于你當(dāng)前選取的游戲?qū)ο蟮脑敿?xì)信息,包括所有的附加組件以及它們的屬性。這里,修改游戲?qū)ο螅ㄎ矬w)的功能在場(chǎng)景里。可在檢視器面板里顯示的任何屬性可以被直接修改。甚至腳本變量可以被修改而不通過(guò)腳本它自身??梢允褂脵z視器面板修改在運(yùn)行時(shí)的變量去試驗(yàn)和為你的游戲發(fā)現(xiàn)魔法可玩性。在腳本里,如果定義了一個(gè)對(duì)象類型的公共變量(如gameobject 或transform),可以拖動(dòng)并放下一個(gè)游戲?qū)ο蠡蝾A(yù)制品到檢視器面板構(gòu)成一個(gè)賦值分配。如圖2-5所示圖2-5 inspe

22、ctor 視圖2.2.4平臺(tái)設(shè)定unity3d可以生成多種平臺(tái)的的運(yùn)行版本,在玩家設(shè)置中,可設(shè)定開發(fā)公司的名稱,程序名稱等,在平臺(tái)設(shè)定中可以選擇打包的游戲平臺(tái),比如web平臺(tái),pc平臺(tái),ios平臺(tái)等。如圖2-6所示圖2-6 平臺(tái)設(shè)定圖2.2.5場(chǎng)景視圖游戲中的模型資源主要存放在該視圖。場(chǎng)景中的3d模型種類繁多,比如游戲主角,敵人,道具,天空等,我們都能在該視圖里面直觀的看到。如圖2-7所示圖2-7 scene視圖2.2.6游戲視圖游戲視圖是unity3d引擎區(qū)別于一些老式引擎的地方,它能直接在編輯面板里面看到運(yùn)行后的游戲視圖,使程序員能第一時(shí)間感受到游戲的真實(shí)效果。如圖2-8所示圖2-8 ga

23、me視圖2.2.7工具欄工具欄包含5組工具,提供了一些最基本的操作,如表2-1所示。圖2-9 工具欄2.3unity 3d腳本語(yǔ)言u(píng)nity 3d的腳本語(yǔ)言在unity 3d游戲開發(fā)中占據(jù)了主角地位。它提供了三種腳本語(yǔ)言的支持:javascript、c#、boo。其中boo是python在.net上的實(shí)現(xiàn),unity3d通過(guò)mono實(shí)現(xiàn)了.net代碼的跨平臺(tái)。如果編程者能夠通過(guò)通過(guò)名稱、層次結(jié)構(gòu)、tags 等方式訪問(wèn)所有的對(duì)象,那么就能大大的提高編程效率,減少編程時(shí)間。再者,unity更大的好處就是腳本語(yǔ)言的跨平臺(tái)性,絕大部分平臺(tái)相關(guān)的代碼都放到了引擎的內(nèi)部,而游戲內(nèi)容相關(guān)的代碼都可以跨平臺(tái)執(zhí)

24、行,在游戲的制作過(guò)程中實(shí)現(xiàn)了跨平臺(tái)。2.4資源管道unity3 d游戲引擎不像virtools等其他的游戲引擎,它的資源管道支持多種格式的資源,3ds,fbx等格式可以直接導(dǎo)入,貼圖材質(zhì)也會(huì)自動(dòng)轉(zhuǎn)換為u3d的格式,相當(dāng)方便。如圖2-10所示。下面我們介紹幾款unity 3d資源管道支持的軟件圖2-10 資源通道圖2.4.13d max3d max(簡(jiǎn)稱max)軟件,是能夠?qū)崿F(xiàn)造型,渲染和動(dòng)畫制作的一款3d軟件。從它出現(xiàn)的那一天起,即受到了全世界無(wú)數(shù)三維動(dòng)畫制作愛(ài)好者的熱情贊譽(yù),并廣泛的運(yùn)用于室內(nèi)實(shí)際,景觀建模等。當(dāng)前,它已逐步成為在個(gè)人pc機(jī)上最優(yōu)秀的三維動(dòng)畫制作軟件。如圖2-11所示:圖2-

25、11 3d max界面圖2.4.2mayamaya是一款世界上最頂級(jí)的能夠?qū)崿F(xiàn)建模、動(dòng)畫、視覺(jué)效果和高級(jí)渲染甚至是布料模擬等的3d動(dòng)畫軟件,并且被廣泛地運(yùn)用于動(dòng)畫制作,電影特效制作,場(chǎng)景建模。也正是如此,各行各業(yè)的人員比如游戲開發(fā)人員,影像后期制作人員等都十分喜愛(ài)這款軟件。如圖2-12所示 。圖2-12 maya界面圖2.4.3photoshopadobe photoshop,簡(jiǎn)稱“ps”,是一個(gè)由adobe systems開發(fā)和發(fā)行的圖像處理軟件。photoshop主要處理以像素所構(gòu)成的數(shù)字圖像。使用其眾多的編修與繪圖工具,可以更有效的進(jìn)行圖片編輯工作。如圖2-13所示圖2-13 photo

26、shop 界面圖2.4.4monodevelopunity可部署在windows與mac os x兩種操作系統(tǒng)下,所有需要一個(gè)跨平臺(tái)的腳本編輯器。monodevelop腳本編輯器并不是unity公司研發(fā)的,它是一個(gè)開源項(xiàng)目,任何公司一家公司都可以使用。如圖:圖2-14 monodevelop界面3游戲策劃3.1游戲策劃簡(jiǎn)介游戲策劃是設(shè)計(jì)游戲內(nèi)容和規(guī)則的一個(gè)過(guò)程,好的游戲設(shè)計(jì)是這樣一個(gè)過(guò)程:創(chuàng)建能激起玩家通關(guān)熱情的目標(biāo),以及玩家在追求這些目標(biāo)時(shí)做出的有意義的決定需遵循的規(guī)則。1游戲策劃雖然不參與模塊設(shè)計(jì)和代碼的編寫卻是整個(gè)游戲開發(fā)的靈魂。在整個(gè)策劃的過(guò)程中,洞察力,對(duì)市場(chǎng)的調(diào)查能力,對(duì)系統(tǒng)工程的

27、操縱能力,對(duì)美工音樂(lè)的鑒賞能力甚至是和其他部門的協(xié)調(diào)能力都是一個(gè)策劃人員需要具備的,因?yàn)橛螒虿邉澓陀螒蜷_發(fā)的其他部分不同,比如說(shuō)負(fù)責(zé)美工的人員只需要專注于游戲的畫面,負(fù)責(zé)編程的人員只需要將設(shè)計(jì)編程代碼,而策劃人員需要的是對(duì)每一個(gè)環(huán)節(jié)熟悉和敏感,在策劃的時(shí)候就要發(fā)散考慮到游戲的風(fēng)格對(duì)美工人員的影響,劇情和任務(wù)對(duì)編程人員的影響,更有可能策劃出的難易程度對(duì)整個(gè)游戲完成周期的影響導(dǎo)致最后對(duì)市場(chǎng)部門人員的影響,所以在游戲策劃的時(shí)候就需要嚴(yán)謹(jǐn)縝密,高效的支配勞動(dòng)力為游戲服務(wù)。3.2目標(biāo)消費(fèi)群體大學(xué)珠海學(xué)院的全體師生為校園大富翁的主要消費(fèi)群體,此外有意愿了解和感受吉林大學(xué)珠海學(xué)院校園風(fēng)光以及單純以策略經(jīng)營(yíng)為

28、目的娛樂(lè)的人群也是校園大富翁的消費(fèi)群體。3.3游戲類型隨著游戲內(nèi)容的豐富,現(xiàn)在很多游戲都不能用單一的類型去定義,從可玩性的角度出發(fā),校園大富翁融經(jīng)營(yíng)類,角色扮演類,棋牌類為一體的網(wǎng)絡(luò)游戲。3.4世界觀設(shè)定吉林大學(xué)珠海學(xué)院校是坐落于廣東省珠海市金灣區(qū)的一所美麗的學(xué)校園。設(shè)計(jì)學(xué)校的設(shè)計(jì)師曾經(jīng)為悉尼奧運(yùn)會(huì)場(chǎng)館設(shè)計(jì)。整個(gè)學(xué)院環(huán)境優(yōu)美,空氣清新,風(fēng)景如畫,一派朝氣蓬勃的景象。 在這里你可以選擇你喜歡的院系和性別,化身為校園中的一員,親自經(jīng)營(yíng)你的校園大富翁生活。圖3-1 美麗的校園風(fēng)光圖1圖3-2 美麗的校園風(fēng)光圖23.5游戲概況游戲玩家在游戲中選擇角色,通過(guò)投骰子行走,占領(lǐng)相應(yīng)的學(xué)生宿舍收取積分。經(jīng)過(guò)自

29、己占領(lǐng)的宿舍時(shí)可以增加一顆星,經(jīng)過(guò)對(duì)手占領(lǐng)的宿舍時(shí)則需要交納積分。在經(jīng)過(guò)教學(xué)樓,體育館,圖書館,飯?zhí)玫鹊攸c(diǎn)玩家則需要抽取卡片。玩家可以在游戲中使用多種道具幫助獲得游戲勝利。游戲需要兩名玩家對(duì)戰(zhàn)完成。3.6規(guī)則介紹3.6.1游戲目標(biāo)想方設(shè)法讓對(duì)方玩家破產(chǎn)(金錢少于50)或者積分等于少于0,而使自己成為唯一的贏家。3.6.2進(jìn)入游戲進(jìn)入游戲后玩家選擇自己喜歡的角色并取名,每位玩家會(huì)擁有3000的金錢和300的積分。3.6.3擲骰前進(jìn)擲骰的玩家根據(jù)擲出的骰子點(diǎn)數(shù)前進(jìn)。到達(dá)無(wú)人占領(lǐng)的宿舍樓時(shí),玩家可以選擇要不要占領(lǐng),占領(lǐng)需要花費(fèi)一定的金錢。到達(dá)已經(jīng)占領(lǐng)的宿舍樓時(shí)可以選擇對(duì)宿舍樓進(jìn)行維修和升級(jí),升級(jí)后的

30、宿舍樓會(huì)收取更多的積分。到達(dá)對(duì)方擁有的宿舍時(shí)會(huì)支付對(duì)方積分。到達(dá)教學(xué)樓,圖書館,飯?zhí)茫瑢?shí)驗(yàn)樓等大型建筑物時(shí)需要抽取卡片。到達(dá)服務(wù)樓時(shí)雙方都需要支付金錢。路過(guò)銀行是能選擇存錢或者取錢。3.6.4物業(yè)玩家每次到達(dá)已經(jīng)購(gòu)買或占領(lǐng)的地皮時(shí)都可以選擇是否升級(jí),最大升級(jí)次數(shù)為四次。 已經(jīng)占領(lǐng)或購(gòu)買的地皮,玩家之間不能進(jìn)行交易。3.6.5銀行系統(tǒng)路過(guò)食堂和南門的玩家會(huì)自動(dòng)進(jìn)入銀行系統(tǒng)。銀行系統(tǒng)只提供儲(chǔ)蓄業(yè)務(wù)不提供借貸業(yè)務(wù)。在食堂和南門以外的其他地方不能進(jìn)入銀行系統(tǒng)。若是玩家在可以進(jìn)行交易時(shí)存款足夠而現(xiàn)金不夠則不允許進(jìn)行交易。3.6.6回合停留路過(guò)南門會(huì)被強(qiáng)制進(jìn)行卡片抽取,抽到消費(fèi)卡的會(huì)被強(qiáng)制消費(fèi)而抽到住宿卡

31、的會(huì)強(qiáng)制停留一回合。3.6.7勝利條件當(dāng)一方玩家的金錢少于50時(shí)或者積分少于等于0時(shí)就被宣布破產(chǎn),另一方玩家就勝利了。4 游戲設(shè)計(jì)4.1游戲結(jié)構(gòu)設(shè)計(jì)由于unity 3d中每一種邏輯和功能都是由它對(duì)應(yīng)的腳本實(shí)現(xiàn)的,每一個(gè)腳本又必須要綁定游戲中的目標(biāo)對(duì)象,當(dāng)腳本和游戲?qū)ο髷?shù)量增加的時(shí)候會(huì)很容易出現(xiàn)錯(cuò)誤,所有要求程序?qū)哟畏置鹘Y(jié)構(gòu)清晰。本游戲主要可以分為四個(gè)大的模塊,每個(gè)模塊下又能實(shí)現(xiàn)不同的功能,這樣按功能模塊的劃分來(lái)編程就能避免混亂。如圖所示。圖4-1 程序?qū)哟螆D4.2 場(chǎng)景設(shè)計(jì)所謂場(chǎng)景,就是在地圖背景上加入自定義的各種游戲?qū)ο?,?chǎng)景文件里還編輯每個(gè)對(duì)象的信息(如對(duì)象當(dāng)前的x和y坐標(biāo),對(duì)象的金錢數(shù),

32、積分值,工具等),以及對(duì)象間及邏輯關(guān)系的關(guān)卡,unity3d能自動(dòng)保存后綴為.scene的場(chǎng)景文件,而不需要另外使用場(chǎng)景編輯器編,并且能使用腳本簡(jiǎn)單的進(jìn)行場(chǎng)景組件和切換。在校園大富翁里面,我設(shè)計(jì)了5個(gè)場(chǎng)景,分別是開始場(chǎng)景,幫助場(chǎng)景,關(guān)于場(chǎng)景,角色選擇場(chǎng)景和游戲場(chǎng)景.這些場(chǎng)景會(huì)在build settings里面進(jìn)行排序,然后再腳本里面就可以進(jìn)行調(diào)用了。圖4-2 場(chǎng)景組件圖4.3界面設(shè)計(jì)界面風(fēng)格以寫實(shí)為主。主要以吉林大學(xué)珠海學(xué)院的真實(shí)照片為資源,在玩家打開游戲的第一時(shí)間就能感受到一個(gè)真實(shí)的校園風(fēng)光。如圖4-3,4-4和4-5所示圖4-3 開始界面圖4-4 關(guān)于界面圖4-5幫助界面設(shè)計(jì)圖4.4地圖設(shè)

33、計(jì)4.4.1小地圖模塊對(duì)一款有特定路線的策略游戲來(lái)說(shuō),小地圖的設(shè)計(jì)是絕對(duì)有必要的。特別是3d 游戲中為了體現(xiàn)場(chǎng)景的畫面感常常把攝像頭拉得很近,所有視野中能夠顯示的對(duì)象其實(shí)并不多。該游戲中,會(huì)運(yùn)用渲染效率比較高坐標(biāo)轉(zhuǎn)換法來(lái)制作小地圖,讓玩家通過(guò)它明確自己的位置和地圖的概況。如圖所示:圖4-5 小地圖截圖4.4.2地圖模塊該游戲的地圖主要是以吉林大學(xué)珠海學(xué)院的實(shí)景地圖為原型,地圖元素設(shè)計(jì)主要有宿舍樓,商店,飯?zhí)?,教學(xué)樓,圖書館等。由于在unity3d引擎里面制作真實(shí)度高的場(chǎng)景需要在場(chǎng)景視圖里面手動(dòng)繪制,這樣需要占用的資源和消耗的內(nèi)存相對(duì)較大。由于校園大富翁是基于吉林大學(xué)珠海學(xué)院地圖制作,而現(xiàn)有的平

34、面地圖樣本清晰明了,該游戲便采用了將地圖圖片直接貼于地形上面的方法。這樣所有需要畫刷繪制線路和建筑的消耗都被已有的地圖上的圖形代替,大大提高了效率。但是不得不說(shuō)這樣做也同樣有這樣做的弊端。圖片的分辨率不夠高使得貼在普通大小的地形上面完全無(wú)法看清。為了迎合圖片的大小只能改變地形的大小,而改變地形的大小又可謂牽一發(fā)而動(dòng)全身。默認(rèn)的地形元素比如說(shuō)樹元素,草與網(wǎng)格元素,攝像機(jī)元素的大小都是個(gè)默認(rèn)地形相匹配的,改變地方的大小就要改變游戲視圖中其他所有對(duì)象的大小。將地形縮小后為了讓場(chǎng)景不縮小采取的方法則是拉近攝像機(jī)。而這樣做的弊端則是和直接繪制地形相比失去了一些真實(shí)感。圖4-5 吉珠地圖游戲地圖對(duì)比圖4.

35、5游戲?qū)ο笤O(shè)計(jì)在unity3d里面gameobject類繼承于object類,而游戲中的對(duì)象都是gameobject類的一個(gè)實(shí)例。在校園大富翁中,房屋,骰子,人物,道具是屬性會(huì)改變的對(duì)象。每種對(duì)象在游戲開始的時(shí)候會(huì)為自己的不同屬性賦初值,隨著游戲的進(jìn)行對(duì)象的屬性值會(huì)被改寫。圖4-7 房屋屬性圖圖4-8 骰子屬性圖圖4-9 人物屬性圖圖4-10 道具屬性圖4.6按鍵控制本游戲不設(shè)鍵盤控制,所以均為鼠標(biāo)點(diǎn)擊按鈕控制。4.7數(shù)據(jù)設(shè)計(jì)所有的宿舍初始化時(shí)都是沒(méi)有歸屬者的,當(dāng)玩家到達(dá)一處初始狀態(tài)宿舍時(shí)選擇是否支付金錢進(jìn)行占領(lǐng)。當(dāng)該玩家再次到達(dá)該處宿舍時(shí)可以選擇是否進(jìn)行升級(jí),升級(jí)所需金錢=占領(lǐng)支付金錢/4*

36、第幾次升級(jí)。最多可以升級(jí)3次。當(dāng)占領(lǐng)后,對(duì)方玩家到達(dá)時(shí)支付的積分?jǐn)?shù)=占領(lǐng)所需金錢/10+占領(lǐng)所需金錢/10/4*第幾次升級(jí)。表4-1 宿舍對(duì)象屬性表續(xù)表4-14.8卡片抽取設(shè)計(jì)當(dāng)人物停留在如教學(xué)樓,飯?zhí)?,?shí)驗(yàn)樓,圖書館等大型建筑的時(shí)候,玩家會(huì)被迫抽取卡片。游戲中設(shè)計(jì)了四種卡片。卡片一:停留卡。抽取該種卡片的玩家會(huì)被迫在原地停留一次。圖4-11 停留卡卡片二:得到200現(xiàn)金卡。抽取該種卡片的玩家會(huì)得到200現(xiàn)金。圖4-12 得到10積分卡卡片三:罰款100現(xiàn)金卡。抽取該種卡片的玩家會(huì)被減去100金錢。圖4-13 扣除10積分卡卡片四:獎(jiǎng)狀卡。抽取該種卡片的玩家會(huì)被頒發(fā)獎(jiǎng)狀,不得到積分獎(jiǎng)勵(lì)。圖4-

37、14 獎(jiǎng)狀卡4.9多媒體設(shè)計(jì)多媒體是游戲中不可缺少的元素之一,校園大富翁中的多媒體主要為音頻。游戲音頻在游戲開發(fā)中占據(jù)著重要地位,優(yōu)秀的音樂(lè)和音效能提升游戲的整體效果。在unity 3d中,音頻是一個(gè)游戲組件,要想其發(fā)揮作用需要將其綁定在游戲中的某個(gè)對(duì)象上才行。在游戲進(jìn)行的過(guò)程中,玩家可以自己決定是否播放音樂(lè)并決定音樂(lè)的音量大小。4.10截屏功能現(xiàn)在,越來(lái)越多的游戲具有截屏的功能,玩家可以通過(guò)它在游戲運(yùn)行的任意時(shí)刻將當(dāng)前的場(chǎng)景像拍照一樣保存下來(lái),校園大富翁同樣提供了截屏功能。4.11網(wǎng)絡(luò)模塊基于局域客戶端和服務(wù)器來(lái)實(shí)現(xiàn)的,讓所有的玩家處于相同的網(wǎng)絡(luò)中,彼此之間需要互動(dòng),而在互動(dòng)的時(shí)候自己的游戲

38、活動(dòng)能在其他玩家的畫面里出現(xiàn),自己也同樣能看到別人的游戲活動(dòng),這就是網(wǎng)絡(luò)游戲。而局域網(wǎng)就是“小范圍”的廣域網(wǎng),這個(gè)“小范圍”在這里指的就是我們的校園網(wǎng)絡(luò)。在局域網(wǎng)里,每臺(tái)電腦的ip地址是由局域網(wǎng)內(nèi)部分配的,不同的ip地址可以重復(fù),但不會(huì)相互影響。unity 3d引擎有自帶封裝好了的局域網(wǎng)絡(luò)視圖組件,只需要在“component”里面添加網(wǎng)絡(luò)視圖組件,系統(tǒng)就能使用rpc(遠(yuǎn)程過(guò)程調(diào)用)來(lái)接收網(wǎng)絡(luò)請(qǐng)求。網(wǎng)絡(luò)的連接需要服務(wù)器和客戶端來(lái)實(shí)現(xiàn),而服務(wù)器/客戶端結(jié)構(gòu)有多種類型,本游戲我選擇“對(duì)等的服務(wù)器和客戶端”類型。這種類型多用于一些對(duì)戰(zhàn)型網(wǎng)絡(luò)游戲,這種“對(duì)等”不是完全意義上的對(duì)等,而是指在很多玩家參與

39、一個(gè)游戲的時(shí)候,其中的一個(gè)玩家既可以扮演客戶端的角色又可以扮演服務(wù)器的角色。通常情況下,創(chuàng)建游戲的玩家扮演服務(wù)器的角色。圖4-15 對(duì)等的服務(wù)器和客戶端結(jié)構(gòu)圖在這一模塊的設(shè)計(jì)中,我將大量的邏輯判斷放在服務(wù)器端進(jìn)行,這樣的好處是有效的防止了外掛,因?yàn)橥婕业囊磺羞壿嫸际欠?wù)器反饋給客戶端的,外掛無(wú)法修改服務(wù)器返回的數(shù)據(jù)。但是如果放在客戶端,外掛就很容易改變代碼。所有,客戶端只負(fù)責(zé)繪制。4.12 聊天模塊既然是網(wǎng)絡(luò)游戲,玩家語(yǔ)言的互動(dòng)是必不可少的。在游戲中設(shè)計(jì)聊天模塊能豐富游戲的趣味性。當(dāng)校園大富翁確保所有的客戶端都連接到服務(wù)器后,其中的任何一方發(fā)出的消息都能通過(guò)服務(wù)器轉(zhuǎn)發(fā)至其他客戶端。在unity

40、 3d中,同樣需要給接收請(qǐng)求腳本所綁定的對(duì)象添加網(wǎng)絡(luò)視圖。5具體實(shí)現(xiàn)5.1mvc模式mvc模式的英文全稱model-view-controller很好的解釋了這種在游戲開發(fā)中很常見(jiàn)也很實(shí)用的設(shè)計(jì)模式。它將這個(gè)游戲開發(fā)劃分為三個(gè)大的模塊:model-模型組件,view-視圖組件,controller-控制器組件。在這三大模塊中,model是view和controller之間的通訊橋梁。比如說(shuō),在控制某個(gè)游戲?qū)ο筮\(yùn)動(dòng)的時(shí)候,系統(tǒng)會(huì)先捕捉到控制器的鼠標(biāo)或者鍵盤事件,然后再將具體的操作信息發(fā)送給model。model會(huì)經(jīng)過(guò)一系列的邏輯計(jì)算,將游戲?qū)ο筮\(yùn)動(dòng)后的位置或其他相關(guān)的信息傳遞給view。最后,v

41、iew接收到消息并在屏幕中顯示出游戲?qū)ο筮\(yùn)動(dòng)后的形象。unity3d引擎已經(jīng)將腳本轉(zhuǎn)化成mvc模式,同時(shí)進(jìn)行了細(xì)致的劃分。ongui(),update(),lateupdate(),fixedupdate()這四個(gè)方法是在unity腳本編程中最常見(jiàn)的方法,他們具備模塊化了。在view模塊我們可以看到ongui()方法負(fù)責(zé)ui繪制。model模塊中負(fù)責(zé)邏輯更新的則是lateupdate(),fixedupdate()和update()。而controller模塊自然就是鼠標(biāo),鍵盤等控制器的事件了。5.2游戲中的有限狀態(tài)機(jī)有限狀態(tài)機(jī)在很多領(lǐng)域都有很重要的應(yīng)用,例如計(jì)算機(jī)科學(xué),電子工程,數(shù)學(xué),生物學(xué)

42、等,在計(jì)算機(jī)科學(xué)的主要應(yīng)用又包括軟件工程,人工智能,電路設(shè)計(jì),建模應(yīng)用,網(wǎng)絡(luò)協(xié)議等。剽竊文字表述1.英文“three dimensions”的簡(jiǎn)稱,中文是指三維、三個(gè)維度、三個(gè)坐標(biāo),即有長(zhǎng)寬、高。今天的3d,主要特指是基于電腦和互聯(lián)網(wǎng)的數(shù)字化的三維立體技術(shù),也就是三維數(shù)字化,包括3d軟件技術(shù)和硬件技術(shù)。2.游戲。3d類型的游戲有很多,比如捕魚達(dá)人,游戲場(chǎng)景采用3d制作,各種魚類游動(dòng)姿態(tài)自然,炮彈打擊粒子效果華麗,打擊感強(qiáng)烈。伴隨互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)絡(luò)游戲3.unity3d是由unity technologies開發(fā)的一個(gè)輕松創(chuàng)建諸如三維視頻游戲、建筑可視化、實(shí)時(shí)三維動(dòng)畫等類型互動(dòng)內(nèi)容的多平臺(tái)的

43、綜合型游戲開發(fā)工具,是一個(gè)全面整合的專業(yè)游戲引擎。unity3d類似于director,blender game engine, virtools 或 torque game builder等利用交互的圖型化開發(fā)環(huán)境為首要方式的軟件其編輯器運(yùn)行在windows 和mac os x下,可發(fā)布游戲至windows、mac、wii、iphone和android平臺(tái)。4.平臺(tái)開發(fā)無(wú)疑為開發(fā)者節(jié)省了大量時(shí)間。平臺(tái)之間的差異會(huì)直接影響到開發(fā)進(jìn)度,開發(fā)者在開發(fā)時(shí)必須考慮到屏幕尺寸、5.而將大量時(shí)間浪費(fèi)在平臺(tái)轉(zhuǎn)換上并不值得。unity 3d幾乎為開發(fā)者解決了這一難題,6.photoshop adobe pho

44、toshop,簡(jiǎn)稱“ps”,是一個(gè)由adobe systems開發(fā)和發(fā)行的圖像處理軟件。photoshop主要處理以像素所構(gòu)成的數(shù)字圖像。使用其眾多的編修與繪圖工具,可以更有效的進(jìn)行圖片編輯工作?;?d局域網(wǎng)的校園大富翁游戲 _第2部分總文字復(fù)制比:0%(0)總字?jǐn)?shù):12497有限狀態(tài)機(jī)在游戲開發(fā)中的運(yùn)用通俗地講就是由有限多的狀態(tài)組成的一種機(jī)制。這種機(jī)制的特點(diǎn)時(shí)它有兩種狀態(tài),即開的狀態(tài)和關(guān)的狀態(tài)。每一個(gè)有限狀態(tài)機(jī)都應(yīng)該有一個(gè)輸入變量,這個(gè)變量可以決定不同狀態(tài)之間的狀態(tài)轉(zhuǎn)換。而本游戲的設(shè)計(jì)過(guò)程中用到的游戲狀態(tài)機(jī),主要是用于游戲的流程控制和場(chǎng)景切換。由于狀態(tài)機(jī)的使用,游戲被模塊化為很多不同的游戲

45、狀態(tài),在腳本中定義一個(gè)變量來(lái)記錄當(dāng)前的狀態(tài),這樣游戲邏輯就可以根據(jù)當(dāng)前的游戲狀態(tài)來(lái)執(zhí)行各自的任務(wù)。值得說(shuō)明的一點(diǎn)是,這個(gè)控制“輸入”的變量是凌駕于mvc模式之上的,所以在各個(gè)循環(huán)中都可以判斷當(dāng)前的游戲狀態(tài)。通常我們用while語(yǔ)句或switch語(yǔ)句來(lái)實(shí)現(xiàn)游戲狀態(tài)機(jī)。例如public class script : monobehavior/游戲狀態(tài)常量定義:st_main_menu / 主菜單狀態(tài)st_game_run / 游戲運(yùn)新?tīng)顟B(tài)st_game_over / 游戲結(jié)束狀態(tài)st_exit / 游戲退出st_help / 游戲幫助st_about / 游戲關(guān)于.private int game

46、state;/記錄當(dāng)前的游戲狀態(tài)gamestate=st_main_menu;/初始化游戲狀態(tài)switch (gamestate)/根據(jù)狀態(tài)機(jī)來(lái)更新游戲邏輯case st_main_menu:break;case st_game_run:break;case st_game_over:break;. .5.3插件的使用5.3.1nguiunity 3d游戲引擎雖然能方便的向場(chǎng)景里拖放模型但是卻不能拖動(dòng)控件,盡管unity自己封裝了gui用于編輯程序的ui,但實(shí)際運(yùn)行時(shí)ongui()它的運(yùn)行效率是比較低的且沒(méi)有draw calls的合并。同時(shí)unity支持所有的.ttf的字符集,在遇到比較崇尚張

47、揚(yáng)個(gè)性的游戲時(shí),這個(gè)系統(tǒng)默認(rèn)的字體就不會(huì)被開發(fā)者青睞了。所以,ngui現(xiàn)在成為了u3d開發(fā)中的一款非常流行的插件。在和其他同類的插件相比,它的優(yōu)勢(shì)就是會(huì)隨著unity 3d的更新同步更新。他的架構(gòu)設(shè)計(jì)的很好,通過(guò)一個(gè)uicamera腳本來(lái)分發(fā)手指,鼠標(biāo)和鍵盤的事件,發(fā)送給帶有碰撞體物體的腳本中進(jìn)行回調(diào)巧妙的運(yùn)用了unity 3d的批處理策略,合并用到的貼圖到一張大的貼圖中,然后分uv進(jìn)行繪制。這使得ngui對(duì)ui合成圖(atlas)管理方便,支持圖像高低清配置。也能支持字體rgb壓縮,多語(yǔ)言。對(duì)draw calls有大幅度的優(yōu)化。所以在校園大富翁的ui上,我使用了ngui,draw calls

48、的合并使運(yùn)行效率大大提升。但是有一點(diǎn)就是,使用ngui會(huì)使內(nèi)存變的非常大,我們?cè)诰幊痰臅r(shí)候需要仔細(xì)的設(shè)計(jì)在需要的地方使用它,如果處處都使用它反而會(huì)增加內(nèi)存消耗。所以在該程序的網(wǎng)絡(luò)連接腳本connect腳本里面,我選擇采用自帶ui來(lái)實(shí)現(xiàn),因?yàn)檫@個(gè)腳本在后臺(tái)實(shí)現(xiàn),沒(méi)有大量的繪制,所以自帶ui能節(jié)省內(nèi)存空間。5.3.2 itween如果說(shuō)ngui是一個(gè)強(qiáng)大的ui插件,itween就是一個(gè)更加強(qiáng)大的動(dòng)畫庫(kù)用它可以輕松實(shí)現(xiàn)各種動(dòng)畫,晃動(dòng),旋轉(zhuǎn),移動(dòng),褪色,上色,控制音頻等等。itween的核心是數(shù)值插值,簡(jiǎn)單說(shuō)就是給itween開始值和結(jié)束值,它會(huì)自動(dòng)生成一些中間值,這就使得按路徑移動(dòng)和路徑編輯變得容易

49、實(shí)現(xiàn)。5.4優(yōu)化drawcall在屏幕上渲染物體,引擎需要發(fā)出一個(gè)drawcall來(lái)訪問(wèn)圖形api。每個(gè)繪制調(diào)用需要進(jìn)行大量的工作來(lái)訪問(wèn)圖形api,從而導(dǎo)致了cpu方面顯著的性能開銷。通俗地解釋就是在游戲中會(huì)用一個(gè)特別的包來(lái)放每一個(gè)被展示的獨(dú)立部分,這就是我們所說(shuō)的“描繪指令”(draw call),然后這個(gè)包傳遞到3d部分在屏幕上呈現(xiàn)出來(lái)。這就和你希望你的親友收到準(zhǔn)備好的生日禮物需要包裝好然后通過(guò)快遞準(zhǔn)時(shí)放在他應(yīng)該出現(xiàn)的地方一樣。你的cpu來(lái)完成包裝和傳遞他們的活,同時(shí)會(huì)消耗很多的帶寬,所以最終分配好這些關(guān)鍵性資源很重要。很顯然,drawcall的值越小,游戲的性能就會(huì)越好,如何減少游戲中的

50、描繪指令就顯得很關(guān)鍵。減小游戲中的描繪指令有很多種方法,為了防止計(jì)算機(jī)把場(chǎng)景中是否出現(xiàn)在鏡頭中的物體全部都進(jìn)行渲染,我們就得告訴它只渲染看得見(jiàn)的,這種技術(shù)叫作視錐體剔除(frustum culling),同時(shí),根據(jù)我們?nèi)粘I畹慕?jīng)驗(yàn)可以知道,遠(yuǎn)處的景物我們只能看到一個(gè)大概,但是近處的物體我們能看到上面細(xì)微的紋理,這同樣可以運(yùn)用在游戲渲染中。離鏡頭比較遠(yuǎn)的物體我們讓計(jì)算機(jī)渲染較少的面片,當(dāng)物體離鏡頭近的時(shí)候讓計(jì)算機(jī)渲染較多的面片。這兩種技術(shù)在現(xiàn)代的游戲編程中十分的常見(jiàn),所有unity3d引擎已經(jīng)自帶了這兩種功能。每個(gè)物體的一個(gè)不同的材質(zhì)都會(huì)引起一個(gè)單獨(dú)的drawcall調(diào)用。每一次drawcal

51、l都會(huì)引起引擎的一次額外開銷。在制作這款游戲的初期,我按照盡可能真實(shí)的標(biāo)準(zhǔn)制作了校園里建筑的模型,如圖所示。這些模型有的用maya制作有的用3dmax制作,單獨(dú)渲染的效果都特別的好。但是當(dāng)它們導(dǎo)入游戲場(chǎng)景的時(shí)候卻會(huì)花費(fèi)大量的時(shí)間和消耗去渲染,增加了程序的負(fù)擔(dān),甚至讓程序卡死運(yùn)行不起來(lái)。這里又涉及到一個(gè)游戲開發(fā)時(shí)非常重要的問(wèn)題建立一套輕量化建模的方法。在大型的游戲公司美術(shù)都很注重這一點(diǎn)的,盡量都會(huì)最優(yōu)化模型。不同的材質(zhì)應(yīng)盡量少的使用,合并網(wǎng)格, 刪除冗雜的面,合并一些紋理 ,使用盡可能少的貼圖和低分辨率的貼圖等都能優(yōu)化模型。所以最后,我放棄了原來(lái)看似精美的模型,改為了面片,網(wǎng)格和材質(zhì)都十分簡(jiǎn)單的

52、模型。除了這種靜態(tài)的通過(guò)優(yōu)化模型來(lái)減少程序中的描繪指令,我還采取了一種動(dòng)態(tài)合并網(wǎng)格的方法。腳本combinemeshes.cs能夠在游戲運(yùn)行后動(dòng)態(tài)的把一些分離的網(wǎng)格合并為一個(gè)網(wǎng)格,優(yōu)化網(wǎng)格數(shù)量而達(dá)到減少了drawcall的目的。核心代碼如下:public class combinemeshes : monobehaviour void start() meshfilter meshfilters = getcomponentsinchildren();/meshfilter使用這個(gè)作為一個(gè)程序的網(wǎng)格接口/getcomponentsinchildren獲取子物體組件列表combineinstan

53、cecombine= new combineinstancemeshfilters.length;如果mergesubmeshes為true,所有的網(wǎng)格會(huì)被結(jié)合成一個(gè)單個(gè)子網(wǎng)格。否則每一個(gè)網(wǎng)格都將變成單個(gè)不同的子網(wǎng)格。如果所有的網(wǎng)格共享同一種材質(zhì),設(shè)定它為真。如果usematrices為false,在combineinstance結(jié)構(gòu)中的變換矩陣將被忽略。int i = 0;while (i meshfilters.length) combinei.mesh = meshfiltersi.sharedmesh;combinei.transform= eshfiltersi.transform.

54、localtoworldmatrix;meshfiltersi.gameobject.active = false;/標(biāo)識(shí)游戲物體是否是活動(dòng)的i+;transform.getcomponent().mesh = new mesh();transform.getcomponent().mesh.combinemeshes(combine);transform.gameobject.active = true;圖5-1 校園建筑模型圖5.5游戲中角色選擇在進(jìn)入游戲后,選擇角色場(chǎng)景會(huì)提供不同角色供玩家選擇。unity3d支持.fbx格式的人物模型,但是為了在場(chǎng)景中有人物行走的真實(shí)感,人物模型在制作的

55、時(shí)候需要綁定骨骼動(dòng)畫。這又涉及到繪制指令的問(wèn)題。人物模型的骨骼數(shù)量和動(dòng)畫幀數(shù)以及模型的貼圖和材質(zhì)都會(huì)影響繪制指令的數(shù)量,這里我就準(zhǔn)備了3個(gè)人物模型。如圖。在選擇角色后,玩家可以給自己取用戶名,由于是網(wǎng)絡(luò)游戲的原因,我對(duì)于命名重復(fù)和選擇重復(fù)的問(wèn)題沒(méi)有刻意避免,因?yàn)樵趎etworkview類中有一個(gè)叫做成員viewid,在網(wǎng)絡(luò)連接中是唯一的,所以程序會(huì)清楚的識(shí)別出兩個(gè)玩家。當(dāng)場(chǎng)景中的玩家對(duì)象只有一個(gè)的時(shí)候我們能采用直接把游戲?qū)ο竽_本拖動(dòng)到游戲?qū)ο笊系姆椒ń壎_本。當(dāng)場(chǎng)景中有多個(gè)玩家對(duì)象選擇是我們需要?jiǎng)討B(tài)的為選中的游戲?qū)ο筇砑幽_本。調(diào)用addcomponent()方法就可以。核心代碼如下:var obj:gameobject;obj=gameobject.find(“游戲?qū)ο蟮拿Q”);/獲取游戲?qū)ο骾f(obj);obj.addcomponent(“腳本的名字”);/添加腳本用戶名的輸入采用了text

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論