实战开发:新手小白如何用C++制作经典网游DNF

十年前,那时候的网吧还不叫网咖,那时候没有王者荣耀也没有英雄联盟,那时候梦幻西游刚推出珍宝阁系统,那时候巫妖王的灵魂还封闭在冰封王座。


寻仙、穿越火线、征途、天龙八部……同时在线人数超百万的游戏纷纷涌现,那个中国网游群芳斗艳的年代,地下城与勇士无疑是最耀眼的那个。

实战开发:新手小白如何用C++制作经典网游DNF_第1张图片

DNF当年有多火?那年小编还在读初中,跟同学去网吧,一排排全是在玩DNF,当时有人爆了一把双龙魔影光剑,整个网吧都炸了,一个地主家的傻儿子当即把手机押那儿,然后冲回家再取800块,一出门就摔了一跤,滋溜就爬起来继续跑,一边跑一边喊千万别卖给别人……

实战开发:新手小白如何用C++制作经典网游DNF_第2张图片

不过呢,玩游戏不如做游戏,再牛逼的游戏号在程序员的眼里就是一堆代码,所以今天呢,小编要跟大家说说如何进行游戏开发。


作为一款横屏格斗游戏,绚丽的画面和流畅的动作是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.可尝试去开发各种界面化的程序,例如雷霆战机,俄罗斯方块,坦克大战等等。


不怕学不会就怕不想学,大家可以加我的二千人群 487790381,每天直播课分享,实战项目教学,学习规范的代码风格,

你可能感兴趣的:(c++)