国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

捕魚游戲開發(fā)及其若干優(yōu)化技術(shù)的研究

2014-10-20 22:49:11高云鵬黃海明
電腦知識與技術(shù) 2014年25期
關(guān)鍵詞:粒子系統(tǒng)游動資源量

高云鵬 黃海明

摘要:游戲開發(fā)過程中涉及很多關(guān)鍵技術(shù),好的技術(shù)應用可以為復雜功能和卓越性能提供保障。該文以一款具體的捕魚游戲設計為例,分析了游戲中的各種功能實現(xiàn)及優(yōu)化技術(shù),包括資源優(yōu)化技術(shù)、壓縮加密技術(shù)、碰撞檢測技術(shù)、繪制優(yōu)化策略、粒子系統(tǒng)、基于自由路徑的魚群算法、基于編輯器的路徑生成技術(shù)等。通過運用這些技術(shù),得到了較好的游戲結(jié)果。

關(guān)鍵詞: 2D引擎; 資源優(yōu)化; 路徑編輯; 碰撞檢測; 粒子系統(tǒng)

中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2014)25-5877-06

The Research on Fishing Game Development and Optimization Technology

GAO Yun-peng1,HUANG Hai-ming2,3

(1.School of Computer Science and Technology , University of Science and Technology of China (USTC), Hefei 230026, China; 2. Institute of Automation, Chinese Academy of Sciences, Beijing 100080,China;3. China Lottery Online Co., LTD., Beijing 100011, China)

Abstract: Game development involves lots of key technologies, appropriate use of technologies can support realization of complex functions and perfect performance. This paper takes the design of fishing game for instance, analyzes the methods for realizing functions and technology for optimization including resource optimization, compress and encryption, collision detect, render optimization, particle system, fish group algorithm based on free path, path generation based on editor etc. Through the use of the above technologies, the game result is good.

Key words:2D engine; resource optimization; path editor; collision detect; particle system

近幾年,捕魚達人游戲的面世,引發(fā)了全民捕魚的狂潮。人們?yōu)槠渲行路f的玩法設計,豐富而流暢的界面表現(xiàn),極強的趣味性而深深吸引。目前捕魚類游戲已經(jīng)從手機游戲擴展到了網(wǎng)頁游戲,街機游戲甚至端游領域。該文將以街機版捕魚游戲開發(fā)為例,圍繞系統(tǒng)架構(gòu),軟硬件及算法等各方面進行闡述。

1 游戲整體設計

在游戲系統(tǒng)設計中,首先要進行架構(gòu)設計,以滿足功能、保密性、高效性為目標,同時兼顧成本因數(shù)[1-3]。

在基礎硬件上,考慮成本,選擇了業(yè)內(nèi)流行的微特邁工業(yè)主機。在這種主機上可以安裝各種操作系統(tǒng)包括xp、winCE、Linux等等,所以不會對后續(xù)的技術(shù)選型造成太大的影響。

在游戲正式開發(fā)前,游戲引擎的選擇至關(guān)重要[4]。由于這里要開發(fā)的是2D游戲,所以可以在如下這幾種2D引擎中選擇,例如HGE、SDL、COCOS2D等等??紤]到開發(fā)團隊的知識結(jié)構(gòu),并考慮到在Windows下開發(fā)調(diào)試比較便利,且winxp精簡版消耗的內(nèi)存較小,也適合于在工業(yè)主機上安裝運行,所以最終我們選擇了適合于windows操作系統(tǒng)的HGE引擎。在VS2008 IDE中進行編程調(diào)試,最終在發(fā)布成xp版本。

由于要支持游戲?qū)S面I板輸入,包括按鍵、搖桿、投幣器等等,所以需要設計一塊IO控制板,將所有的輸入信號進行收集,最終形成約定格式的報文,通過串口上傳給上位機。

由于要進行圖片資源保護,本游戲系統(tǒng)還需要設計一塊加密板,用來存放游戲用到的圖片資源。加密板上的資源數(shù)據(jù)塊可以通過特定的指令從加密板讀出到主機內(nèi)存中,并通過加解密,完成資源的應用。

