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

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

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


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

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)

分享創造快樂