你好,歡迎來到川北在線
微信
騰訊微博
新浪微博
在游戲引擎開發(fā)中常用的幾種設計模式
時間:2017-06-05 11:47   來源:GAD   責任編輯:毛青青

  游戲引擎是決定游戲基本程序運行的關鍵,如何開發(fā)好游戲引擎就成為游戲程序開發(fā)者必須掌握的一項技能。這里要說的并不是基礎設計方法,而是更進階的設計模式。下面我們就來看看一些在游戲引擎開發(fā)中常用的幾種設計模式。

  僅僅因為你知道編程語言的語法,不足以讓你成為一個程序員。我討厭這么對你說,但它確實是真的。什么知識將會使你成為一個真正的程序員呢?答案是數據結構,算法和設計模式的知識。語言的語法與知道字母表同義。任何人,我的意思是任何人,可以在一個周內學會編程語言的語法。但是這樣的人不可能開發(fā)模塊化的、靈活的、可維護的應用。

  現在我已經打破了你的心情和愿望,現在讓我向你介紹設計模式,這將使你成為一個偉大的開發(fā)人員。

  這有幾種設計模式。他們中的大多數在書中都有相關的解釋。但是最常用和最喜歡的設計模式如下:

  單例模式(SingletonDesign Pattern: Allows only):只允許創(chuàng)建一個類的一個實例。

  策略模式(StrategyDesign Pattern):通過解耦類行為從而提供靈活性。

  觀察者模式(Observer Design Pattern):允許類在不知道任何事情的情況下相互交互。

  組合模式(CompositeDesign Pattern):為所有類提供了統(tǒng)一的接入點。

  模型-視圖-控制器模式(Model-View-Controller Design Pattern)(MVC):搖滾樂隊中的“披頭士”。

  我將在游戲引擎開發(fā)方面討論每種設計模式(我是一個偏執(zhí)的游戲引擎開發(fā)者)。但是,以下概念適用于任何應用或游戲開發(fā)。

  單例模式(Singleton Design Pattern)

  在游戲中,就像在電影里,應該只有一個導演。導演是一個類,這個類在游戲中指揮發(fā)生的事情。它控制對象的呈現。它控制位置更新。它將玩家的輸入指向正確的游戲角色。

  引擎應該阻止創(chuàng)建一個以上的導演類的實例,通過單例設計模式來實現。此設計模式確保為給定類實例化有且只有一個對象。

  策略模式(Strategy Design Pattern)

  在游戲中,你應該將輸入控制器和游戲邏輯之間的交互進行解耦。游戲的邏輯應該接收相同類型的輸入,而不管輸入控制器是什么(按鈕,手勢,操縱桿)。

  管對用戶每個輸入控制器的行為表現不同,但它們必須向游戲的邏輯提供相同的數據。此外,添加或刪除輸入控制器不應導致游戲崩潰。

  這種解耦行為和靈活性是可能的,這歸功于策略設計模式。這種設計模式允許通過動態(tài)方式來改變行為,而不需要修改游戲的任何邏輯,為你的游戲提供了很高的靈活性。

  觀察者模式(Observer Design Pattern)

  在游戲中,你的所有類耦合度應該設計的很低。這意味著你的類應該能夠彼此交互,且彼此之間應該知道對方盡量少的內容。使得你的類具有低耦合度,使得你的游戲可以模塊化和靈活性的添加新的功能,且不會有意外的錯誤。

  此模式通常在對象想要向其訂閱戶(其他類對象)發(fā)送消息時實現。對象不需要知道訂閱者如何工作,但是他們能相互通信。

  組合模式(Composite Design Pattern)

  游戲通常包含許多視圖。主視圖中顯示角色。有一個子視圖,顯示玩家的積分。有一個子視圖,顯示游戲中剩下的時間。如果你在移動設備上玩游戲,那么每個按鈕都是一個視圖。

 ∩維護性應該是游戲開發(fā)過程中的主要關注點。每個視圖不應具有不同的函數名稱或不同的訪問點。相反,你想要為每個視圖提供一個統(tǒng)一的訪問點,即相同的函數調用應該既能夠訪問主視圖也能夠訪問子視圖。

  這種統(tǒng)一的接入點可以使用復合設計模式。此模式將每個視圖放置在樹狀結構中,從而為每個視圖提供統(tǒng)一的訪問點。取代了需要用不同的函數來訪問不同的子視圖,組合模式可以用相同的函數訪問任何視圖。

  模型-視圖-控制器模式(Model-View-Controller Design Pattern)

  如果模型-視圖-控制器設計模式是一個搖滾樂隊,那么它肯定會被稱為“披頭士”。毫無疑問。它是程序員中最廣泛使用和喜歡的設計模式。

  我通過模型視圖控制器來介紹設計模式的。但我希望這不會是這樣的。我和許多程序員一樣,開始學習這個設計模式,但沒有意識到這個模式是由三個基本的設計模式組成的。沒有意識到這個事情,造成了很多困惑。

  模型-視圖-控制器設計模式由三種模式組成:

  策略模式

  觀察者樣式

  組合模式

  如上圖所示,策略模式表示MVC中的Controller部分。策略模式將用戶輸入與游戲的邏輯(Model)和接口(View)分離。

  組合設計模式表示應用程序中的所有視圖(主窗口和按鈕)。此設計模式為模型的所有視圖提供統(tǒng)一的訪問點。

  觀察者模式代表你的應用程序(模型)中的邏輯。通過這種模式,模型能夠與視圖和控制器進行交互,而不需要知道它們內部細節(jié)。這種模式使所有類之間的交互有更低的耦合度。

  希望這篇文章可以幫助你。

   投稿郵箱:chuanbeiol@163.com   詳情請訪問川北在線:http://m.fishbao.com.cn/

川北在線-川北全搜索版權與免責聲明
①凡注明"來源:XXX(非在線)"的作品,均轉載自其它媒體,轉載目的在于傳遞更多信息,并不代表本網贊同其觀點和對其真實性負責,本網不承擔此類稿件侵權行為的連帶責任。
②本站所載之信息僅為網民提供參考之用,不構成任何投資建議,文章觀點不代表本站立場,其真實性由作者或稿源方負責,本站信息接受廣大網民的監(jiān)督、投訴、批評。
③本站轉載純粹出于為網民傳遞更多信息之目的,本站不原創(chuàng)、不存儲視頻,所有視頻均分享自其他視頻分享網站,如涉及到您的版權問題,請與本網聯系,我站將及時進行刪除處理。



圖庫
合作媒體
金寵物 綠植迷
法律顧問:ITLAW-莊毅雄律師