最終,本游戲系統(tǒng)設計了高效的資源管理模塊、靈活的魚動畫系統(tǒng)模塊、高效簡約的碰撞檢測模塊、特效模塊并采取手段提升了游戲系統(tǒng)的可靠性。

2 功能設計與優(yōu)化

2.1 圖片資源設計與優(yōu)化

在游戲中會用到很多資源圖片,圖片越多,加載越慢,且磁盤及內(nèi)存占用的代價越高。合理的技術(shù)應用以及合理的資源劃分可以在滿足游戲邏輯需求的同時,大大降低圖片資源量,從而達到節(jié)約磁盤及內(nèi)存空間,并縮短加載時間的目的。

2.1.1 使用合理的游戲邏輯技巧減少資源量

氣球魚是游戲中的一個特殊魚種,這種魚在被炮彈擊中一下就會膨脹一下,不斷擊中就會不斷膨脹變大(直到達到膨脹上限)。這里有一種通用做法是,根據(jù)該魚的不同大小由美術(shù)制作對應大小的圖,全部放入游戲資源中,程序在不同的時候調(diào)用對應大小的圖片來生成精靈對象并進行繪制。顯然,這種方法可以生成很精美的氣球魚對象,但是資源量很大。為此本游戲采用了一種優(yōu)化方法,就是對于氣球魚,美術(shù)只需要制作出一張圖,由程序根據(jù)邏輯情況來決定要給這個對象縮放多少倍,這樣就大大降低了資源量。但是其弊端在于由于要進行運行時縮放,需要額外的計算量,而且由于要進行縮放,會導致最終的游戲?qū)ο罂雌饋聿蝗缤ㄓ米龇敲淳?。為此,本游戲系統(tǒng)根據(jù)大家的可接受情況,加入了一些中間級別大小的圖片,在運行時根據(jù)需要縮放的倍率來選擇與之最接近的那個大小級別的圖片,并在此基礎上進行縮放,從而提升了精度。最終這種方法在運行效率、顯示精度和資源量之間做了較好的平衡。同樣的策略還被應用于食人魚等體積可變的對象上。

2.1.2 使用實時特效粒子系統(tǒng)降低資源量

海底氣泡被大量應用于海底場景的不同位置。如果采用圖片序列的方法來實現(xiàn),則需要做很多套序列圖(顯然做一套是不合適的,因為這樣會使得每個氣泡點效果都雷同),會占用大量空間。因此,在實際對于海底氣泡的實現(xiàn)中,我們采用了粒子系統(tǒng)。通過預先在粒子編輯器中編輯好對應的氣泡粒子效果,保存成為粒子特效文件;然后在程序中利用粒子系統(tǒng)引擎API進行調(diào)用,在游戲初始化時載入這些特效文件,然后在游戲運行過程中在指定位置激發(fā),就實現(xiàn)了海底冒氣泡的效果。這種方法所形成的資源量極低,且每次播放的效果都不同,沒有雷同感。同樣,在很多其他的場合例如全屏炸彈爆炸等等,都采用這種粒子系統(tǒng)技術(shù)來實現(xiàn),大大降低游戲資源量,同時也減小了因大圖片而導致的渲染壓力。

2.1.3 對游戲?qū)ο筮M行合理劃分降低資源量

游戲中的魚的姿態(tài)動作是通過制作序列幀圖片來實現(xiàn)的。對于魚A的普通游動,需要序列幀圖1a;對于魚B的普通游動,需要序列幀圖1b。

圓盤魚是那些帶自旋轉(zhuǎn)圓盤底座的魚的總稱,是游戲中的一種表現(xiàn)。圓盤魚與普通魚一樣,也是通過制作其序列幀圖片來滿足游戲?qū)ο髣赢嫷男枰?/p>

圓盤魚A、圓盤魚B游動動畫所需要的序列幀圖片如圖2:

