天天看點

Silverlight C# 遊戲開發:高深莫測卻淺顯易懂的遊戲開發

遊戲開發一直都是一個神秘的學科,無論圖書大廈裡的設計書籍還是網絡上的開發攻略,無不讓人望而卻步,冗長的代碼以及高深的言語,使得遊戲開發愛好者們造成各種各樣的誤解,很長一段時間,都誤認為遊戲開發就是DirectX、就是Opengl、就是……,這種觀念從招聘中就能看得到,少有真正了解遊戲開發,那麼遊戲開發确實是一個很複雜的學問嗎?其實不是,它本身就是一個簡單的構成。

對于遊戲,很早就産生了,DirectX隻是一種SDK,以前沒有它的時候,遊戲照樣有,姚仙寫仙劍奇俠傳使用的是Basec語言,俄羅斯方塊也不過是彙編代碼的集合,如今flash也好silverlight也好,都是一個開發包,一個工具,本身沒有太複雜的。

我本身是一位遊戲開發愛好者,總結下來,覺得遊戲開發的基礎最少應了解以下三個部分:

第一:邏輯思維和基礎學科

邏輯思維是一個重要的部分,如果邏輯思維很好的話,有很多問題都可以很容易在之前找到(我們戲稱為YY),但是邏輯思維不等于理性思維,遊戲開發需要的是邏輯思維,如果過于理性的話,遊戲開發也不會充滿激情,比如:在任何情景下,設計一個雙人娛樂項目,這時候需要的是邏輯,而不是理性。但是理性是控制大腦的根本,指導我們什麼東西該做什麼東西不該做,就如這個雙人娛樂項目不是拿菜刀互砍,也不是一個人打一個人不還手,因為理性告訴我們,需要公平,需要安全,遊戲開發是一個結合邏輯和理性思維的學科,如果我們想開發好遊戲那麼這方面絕不能不考慮。

對于基礎學科上,建議是學習好資料結構、良好的數學基礎、最好有點藝術感覺,這些學科都是影響将來遊戲開發最近基本的知識,如果有更高層次的追求,那麼學習一下心理學、經濟學、圖形學、項目管理,都将會未來奠定好的基礎。

第二:遊戲循環

任何遊戲歸根結底其實都是一個循環,一個大循環套各種小循環,各種小循環套更多的小小循環,這些循環為遊戲創造了一個體系,在這個體系下,通過循環的方式獲得最終的展現,如果說遊戲沒有循環,那麼可以說不是一個遊戲,别說面向對象,别說MVC,作為遊戲來說一個界面也好,一個控制也好,都是一個簡單循環的展現,這個理論也不是什麼高深的思想,而是最簡單的遊戲開發雛形,如果有模式比這更好,那麼我可以說,那些可能沒有循環的模式了解容易,遊戲做循環的處理,簡單易行友善快捷。

<a target="_blank" href="http://blog.51cto.com/attachment/201111/165740646.jpg"></a>

上圖隻是一種簡單的表示,可能高手們對此可能有其他的論述,在後面,咱們用代碼的方式來考慮它的合理性。

第三:代碼設計模式

雖然說Silverlight提供了MVC的設計方式,但是作為遊戲開發者應該了解軟體開發的代碼設計模式,這些設計模式常常劃分成不同的種類,常見的種類有:

建立型設計模式,如工廠方法(Factory Method)模式、抽象工廠(Abstract Factory)模式、原型(Prototype)模式、單例(Singleton)模式,建造(Builder)模式等

結構型設計模式,如合成(Composite)模式、裝飾(Decorator)模式、代理(Proxy)模式、享元(Flyweight)模式、門面(Facade)模式、橋梁(Bridge)模式等

行為型模式,如模版方法(Template Method)模式、觀察者(Observer)模式、疊代子(Iterator)模式、責任鍊(Chain of Responsibility)模式、備忘錄(Memento)模式、指令(Command)模式、狀态(State)模式、通路者(Visitor)模式等等。

作為遊戲開發,需要了解的是抽象工廠(Abstract Factory)、疊代子(Iterator)、觀察者(Observer)、通路者(Visitor)這幾種,這幾種方式如果做了了解,那麼在遊戲開發中将會駕輕就熟。

如果是引擎級别的開發,則必須将設計模式搞清楚,我曾經寫過兩個遊戲引擎,一個是C++一個是DirectX,現在回過頭去看那代碼實在垃圾,主要是在思想意識上達不到很高的水準,是以寫出來的代碼也是什麼都沒有——沒有體系,沒有性能,沒有便捷,沒有安全……但是反過來說,有再好的設計思路和設計體系,代碼寫不出來也是白搭,正是因為有之前的兩個壘出來的上萬行代碼才使得學習的更多。是以對于這方面,需要兩方面都要加強,代碼的設計和堅持不懈的Coding才能真正達到提高。

本文轉自nowpaper 51CTO部落格,原文連結:http://blog.51cto.com/nowpaper/712609