0°

致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。

内容预览:
  • 在编写过程中,我们会运用到数组、界面处理、AI算法等相关知识,能够让...~
  • 01 在这段学习过程中,你能收获到   掌握C/C++的语法、算法,Win技术~
  • 学习游戏设计与实现思路~

原文始发于微信公众号(程序员数学之美):致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。

御剑乘风来,除魔天地间,
有酒乐逍遥,无酒我亦颠,
一饮尽江河,再饮吞日月,
千杯醉不倒,唯我酒剑仙。

致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。

仙剑奇侠传是中国最为经典的武侠PRG游戏了,跌宕起伏的剧情,深入人心的人设,精心制作的画面。可以说是传承了一代人的青春记忆。


2017年5月23日,仙剑奇侠传7正式立项,并采用虚幻4引擎(UE4)制作。意图给广大仙剑迷打造一部画面更加震撼,运行更为流畅的作品。


致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。

炫酷的战斗场面,栩栩如生的人物形象,都是用C++编写脚本,应用动画系统实现的。


因为C++效率高、方便底层交互,所以目前能胜任大型3D游戏编写的编程语言只有C++,那么我们就来聊一聊如何用C++实现人物的动画效果。


一些游戏引擎会采用最简单的直播动画的形式(如Unity的Animation方案)仅支持简单动画播放和CrossFade;一些引擎会采用更高级的动画方案。


具备动画状态机和混合树的方案在如今基本是标配,但是不同引擎的实现也会有功能上的差别,例如Unity的Mecanim系统采用的是假的层次状态机和功能简单混合树(无法插入功能性节点)

致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。

△仙剑5和仙剑6皆采用U3D编写


而UE4的Animation Blueprint就高级很多,可以在混合树插入很多功能性节点(如IK),同时让可视化脚本能够很方便地控制动画行为。

致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。

△仙剑7用虚幻4制作


骨骼动画的想法来源于人体骨骼。例如说,人的上肢所有肌肉和皮肤都受上肢骨胳的影响,而人的踝关节则分别承受小腿骨胳和脚骨的影响。


这个概念的本质上是记录了以树形结构存储的一系列对象的位置、旋转、缩放随着时间变化的动态,其中的每一个对象就是一根骨骼。

致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。


在游戏引擎中,骨骼动画通常以两个形态存在,原始数据和转换后数据:

原始数据储存了最适合用户进行动画编辑制作的数据,比如3DMax导出的FBX格式动画,或是Unity中使用动画编辑工具制作的动画。这类数据格式简单,并且不做压缩,比如使用单独的Track来储存位移、旋转、缩放的XYZ三个通道。原始数据可以直接用于编辑和播放,但是内存开销和CPU开销通常较大,所以一般不这么做。


致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。

△仙剑五中的一个3D模型


转换后数据储存了对原始数据进行加工后的版本,通常在游戏引擎的导入资源阶段会进行数据转换处理。转换后的动画数据通常经过压缩,使其内存开销和CPU开销降低。转换后数据可以直接用于动画播放。


动画的播放,根本上来说就是依照时间对动画进行采样,将Pose等采样结果输出。因而,要想对动画进行播放,我们首先得定义动画的采样结果。

致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。

动画的采样结果包含如下几个部分的信息:

Pose信息

RootMotion信息

动画播放状态

Rig标识


RootMotion从字面上来说,就是“根节点的运动”,事实上它表示的是动画驱动游戏对象运动。


不同的动画系统对于RootMotion的实现方式略有不同:Unity引擎通过分析人体骨骼动画来计算角色的运动,UE4采用角色根骨骼运动作为角色运动参考,Morpheme采用额外的Trajectory骨骼来作为角色运动的参考。

致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。

△动画系统处理后的默认动画图


只有默认动画是没有什么实际用途的,还需要编写一段脚本来控制人物切换动画。

致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。
致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。

让我们看一下效果图

致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。

(1)

致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。

(2)

致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。

(3)

致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。

(4)


以上就是运用C++实现人物的行走,打斗,技能释放等等动画效果的一些基本知识了,不得不说,仙剑奇侠传作为一部火了十几年的经典游戏,其制作思路和制作方法都非常值得当今的游戏开发者借鉴和学习的。


当然,制作仙剑奇侠传这样的大型游戏需要有相当深厚的C++功底,对于初学者而言,大型3D游戏太过晦涩高深,直接去编写这种高难度的肯定不是一个合理的选择。


就像我们常说的不能一口吃成个胖子,当我们还只会走的时候,就应该努力把每一步踏的坚实,这样才能在以后的路上健步如飞。


我们可以从一些相对简单的游戏做起,2048就是一款十分风靡的益智类小游戏

致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。


在编写过程中,我们会运用到数组、界面处理、AI算法等相关知识,能够让初学编程的人在游戏中就能够练习到C++语言的知识,让学习变得更有意思和趣味。


致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。


那么为了帮助更多的开发者,我们特地邀请到行业内享有名气的美女老师小小,免费在腾讯课堂给大家上一堂知识分享课,聊一聊如何用C++实现游戏2048。

腾讯课堂C/C++研究院高级架构讲师

致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。

小小

五年的企业级开发实战经验,擅长Windows平台、Linux平台的C/C++核心技术开发、LinuxQT、嵌入式QT、图像处理、游戏编程等,曾在大型上市公司担任高级工程师,系统架构师等职位,现任C/C++研究院高级架构师兼嵌入式Linux学院教学总监。

我们致力为大家提供一个和谐愉快的知识交流平台,在这里,大家可以尽情讨论C++或者对游戏开发设计的见解,我们的美女老师也会热情的为大家答疑解惑。


01

在这段学习过程中,你能收获到  

掌握C/C++的语法、算法,Win技术。

学习游戏设计与实现思路。

熟悉游戏的编写与运行流程。


02

报名方式                    

大家可以直接搜索QQ群号:140296820或扫描下方的二维码。

致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。

(长按二维码识别)


致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。

点击阅读原文即可加入C/C++学习群

和大佬一起学习网络安全知识

以上就是:致敬经典,聊一聊仙剑奇侠传和C++的那些事儿。 的全部内容

本站部分内容来源于互联网和用户投稿,如有侵权请联系我们删除,谢谢^^
Email:[email protected]


0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论