因此如果有N種魚及其對應的圓盤魚,則需要2N套序列幀圖片。顯然魚A與圓盤魚A這兩套游動序列幀圖有很多相同之處,基于此,我們對圓盤魚A進行了如下分解:魚A游動+圓盤底座自轉(zhuǎn),分解示意圖如圖3。其中魚A游動就用序列幀圖1a,圓盤底座自轉(zhuǎn)就只需要一張圓盤底座圖,然后由程序來控制其自轉(zhuǎn)。在游戲中通過數(shù)據(jù)結(jié)構(gòu)將兩者的位置綁定在一起,最終實現(xiàn)了圓盤魚。最終的表現(xiàn)與原始方案一致,但是其資源量變成了N套序列幀圖片+1張靜態(tài)圖片,內(nèi)存占用小了很多。

2.2 魚動畫系統(tǒng)的設計與優(yōu)化

游戲中需要各種各樣的魚在場景中游動,魚動畫系統(tǒng)分為魚的自身姿態(tài)動作和魚的運動路徑控制兩部分。

2.2.1 自身姿態(tài)動作

本游戲中魚的姿態(tài)動畫都是基于序列幀圖來實現(xiàn)的,正如上一節(jié)圖1a、1b所示。通過美術(shù)制作出游動、被擊斃、擊中反應等序列幀圖來實現(xiàn)其游動動作、擊斃動作和擊中反應動作等,最終通過hge序列幀動畫對象的更新來實現(xiàn)。

2.2.2 運動路徑控制

魚的運動路徑控制所需的游動路徑可以由程序?qū)崟r生成。也就是說通過算法計算魚在下一時刻的位置和朝向就可以使魚一直游下去。但是顯然這種方法無法生成比較漂亮的路徑,且實時計算會消耗較多的CPU資源,并很難保證魚的運動區(qū)域的均衡性。因此,本游戲系統(tǒng)采用了一種基于“路徑編輯器+路徑讀取綁定”的魚運動策略。首先人工編輯生成多條路徑信息存放在文件中(簡稱路徑文件),然后再將某一條路徑綁定到魚上,這樣魚就可以按照路徑文件中的信息來進行位置更新達到運動目的。這種方法的好處在于可以由美術(shù)人員來進行路徑設計,生成比較漂亮的路徑,且可以使所有的路徑在整個場景空間中分布比較均衡。其弊端在于需要生成路徑文件,從而占用一定磁盤及內(nèi)存空間。

路徑文件是文本文件,其形式可以設計成很多種,最直接的方法是將各幀的路徑點的位置和朝向都記錄下來,保存在文件中,但是這樣會導致路徑文件過于龐大,空間消耗代價太大。為此,本游戲系統(tǒng)設計并實現(xiàn)了一種基于貝塞爾曲線(Bezier)的路徑生成方法:通過預先設定Bezier曲線控制點,通過插值公式可以生成路徑上的所有路徑點的位置和朝向。從而使得在路徑文件中,只需要記錄各路徑的曲線控制點,在加載時再插值生成其他的路徑點,在實際運行時根據(jù)當前時刻取出對應的路徑點位置和朝向。這樣使得最終路徑文件很小,只需要極低的磁盤內(nèi)存空間。最終我們設計的路徑文件如下(這是其中的一條路徑的描述):

3 //魚的種類:此路徑適合于哪種魚

31869 //此路徑主要在那些炮位附近

552 //此路徑總共更新多少幀才結(jié)束24 //每秒鐘更新多少次

//控制點序列

//一個節(jié)點

-200 //基礎路徑點坐標

-174

-331 //與基礎路徑點對應的第一個控制點

-314

-66 //與基礎路徑點對應的第二個控制點

-35

803

604

408

335

1200

874

1791

1053

1562

741

2022

1365

1) 在預處理階段,進行特效編輯,保存成特效文件;

2) 游戲初始化時載入特效文件生成特效對象;

3) 在游戲邏輯過程中需要的時候,在指定的地點激發(fā)特效對象。

2.5 其他優(yōu)化技巧

在游戲繪制過程中,對那些真實屏幕之外的魚的繪制毫無意義,而且會增加顯卡負擔,因此在遍歷魚隊列進行繪制前,需要先判斷魚的狀態(tài),只有那些在屏幕內(nèi)可見的魚才真正調(diào)用繪制函數(shù)。這樣提高了本游戲的渲染效率。

