歡迎光臨
每天分享高質量文章

網遊《地下城與勇士》究竟是如何製作出來的?

十年前,那時候的網咖還不叫網咖,那時候沒有王者榮耀也沒有英雄聯盟,那時候夢幻西遊剛推出珍寶閣系統,那時候巫妖王的靈魂還封閉在冰封王座。


尋仙、穿越火線、征途、天龍八部……同時線上人數超百萬的遊戲紛紛湧現,那個中國網遊群芳鬥艷的年代,地下城與勇士無疑是最耀眼的那個。

DNF當年有多火?那年小編還在讀初中,跟同學去網咖,一排排全是在玩DNF,當時有人爆了一把雙龍魔影光劍,整個網咖都炸了,一個地主家的傻兒子當即把手機押那兒,然後沖回家再取800塊,一齣門就摔了一跤,滋溜就爬起來繼續跑,一邊跑一邊喊千萬別賣給別人……

不過呢,玩遊戲不如做遊戲,再牛逼的遊戲號在程式員的眼裡就是一堆程式碼,所以今天呢,小編要跟大家說說如何進行遊戲開發。


作為一款橫屏格鬥遊戲,絢麗的畫面和流暢的動作是DNF的精髓,那麼我們先從畫面和動作著手。


關於GDI的初步認知


什麼是GDI,GDI是windows與生俱來的圖形裝置介面(GraphicsDeviceInterface)的英文縮寫,主要任務是負責系統與繪圖程式之間的資訊交換,處理所有Windows程式的圖形和影象輸出。


利用它我們可以很輕鬆的在螢幕上繪製圖形了。也能利用它開發一些繪製要求不高的遊戲,比如小時候玩的魂鬥羅,超級瑪麗啊等小遊戲,或一些RPG(角色扮演類)小遊戲,我們都是可以用GDI製作的。


雖然LOL,DNF,QQ炫舞等這些遊戲是DirectX或OpenGL這類圖形介面,但對新手小白來說最簡單的還是GDI。


準備一張BMP格式的背景圖片,建立一個窗體,在窗體上進行繪製,然後透過GetDC函式來獲取窗體的裝置環境DC

獲取裝置環境後,還需要在記憶體中建立一個裝置環境,我們在記憶體中畫圖,畫好以後,直接複製到窗體的裝置環境上


關於初步動畫實現


3D是渲染的藝術,具備動畫狀態機和混合樹的方案在如今基本是標配,如常見的Unity的Mecanim,UE4的Animation Blueprint。


那如何利用GDI在遊戲中實現動畫效果呢?


2D遊戲是貼圖的藝術,貼圖基本有兩種方式,一種採用定時器,一種則是利用訊息迴圈,目前都是採用的第二種繪製方式(訊息迴圈),也就是說遊戲中的動畫都是一幀一幀的帖上去的,就像放電影一樣。


例如這個動畫(素材來自DNF),透過一個陣列把他們儲存起來,然後依次播放。下麵是部分程式碼:

執行效果圖:

是不是感覺還不錯呢?其實地下城與勇士這類遊戲是比較適合新手小白開發的,相比於3D遊戲的骨骼動畫,2D橫版遊戲的序列幀更簡便。


在這個娛樂化時代,遊戲已經融入到我們的生活成為了一種生活方式,遊戲開發也是當下和未來絕對熱門的行業,但是對於初學者而言呢,缺乏經驗和指導往往會舉步維艱。


所以今天小編特意給大家帶來一堂

C++遊戲實戰開發直播分享課

在開發過程中,我們會用到C/C++語言、Win32視窗建立、訊息機制、GDI三緩衝繪圖原理等知識點。


●學習過程中你能學會:

       1.使用API函式建立好Win32視窗。

       2.將準備好的遊戲素材載入到程式中。

       3.使用GDI圖形裝置介面函式繪製地圖與角色。

       4.利用C/C++語法結合資料結構與演演算法演演算法處理遊戲資料。

       5.編寫遊戲邏輯。


●學習成效:

       1.跳出控制檯,在介面程式設計中去鍛煉自己的邏輯思維能力。

       2.瞭解windows程式設計的基本框架。

       3.可嘗試去開發各種介面化的程式,例如雷霆戰機,俄羅斯方塊,坦克大戰等等。


C++遊戲開發課程領取方式

長按或掃描識別下方二維碼

加入C++技術交流群即可免費獲取

長按二維碼識別

或新增Q群:652954961

不定期有Socket程式設計和Hook(鉤子)程式設計等網路駭客技術、騰訊內部核心技術比如QQ截圖系統、編寫雷霆戰機等經典遊戲的免費知識分享課。

 

點選閱讀原文,也可以參與哦

贊(0)

分享創造快樂