0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

小白如何用C++制作网游DNF技能特效

算法与数据结构 来源:未知 作者:邓佳佳 2018-03-27 15:30 次阅读

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

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

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横版游戏的序列帧更简便。

在这个娱乐化时代,游戏已经融入到我们的生活成为了一种生活方式,游戏开发也是当下和未来绝对热门的行业,但是对于初学者而言呢,缺乏经验和指导往往会举步维艰。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程
    +关注

    关注

    88

    文章

    3440

    浏览量

    92385
  • C++
    C++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72899

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

文章出处:【微信号:TheAlgorithm,微信公众号:算法与数据结构】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    C++小白自学基础教程之c++中的三目运算符15

    C++
    电子学习
    发布于 :2023年01月12日 21:11:56

    C++小白自学基础教程之c++类型类型检查加强12

    C++
    电子学习
    发布于 :2023年01月12日 21:19:47

    C++小白自学基础教程之课后练习16

    C++
    电子学习
    发布于 :2023年01月12日 21:40:32

    C++小白自学基础教程之课程复习13

    C++
    电子学习
    发布于 :2023年01月12日 21:42:18

    C++小白自学基础教程之课堂答疑08

    C++
    电子学习
    发布于 :2023年01月12日 21:43:26

    C++小白自学基础课之简单的C++程序helloworld02

    C++
    电子学习
    发布于 :2023年01月12日 22:27:52

    关于DNF CT写法

    关于DNF CT写法关于DNF CT写法关于DNF CT写法
    发表于 05-04 01:25

    何用STM32CubeMX生成底层代码?代码中C++的编写要注意哪些事项?

    何用STM32CubeMX生成底层代码?单片机代码如何进行IDE的C++配置?代码中C++的编写要注意哪些事项?C++实现时候遇到的情况有哪些?
    发表于 07-01 06:22

    如何学习C++,如何学好C++

    最近,很多学员都给我发邮件问我应该如何学习C++,如何学好C++?那么作为一个从C语言小白摸爬滚打、入坑无数到成长为如今的高级C++游戏开发
    发表于 08-20 06:27

    何用C++编写流水灯程序?

    为什么很少用C++开发单片机?如何用C++编写流水灯程序?
    发表于 09-30 08:27

    请问MDK中如何用C++开发STM32?

    请问MDK中如何用C++开发STM32?
    发表于 10-22 06:03

    C语言C++运用

    。具备C/C++ 开发技能的工程师在行业内属于“稀缺”人才,而精通Unix 和Windows 双系统开发技能C/
    发表于 11-25 10:47

    何用C++做一个TCP的服务器进行数据观察及采集呢

    何用C++做一个TCP的服务器进行数据观察及采集呢?有哪些设计步骤?
    发表于 12-23 09:41

    C++中如何用虚函数实现多态

    01 — C++虚函数探索 C++是一门面向对象语言,在C++里运行时多态是由虚函数和纯虚函数实现的,现在我们看下在C++中如何用虚函数实现
    的头像 发表于 09-29 14:18 1470次阅读

    在Linux下如何安装和卸载dnf工具呢

    通过以上操作,你会发现在Rocky8里面,使用yum或者dnf,都是一样的,本质上都是dnf工具,所以在前面章节中阿铭使用yum命令就是在使用dnf命令。
    的头像 发表于 11-08 11:31 2420次阅读