亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        高云鵬 黃海明

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

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

        中圖分類(lèi)號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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

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

        1 游戲整體設(shè)計(jì)

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

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

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

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

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

        最終,本游戲系統(tǒng)設(shè)計(jì)了高效的資源管理模塊、靈活的魚(yú)動(dòng)畫(huà)系統(tǒng)模塊、高效簡(jiǎn)約的碰撞檢測(cè)模塊、特效模塊并采取手段提升了游戲系統(tǒng)的可靠性。

        2 功能設(shè)計(jì)與優(yōu)化

        2.1 圖片資源設(shè)計(jì)與優(yōu)化

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

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

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

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

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

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

        游戲中的魚(yú)的姿態(tài)動(dòng)作是通過(guò)制作序列幀圖片來(lái)實(shí)現(xiàn)的。對(duì)于魚(yú)A的普通游動(dòng),需要序列幀圖1a;對(duì)于魚(yú)B的普通游動(dòng),需要序列幀圖1b。

        圓盤(pán)魚(yú)是那些帶自旋轉(zhuǎn)圓盤(pán)底座的魚(yú)的總稱,是游戲中的一種表現(xiàn)。圓盤(pán)魚(yú)與普通魚(yú)一樣,也是通過(guò)制作其序列幀圖片來(lái)滿足游戲?qū)ο髣?dòng)畫(huà)的需要。

        圓盤(pán)魚(yú)A、圓盤(pán)魚(yú)B游動(dòng)動(dòng)畫(huà)所需要的序列幀圖片如圖2:

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

        2.2 魚(yú)動(dòng)畫(huà)系統(tǒng)的設(shè)計(jì)與優(yōu)化

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

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

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

        2.2.2 運(yùn)動(dòng)路徑控制

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

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

        3 //魚(yú)的種類(lèi):此路徑適合于哪種魚(yú)

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

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

        //控制點(diǎn)序列

        //一個(gè)節(jié)點(diǎn)

        -200 //基礎(chǔ)路徑點(diǎn)坐標(biāo)

        -174

        -331 //與基礎(chǔ)路徑點(diǎn)對(duì)應(yīng)的第一個(gè)控制點(diǎn)

        -314

        -66 //與基礎(chǔ)路徑點(diǎn)對(duì)應(yīng)的第二個(gè)控制點(diǎn)

        -35

        803

        604

        408

        335

        1200

        874

        1791

        1053

        1562

        741

        2022

        1365

        1) 在預(yù)處理階段,進(jìn)行特效編輯,保存成特效文件;

        2) 游戲初始化時(shí)載入特效文件生成特效對(duì)象;

        3) 在游戲邏輯過(guò)程中需要的時(shí)候,在指定的地點(diǎn)激發(fā)特效對(duì)象。

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

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

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

        3 結(jié)束語(yǔ)

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

        參考文獻(xiàn):

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

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

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

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

        [5] 李博.游戲人工智能關(guān)鍵技術(shù)的研究[D].上海:上海交通大學(xué),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] 王志強(qiáng),洪嘉振,楊輝.碰撞檢測(cè)問(wèn)題研究綜述[J].軟件學(xué)報(bào),1999,10(5):545-551.

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

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

        猜你喜歡
        粒子系統(tǒng)游動(dòng)資源量
        永不停歇的魚(yú)
        江埡庫(kù)區(qū)魚(yú)類(lèi)群落組成和資源量評(píng)估
        球軸承用浪型保持架徑向游動(dòng)量的測(cè)量
        哈爾濱軸承(2021年1期)2021-07-21 05:43:16
        利用GPU加速的粒子系統(tǒng)全球流場(chǎng)可視化系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
        鈾礦數(shù)字勘查資源量估算方法應(yīng)用與驗(yàn)證
        把手放進(jìn)袋子里
        塞拉利昂通戈金剛石礦資源量上升
        UE 4粒子系統(tǒng)與外部數(shù)據(jù)通信研究
        父親
        我國(guó)頁(yè)巖氣可采資源量初步估計(jì)為31萬(wàn)億m3
        少妇久久久久久人妻无码| 精品国产你懂的在线观看| 亚洲视频精品一区二区三区| 亚洲av三级黄色在线观看| 亚洲av乱码一区二区三区按摩| 欧美激情a∨在线视频播放| 中文字幕avdvd| 97中文乱码字幕在线| 中国杭州少妇xxxx做受| 一个人看的视频www免费| 久久久久久人妻无码| 日本爽快片18禁免费看| 女人体免费一区二区| 久久精品国产亚洲av一| 日本不卡高字幕在线2019| 成人免费看片又大又黄| a级福利毛片| 在线免费观看毛视频亚洲精品 | 人妻无码中文字幕免费视频蜜桃| 国产激情久久久久久熟女老人| 国产一区二区三区亚洲| 在线观看成人无码中文av天堂| 乱子真实露脸刺激对白| 久久久亚洲精品一区二区| 97成人精品视频在线| 午夜性无码专区| 2021年国产精品每日更新| 国产一区二区在线观看av| 国产精品国产亚洲精品看不卡| 国产精品无码一区二区三区免费| 国产精品亚洲ΑV天堂无码| 精品少妇人妻av一区二区蜜桃| 草草地址线路①屁屁影院成人| 欧美性群另类交| 国产三级国产精品国产专区| 亚洲最大水蜜桃在线观看| 又污又爽又黄的网站| 欧美zozo另类人禽交| 在线免费观看蜜桃视频| 亚洲综合激情五月丁香六月| 无码之国产精品网址蜜芽|