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

    文章

    3600

    浏览量

    93625
  • C++
    C++
    +关注

    关注

    22

    文章

    2105

    浏览量

    73531

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    关于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

    TuoboC/borland C++用户界面程序设计

    TuoboC/borland C++用户界面程序设计从实例入手,详细介绍了如何用TuoboC/borland C进行用户界面程序设计的一些技术和技巧。主要包括屏幕色彩的程序设计,点阵汉字及矢量汉字的多种
    发表于 10-09 16:48 126次下载
    TuoboC/borland <b class='flag-5'>C++</b>用户界面程序设计

    基于Visual C++电路测试界面设计

    摘要:本文以某种电路测试系统制作实例为基础,应用Visual C++来设计人机对话界面,着重说明了Visual C++对话框及一些控件的设计方法。关键词:电路测试 菜单制作 VC++应
    发表于 05-04 10:07 28次下载

    C++的初步入门基础教程免费下载

    非常详细通俗易懂的C++学习资料,拥有它你可以从小白到大神实现华丽的变身
    发表于 03-06 08:00 5次下载
    <b class='flag-5'>C++</b>的初步入门基础教程免费下载

    何用Bazel构建C++项目

    众所周知,C/C++ 语言具备很强可移植性,作为高级的底层语言能兼容各式各样的系统环境或应用。因此很多企业更偏向于将算法用 C/C++ 实现,从而减少不同业务平台下的算法维护成本。
    的头像 发表于 11-18 17:23 5097次阅读

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

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

    何用cplusplus来识别CC++编译器

    C++程序引用过的话。 这与C++有什么关系呢? 看看__cplusplus(注意前面是两个下划线) 的名字你就应该知道它与C++有很大关系。__cplusplus是一个C++规范规定
    的头像 发表于 07-06 14:13 2111次阅读

    何用Arduino制作音乐

    电子发烧友网站提供《如何用Arduino制作音乐.zip》资料免费下载
    发表于 10-26 15:28 0次下载
    如<b class='flag-5'>何用</b>Arduino<b class='flag-5'>制作</b>音乐