馬 棟 邱 燁 王悅平 郭江林
[摘要]通過C++和directx實(shí)解現(xiàn)了泡泡堂游戲,并對泡泡堂游戲的技術(shù)進(jìn)行簡單扼要的分析。主要對簡述泡泡堂游戲中的主要技術(shù)難題進(jìn)行總結(jié),并提出解決這些問題的方式和途徑。通過分析,對泡泡堂這類游戲中用到的主要技術(shù)進(jìn)行很好的分析解釋,對以后的開發(fā)者有很重要的指導(dǎo)作用。
[關(guān)鍵詞]泡泡堂c++directx碰撞檢測爆炸實(shí)現(xiàn)
中圖分類號:TP3文獻(xiàn)標(biāo)識碼:A文章編號:1671—7597(2009)1020086--01
一、引言
由韓國開發(fā)的《泡泡堂》游戲曾經(jīng)在中國盛行一時,它以簡單趣味征服玩家。有專家將玩家區(qū)分為臨時玩家、中間玩家和忠實(shí)玩家三類。而《泡泡堂》的服務(wù)對象大部分都是臨時玩家。對于這一概念的定義為:年齡層從10歲到20歲甚至35歲左右,每天平均游戲時間約為2小時,希望選擇可以即刻得到結(jié)果、界面簡潔的游戲。臨時玩家是互聯(lián)網(wǎng)娛樂初級階段的玩家層,對數(shù)字娛樂有一定渴望,對上手較難的游戲有畏懼感。他們比忠實(shí)玩家要更廣泛,而且還是最有開發(fā)價值的目標(biāo)人群。有資料統(tǒng)計,在美國臨時玩家和忠實(shí)玩家之間的比例大約是50:1,在中國這種差距可能會更高。
而休閑游戲恰恰抓住了這些臨時玩家對互動娛樂的需求。休閑游戲簡單輕松,趣味十足,臨時玩家們在短時間內(nèi)就可獲得游戲所帶來的互動趣味和成就感。這些其實(shí)是體閑游戲成功的最大法寶。開發(fā)商非常清楚的認(rèn)識到了這一點(diǎn),他們以紅白機(jī)的《炸彈人》作為原形,針對市場開發(fā)出了‘泡泡堂》。使游戲操作簡單,極易上手,富有樂趣,充分吸收了《炸彈人》的諸多優(yōu)點(diǎn)。在保留精髓的同時,《泡泡堂》還開發(fā)了一些有創(chuàng)意的玩點(diǎn),加入一些很有影響力的娛樂元素(Avatar),使產(chǎn)品線更豐富,滿足了臨時玩家多方面的互聯(lián)網(wǎng)娛樂需求。
二、總體設(shè)計
(一)課題研究的意義。本課題以開發(fā)該游戲?yàn)槠脚_,綜臺運(yùn)用游戲開發(fā)的基本知識,程序中算法的實(shí)現(xiàn),線程的分配,程序運(yùn)行中的內(nèi)存使用情況的控制等。通過這些技術(shù)的綜合運(yùn)用,更深入的了解計算機(jī)程序方面的相關(guān)知識,熟悉游戲開發(fā)的理念和流程,了解整個游戲項(xiàng)目開發(fā)的關(guān)注點(diǎn)。
(二)功能模塊簡介。本課題所開發(fā)的單機(jī)版游戲泡泡堂,就是為玩家提供一個娛樂的空間,該游戲的操作簡單,娛樂性高,可以讓玩家在無聊的時候用來打發(fā)時間。
根據(jù)以上定義,該單機(jī)版泡泡堂游戲研究一下幾個模塊:
1、游戲開始畫面。2、游戲地圖的制作。3、人物移動的控制實(shí)現(xiàn)。4、泡泡的產(chǎn)生及泡泡的爆炸實(shí)現(xiàn)。5、碰撞檢測的實(shí)現(xiàn)。6、結(jié)果的判斷實(shí)現(xiàn)。7、計時的實(shí)現(xiàn)。8、幾個小特效的實(shí)現(xiàn)。
(三)開發(fā)語言。該游戲是在visual cH6,O編譯環(huán)境下編程實(shí)現(xiàn)的,主要用到c++語言和dlrectx。該游戲?qū)τ布男枨蟛桓摺?/p>
三、詳細(xì)設(shè)計
(一)系統(tǒng)功能需求
1、游戲開始畫面的制作。玩家玩該游戲,首先要有一個開始的畫面共玩家來選擇,這樣更具有人性化。開始畫面。玩家可以選擇是進(jìn)入游戲,還是退出游戲。
2、游戲地圖的制作。游戲吸引玩家的一個方面是畫面的漂亮,所以做一個漂亮的游戲地圖是必須的,這樣才能讓玩家有一種想玩的沖動。
3、游戲人物控制。游戲就必須有主角,主角由玩家控制移動,這樣玩家才能在游戲的規(guī)則的基礎(chǔ)上按自己的意愿來玩。
4、碰撞檢測。一個好的碰撞檢測,可以使游戲的流利度增加,也可以使畫面看起來更加的逼真,亦不至于看起來一點(diǎn)都不與現(xiàn)實(shí)向吻和。
5、結(jié)果的判斷。一個游戲如果沒了結(jié)果的判斷,沒有輸贏的評判,那么這個游戲肯定沒有什么人玩,所以,結(jié)果判斷的實(shí)現(xiàn)是很必需的。
6、計時的實(shí)現(xiàn)。增加計時是為了讓玩家有一個時間的概念,而不至于玩啦多長時間都不知道。
7、特效的增加。增加特效,是為了提高玩家的興趣,畫面的漂亮與美觀可以給玩家一種玩下去的沖動。
(二)泡泡堂游戲中的技術(shù)難題
1、隨機(jī)地圖的制作。2、遮擋的實(shí)現(xiàn)。3、泡泡爆炸及道具的產(chǎn)生的實(shí)現(xiàn)。4、碰撞算法的設(shè)計:算法是游戲的核心,要設(shè)計很好的算法,提高游戲運(yùn)行的效率,運(yùn)行速度要高,并且資源占用的要少。5、畫面閃爍:在圖片之間相互調(diào)用轉(zhuǎn)換時,圖像的畫面要流暢,不能有停頓和閃爍。6、百葉窗特效的制作。
(三)技術(shù)難題的解決途徑
1、隨機(jī)地圖的制作。地圖的制作采用小塊貼圖,首先有一個背景地圖,有兩小塊圖片來實(shí)現(xiàn)[1],而景物的產(chǎn)生通過兩個隨機(jī)數(shù)來確定和產(chǎn)生,樹、房子等有些景物是通過固定坐標(biāo)來固定顯示的。游戲進(jìn)行中按F1會隨機(jī)刷新地圖一次。
2、遮擋的實(shí)現(xiàn)。遮擋的實(shí)現(xiàn)運(yùn)用的是畫家的原理,遠(yuǎn)處的東西先畫,近處的東西后畫,這樣看起來就會有遮擋的效果的。在實(shí)際的游戲的制作中,先通過一個排序來確定各個景物的遠(yuǎn)近,然后依次貼上去,看上去就會有遮擋的實(shí)現(xiàn)。
3、泡泡爆炸及道具的產(chǎn)生的實(shí)現(xiàn)。泡泡的爆炸在游戲的制作的也是比較難解決的問題之一。泡泡的爆炸是遙過不同的時刻顯示不同的圖片來實(shí)現(xiàn)的。而道具的產(chǎn)生是通過一個變量來控制實(shí)現(xiàn)的,如果變量不為-1,那么證明就有道具的產(chǎn)生的,所以,就顯示相應(yīng)的道具。
4、碰撞算法的設(shè)計。該游戲的碰撞檢測,我用的是區(qū)域碰撞,人物是一塊區(qū)域,景物是一塊區(qū)域,如果這兩塊區(qū)域有了交集,那么可以證明人和景物碰到了一起。所以就停止前進(jìn)。
5、畫面閃爍。由于游戲畫面的更新是通過定時刷新來實(shí)現(xiàn)的,在畫面的更新是,屏幕會出現(xiàn)閃爍,用雙緩沖就可以解決這個問題,畫面的更新不在是在前臺直接刷新,而是在后臺刷新實(shí)現(xiàn)的,這就避免了屏幕的閃爍。
6、百葉窗特效的制作。百葉窗特效的實(shí)現(xiàn)是通過一個定時器來實(shí)現(xiàn),隨著時間的增加,來一次顯示圖片,這樣就會有百葉窗的效果。
四、結(jié)束語
泡泡堂游戲之所以曾經(jīng)風(fēng)靡全球,不光是因?yàn)槠涑墒斓募夹g(shù)還有其簡單的易于操作的界面。在泡泡堂上市之初就得到了大批游戲愛好者的洎捧。之所以泡泡堂游戲在全世界范圍內(nèi)取得成功,高效率的碰撞檢測和高準(zhǔn)確度的爆炸實(shí)現(xiàn)時技術(shù)中的關(guān)鍵,所以本論文對在泡泡堂開發(fā)過程中的技術(shù)難點(diǎn)進(jìn)行了解析,而且對泡泡堂中的各個開發(fā)模塊進(jìn)行了歸納。本論文一定會對以后的程序開發(fā)者和技術(shù)愛好者提供一種很好綜述。