bada 2D遊戲編程之三——遊戲的基本結構

bada 2D遊戲編程之三——遊戲的基本結構 編程

 

1,不一樣的角度看遊戲結構 緩存

站在玩家的角度看遊戲的話,遊戲是由各個不一樣的界面組成的,並在各個界面之間進行跳轉。好比從遊戲開始的「開始畫面」進入到遊戲的「菜單畫面」再跳轉到「遊戲畫面」等。玩家也根本不須要去了解這些畫面是如何實現的,是什麼樣的機制保證遊戲去不斷的更新畫面等。 框架

 

 

而開發者在從技術的角度去看遊戲的結構時,能夠化繁爲簡,將遊戲簡化爲3個基本的模塊:輸入模塊、邏輯模塊和輸出模塊。ide

 

 

下面分別對這三個模塊各起的做用進行一些介紹: 動畫

(1)    輸入模塊:負責接收各類輸入事件並進行相應的處理。在遊戲中主要會處理兩種類型的事件,一種是用戶輸入事件,例如按鍵事件,觸摸事件(單點觸摸、多點觸摸);還有一種是傳感器事件,最典型的就是加速度傳感器的變化事件。在輸入模塊中主要就是監聽和接收這些事件,當這些事件到來時會對這些事件進行緩存或者當即執行等操做。 spa

(2)    邏輯模塊:邏輯模塊處理遊戲中的各類邏輯變化。這是遊戲中的核心部分,也是最複雜的部分,它與遊戲的內容是密不可分的。常見的處理就是根據輸入模塊中接收到的事件來進行遊戲的邏輯判斷,例如用戶按向上鍵來控制遊戲主角向上移動,這個向上鍵的事件在輸入模塊接收到了並進行了前期的處理,在邏輯處理模塊,遊戲會根據遊戲邏輯來判斷遊戲是向上走仍是說此時已經碰到了牆壁而不能繼續向前。 orm

(3)    輸出模塊:遊戲中主要有渲染和音頻播放兩種類型的輸出。渲染輸出是根據邏輯處理的結果,得到界面上須要顯示的物體座標,而後將他們繪製在屏幕上;而音頻輸出是根據邏輯處理結果來決定播放的音效,例如遊戲中的物體發生了碰撞,則能夠播放碰撞聲等。 blog

 

2,遊戲的驅動方式 遊戲

將前面的輸入模塊、邏輯模塊和輸出模塊合成起來就夠成了遊戲的運行框架。那麼經過什麼樣的方式來驅動遊戲運行呢,驅動的方式不同,會直接影響到遊戲的運行機制。常見的遊戲驅動方式有兩種,一種是事件驅動,還有一種是時間驅動。 事件

 

在事件驅動的遊戲框架中,遊戲只有當接收到輸入事件以後纔會往下進行,進入到邏輯模塊和輸出模塊。若是沒有事件輸入的話,遊戲則一直處於等待輸入的狀態,直到有輸入改變爲止。例如在一個靜止不動的遊戲畫面,在事件驅動的框架下,遊戲會保持這個畫面不變,直到檢測到輸入事件後纔會根據遊戲邏輯運算的結果去渲染遊戲畫面。

這樣在事件驅動方式下的遊戲運行方式是:

 

 

而在時間驅動的遊戲框架中,無論有沒有事件輸入,遊戲都在不停的循環執行輸入模塊、邏輯模塊和輸出模塊。也就是在不斷的檢測是輸入事件,運行遊戲邏輯,渲染畫面和播放音效。即便玩家看到的是一個靜止不動的畫面,它也是遊戲不斷渲染產生的效果,只不過是因爲每次渲染的內容是同樣的,看不到變化效果而已。

在時間驅動方式下的遊戲運行方式是:

 

 

3,選擇合適的驅動方式

那麼在遊戲開發中選擇哪一種驅動方式來驅動遊戲呢?其實現絕大多數的遊戲都是採用的時間驅動方式,並且採用時間驅動是專業遊戲的廣泛作法。但這並非表示事件驅動的方式就沒有市場了,它多用於簡單的遊戲開發中,如象棋,圍棋數獨等遊戲,這類遊戲大多不須要實現複雜的動畫效果。

 

類型

優勢

缺點

事件驅動

只有當有事件輸入時才進行會執行邏輯模塊和輸出模塊,這樣會節省系統資源

遊戲會在全部接收事件輸入的地方運行邏輯模塊和輸出模塊,這樣會形成代碼上比較混亂,沒有進行集中處理

時間驅動

會對遊戲中的輸入事件進行緩存,統一在遊戲循環中進行處理,這樣邏輯上比較清晰。

 

遊戲會循環運行,即便沒有事件輸入也會執行邏輯模塊和輸出模塊,比較消耗系統資源

相關文章
相關標籤/搜索