另外,游戲中采用了多線程來進行優(yōu)化。例如在場景切換瞬間因為要加載大量圖片數(shù)據(jù)而會導致CPU負載太大,出現(xiàn)1秒左右的卡頓,我們將待切換場景圖片、海浪圖片的加載提前到場景切換的時間點之前,并用專門的線程來完成,避免了卡頓現(xiàn)象。另外在多人同時發(fā)炮時,需要同時播放多個發(fā)炮音效,如果都放在主進程中,會導致主邏輯循環(huán)在發(fā)炮瞬間降到10fps以下。為此,最終游戲中是將聲音的播放都放在一個播放線程中,解決了由于聲音播放負荷過大而導致的游戲畫面表現(xiàn)卡頓現(xiàn)象。

3 結(jié)束語

最終,我們按照上述開發(fā)方法和技巧完成了整個游戲系統(tǒng)的開發(fā),并發(fā)布在工業(yè)主機上運行,如下是游戲截圖(圖8) 。在將屏幕上的空炮彈數(shù)限定在100發(fā)以內(nèi)的情況下,當屏幕上魚數(shù)達到80,且在屏幕上同時播放8個粒子特效的情況下,幀率也可以達到60fps以上,畫面流暢,整體效果良好。

參考文獻:

[1] 趙大偉,肖周芳,張艷.淺談2D游戲的一些技術(shù)方法[J].科技信息,2008(30):81-82.

[2] 高凌琴,陳青華.俄羅斯方塊游戲關(guān)鍵技術(shù)探討[J].信息技術(shù)與信息化,2008(2):69-71.

[3] 鄭勇,劉乃琦.BREW手機賽車游戲若干技術(shù)難點及實現(xiàn)[J].成都信息工程學院學報,2006(2).

[4] 黃藍梟.游戲引擎中特效的實時渲染技術(shù)研究[D].成都:電子科技大學,2008.

[5] 李博.游戲人工智能關(guān)鍵技術(shù)的研究[D].上海:上海交通大學,2011.

[6] Van den Bergen G.Efficient collision detection of complex deformable models using AABB trees[J].Journal of Graphic Tools,1997,2(4):1-13.

[7] 王志強,洪嘉振,楊輝.碰撞檢測問題研究綜述[J].軟件學報,1999,10(5):545-551.

[8] 張帆,潘瑞芳,葉福軍,等.視頻游戲中碰撞檢測算法的選擇[J].電腦知識與技術(shù),2011,7(13):3136-3137.

[9] 陳學文,丑武勝,劉靜華,等.基于包圍盒的碰撞檢測算法研究[J].計算機工程與應用,2005,41(5):46-50.

猜你喜歡
粒子系統(tǒng)游動資源量
永不停歇的魚
江埡庫區(qū)魚類群落組成和資源量評估
球軸承用浪型保持架徑向游動量的測量
哈爾濱軸承(2021年1期)2021-07-21 05:43:16
利用GPU加速的粒子系統(tǒng)全球流場可視化系統(tǒng)設計與實現(xiàn)
鈾礦數(shù)字勘查資源量估算方法應用與驗證
把手放進袋子里
小學科學(2020年11期)2020-03-04 11:39:00
塞拉利昂通戈金剛石礦資源量上升
UE 4粒子系統(tǒng)與外部數(shù)據(jù)通信研究
父親
天津詩人(2014年4期)2014-11-14 19:05:52
我國頁巖氣可采資源量初步估計為31萬億m3
宁强县| 乌拉特中旗| 哈密市| 依兰县| 五常市| 甘谷县| 泾源县| 崇州市| 汪清县| 彭山县| 昌乐县| 山西省| 南澳县| 丹凤县| 盐城市| 临武县| 西和县| 尚志市| 兴安县| 荥经县| 察隅县| 新竹市| 古交市| 巴马| 凤庆县| 陇西县| 油尖旺区| 通道| 台安县| 黑山县| 托克逊县| 满洲里市| 大安市| 祁连县| 苗栗县| 宾阳县| 宝清县| 项城市| 天全县| 水城县| 彭水|