十年前,那時候的網吧還不叫網咖,那時候沒有王者榮耀也沒有英雄聯盟,那時候夢幻西游剛推出珍寶閣系統,那時候巫妖王的靈魂還封閉在冰封王座。
尋仙、穿越火線、征途、天龍八部……同時在線人數超百萬的游戲紛紛涌現,那個中國網游群芳斗艷的年代,地下城與勇士無疑是最耀眼的那個。
DNF當年有多火?那年小編還在讀初中,跟同學去網吧,一排排全是在玩DNF,當時有人爆了一把雙龍魔影光劍,整個網吧都炸了,一個地主家的傻兒子當即把手機押那兒,然后沖回家再取800塊,一出門就摔了一跤,滋溜就爬起來繼續跑,一邊跑一邊喊千萬別賣給別人……
不過呢,玩游戲不如做游戲,再牛逼的游戲號在程序員的眼里就是一堆代碼,所以今天呢,小編要跟大家說說如何進行游戲開發。
作為一款橫屏格斗游戲,絢麗的畫面和流暢的動作是DNF的精髓,那么我們先從畫面和動作著手。
關于GDI的初步認知
什么是GDI,GDI是windows與生俱來的圖形設備接口(GraphicsDeviceInterface)的英文縮寫,主要任務是負責系統與繪圖程序之間的信息交換,處理所有Windows程序的圖形和圖像輸出。
利用它我們可以很輕松的在屏幕上繪制圖形了。也能利用它開發一些繪制要求不高的游戲,比如小時候玩的魂斗羅,超級瑪麗啊等小游戲,或一些RPG(角色扮演類)小游戲,我們都是可以用GDI制作的。
雖然LOL,DNF,QQ炫舞等這些游戲是DirectX或OpenGL這類圖形接口,但對新手小白來說最簡單的還是GDI。
準備一張BMP格式的背景圖片,創建一個窗體,在窗體上進行繪制,然后通過GetDC函數來獲取窗體的設備環境DC
獲取設備環境后,還需要在內存中創建一個設備環境,我們在內存中畫圖,畫好以后,直接拷貝到窗體的設備環境上
![](http://file.elecfans.com/web1/M00/4E/4B/pIYBAFq59G2AE72QAAAPd9T8YLQ593.jpg)
關于初步動畫實現
3D是渲染的藝術,具備動畫狀態機和混合樹的方案在如今基本是標配,如常見的Unity的Mecanim,UE4的Animation Blueprint。
那如何利用GDI在游戲中實現動畫效果呢?
2D游戲是貼圖的藝術,貼圖基本有兩種方式,一種采用定時器,一種則是利用消息循環,目前都是采用的第二種繪制方式(消息循環),也就是說游戲中的動畫都是一幀一幀的帖上去的,就像放電影一樣。
例如這個動畫(素材來自DNF),通過一個數組把他們保存起來,然后依次播放。下面是部分代碼:
運行效果圖:
是不是感覺還不錯呢?其實地下城與勇士這類游戲是比較適合新手小白開發的,相比于3D游戲的骨骼動畫,2D橫版游戲的序列幀更簡便。
在這個娛樂化時代,游戲已經融入到我們的生活成為了一種生活方式,游戲開發也是當下和未來絕對熱門的行業,但是對于初學者而言呢,缺乏經驗和指導往往會舉步維艱。
-
編程
+關注
關注
88文章
3640瀏覽量
94042 -
C++
+關注
關注
22文章
2114瀏覽量
73899
原文標題:實戰開發:新手小白如何用C++制作經典網游DNF
文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
![](https://file1.elecfans.com/web2/M00/87/A8/wKgZomRmk06ASwZ2AAHMTRghLGo338.png)
![](https://file1.elecfans.com/web2/M00/87/A8/wKgaomRmk2uAYaUJAAB5Mi1_FSk903.png)
如何用STM32CubeMX生成底層代碼?代碼中C++的編寫要注意哪些事項?
如何學習C++,如何學好C++
TuoboC/borland C++用戶界面程序設計
![TuoboC/borland <b class='flag-5'>C++</b>用戶界面程序設計](https://file.elecfans.com/web2/M00/48/B8/pYYBAGKhtByAbDBcAAAkTJlmrw0908.jpg)
評論