1. 程式人生 > >C#遊戲之路-winform,wpf,directx,opengl的了解

C#遊戲之路-winform,wpf,directx,opengl的了解

說我 項目 多個 同時 統一 技術 利用 開發 我的博客

終於審核通過了,開通了我的博客,雖然這麽多年,已經長期在從事java相關的架構工作,但是,其實我內心,喜歡的語言一直是c#,可惜,很多時候光靠一人的力量,改變不了什麽,現在的我,打算拋開自己的工作,做自己真正喜歡的事情,我開這個博客的目的主要就是為了用c#來開發大型遊戲,我的第一個目標,打算使用c#實現《傳奇》這樣的大型網絡遊戲,這樣的遊戲會分成服務端和客戶端分別開發,我的前期目標是先實現客戶端,如果想了解服務端的可以訂閱我,我後續會一並寫完的。

從現在開始重拾8年前的c#確實有點生疏,但其實很多思想都是想通的,當然做遊戲,首先要選擇一種適合的技術。

今天,我主要是羅列了4項我還有點印象的實現方式。

winform,wpf,directx,opengl,下面分別說說我對這4種實現方式的理解吧,也算是給自己理個思路。

winform

winform這個技術我算是最熟悉的,記得大學畢業的時候,就是用winform做了個爬蟲類的應用,專門爬網絡上的美女圖片,以致於老師們看到那麽多美女圖片,就給了我一個優秀畢業設計稱號,哈哈,所以,其實我第一個想到的就是winform。對於winform,實現思路我想應該是一個窗口,裏面放一個繪圖控件,然後重寫這個繪圖控件,實現自己的自定義繪制,用的類那應該就是System.Drawing下面的那些類。在這裏我想了下,要實現《傳奇》這樣的遊戲,winform的繪圖性能應該是一個考驗,另外,遊戲動畫特別多,而且很多動畫都是同時存在的,這樣的難題應該是個考慮,我的想法是先新建多個bitmap,預先把繪制繪制到內存中,然後統一時間刷新,比如100MS刷新一次,那就是每秒10幀,曾經分析過傳奇的代碼,差不多就是每秒10幀這樣的程度。

wpf

關於wpf這個,我也是在博客園裏看到了一些相關的文章,有些人說wpf是完全重寫的一套繪圖機制,而且可以利用GPU進行加速,所以,我打算對wpf這個也研究一番,如果按照我理解的方式,我認為wpf的實現應該跟winform有點類似,而且據我一般的了解,我發現wpf做遊戲控制界面非常容易,比如拖動,拖動動畫之類相對容易實現,所以wpf也不失為一種好的方案。

directx

說到這個,網上搜了一大圈,經過總結,基本大部分都覺得win平臺下directx是開發遊戲最好的解決方案,也是目前成功遊戲最多的解決方案,但是我看了下相關的sdk,我發現,假如用directx開發遊戲,如果沒有合適的遊戲引擎,想要一個人實現《傳奇》這樣的大型遊戲,感覺就是一個人建長城的工程,但是如果使用別人的引擎,我發現好多都是c++的語言,奈何我對c++不是特別熟,所以,我原則上認為directx是屬於重量級的解決方案,需要更進一步了解。

opengl

和directx類似,也是重量級解決方案,有個不同的地方就是opengl是開源的,相對來說,實現自己的遊戲引擎難度低一點,我記得我以前最喜歡玩的《暗黑破壞神2》好像就是用的opengl,說起來,如果光從客戶端的角度來講,《暗黑破壞神2》和《傳奇》還是非常相似的,不過《暗黑破壞神2》的實現應該比《傳奇》要復雜,因為《傳奇》只有8個方位。而《暗黑破壞神2》應該是不止8個方位判定的,需要進一步了解。

今天,算是個開頭吧,在博客園發文章不發代碼好像不是好習慣,哈哈,不過這篇文章算是個開頭吧,說實話,做這種大型項目,尤其是沒有一分錢的情況下,純屬自己的愛好,難度倒還可以,就怕容易放棄,所以,開通博客園,寫出來,也希望能獲得更多人的支持,下一篇,我將會正式開始講這個工程,以及相關的代碼。

C#遊戲之路-winform,wpf,directx,opengl的了解