设为首页收藏本站

天空语文 如皋  九华 作文  教学

 找回密码
 我要加入(register注册)

QQ登录

只需一步,快速开始

快捷登录

最近看过此主题的会员

天空新人

77翔子

41BCDD

顾佳瑞七六阅读

小燕子

李白202091

蓝兰的花朵

嘿嘿嘿

joycy

颂颂.g

酷土土土

用户已注销

Jeremy

ʚ贴贴ɞ

果子黑

H·princess

李苏楠

方大金

依灵灵灵.

金川兰

lulululu

lisunan18795762

清风拂过

楠大人

王悦

朴弟

查看: 1822|回复: 4
收起左侧

游戏开发技术科普:游戏中的角色是如何“动”起来的?

  [复制链接] TA的其它主题
来自- 保留地址

Ta在天空论坛排行

积分:NO. 74 名

发帖:NO. 77 名

在线:NO. 38 名

六翼天使494 发表于 2020-3-5 21:44:20 | 显示全部楼层 |阅读模式 来自- 保留地址
来自- 保留地址

加入天空更多精彩

您需要 登录 才可以下载或查看,没有帐号?我要加入(register注册)

x
游戏开发技术科普:游戏中的角色是如何“动”起来的?GameRes游资网 2020-02-20 09:06:36
作者:Jerish
从红白机时代的超级玛丽,到PC时代CS里面的反恐精英,再到如今主机上栩栩如生的“荒野大镖客”。随着技术的进步,游戏中的这些角色,在移动的表现上愈加真实。




我们会想,为什么有些游戏中的人物,移动起来非常不自然?而有些制作精良的游戏里,每个角色动起来都栩栩如生。这些角色是如何在我们游戏世界中移动的呢?今天这篇文章就会简单的给大家分享一下,游戏角色在游戏世界中的移动原理。

游戏世界

- 真实世界的复制版-

谈到移动,首先不得不谈一下我们游戏中的世界。游戏世界分为2D世界和3D世界,不妨先从3D游戏的世界说起。3D游戏世界是一个三维立体世界,和我们和现实中的世界相似,我们游戏中的所有角色,都会在这个三维的世界里面出生、移动、交互直至死亡。除了角色以外,游戏中的其他对象也是如此产生的,比如说建筑、武器、道具等等。他们身上都保存着自己的坐标位置,当我们在移动我们的角色的时,其实就是在不断的修改当前角色的坐标值。

对于2D游戏,原理要简单很多,所有物体都存在于一个平面世界,他们的移动也只是改变其X,Y两个坐标轴而已。




移动效果 ≠ 动画效果

- 有动作不代表有位移-

现在,让我们再把焦点放在角色的移动上。这里先抛出一个问题,当我们看见一个角色在奔跑时,他真的是在移动么?

很多人可能会说这不是理所当然的么?难道还能原地跑么?没错,游戏中的角色还真就可能是原地奔跑。事实上一个角色的移动和你看见他做什么动作是没有直接关系的。因为在游戏里面,移动表现“不等于”动画表现。不妨看一下下面这张图




图中的这个角色一直在播放移动的动画,但是并没有产生一丁点的位移,因为没有任何逻辑去修改这个角色的位置。

动画

- 像拍电影一样把动作连起来 -

说到这里,我们引出了一个新的游戏概念——动画,那么如何理解游戏中的动画?为什么播放动画不会修改玩家坐标呢?

所谓动画,其实就是角色行为的一种表现方式,和电影或者动漫一样,将一个对象在一段时间内的动作记录并播放,就是一个完整的动画。游戏中针对每个角色都需要美术去单独的为其制作很多段动画,导入到游戏引擎中进行混合与切换,最后实现游戏中的效果。比如说,角色在跑步时有跑步的动画,跳起来会有跳跃的动画,战斗会播放战斗的动画,这些都是不同的动画片段,需要美术们去提前制作。




动画其实也是分为2D动画与3D动画的,以前的游戏都是2D游戏,本质上和我们小时候看的小人书一样,给一个角色创建多张图片,每张上的图片都有着不同的动作,将这些图片连在一起播放就是一个2D动画。




不过与2D动画将每一帧的画面记录下来不同,3D动画记录的角色的3D坐标数据。目前的3D动画实现方式都是由骨骼+蒙皮来做的,也就是说其实我们的每一个角色身上会有一些骨骼,当我们执行某个动画时对应的这些骨骼位置就会发生变化,然后再驱动这个骨骼的“蒙皮”(可以认为我们玩家的皮肤)变化。比如说,一个玩家把手举起来的时候,我们手臂对应的骨骼就会动起来然后包裹着他外面的皮肤也会随之移动,这样你就能看到一个真正的动画了。那么为什么他执行动画的时候不会移动呢?因为所有的动画默认都是相对他自身变化的,相对游戏世界他就是原地静止的。(其实也可以做到相对世界发生变化,这个概念叫RootMotion,在后面的文章里面会进一步讲解)




我们的角色在播放移动动画的时候,其实就是一个循环的动画,你可以看到这个角色的两个腿在不停的走动,手臂也在不停的摆动,但是它只是在不断的播放一个动画。只要处理好动画的开头与结尾就能很好的表现出角色的移动。




移动

- 有“人”暗中操作 -

了解了动画与移动的关系,我们现在就知道驱动角色移动的其实另有其人。不过这个“人”是谁呢?其实这个“人”是谁并不重要,任何一个能做这个工作的对象都可以成为这个“人”,你把它交给地上的一块石头去处理也是可以的。在代码里面,我们可以随意抽象出来一个“移动控制者”,他的工作就是控制角色如何在游戏世界里面移动。

现在假如我们给他一点点移动速度(比如每秒0.1m),如果这时候他的动画时迈开步子疯狂地跑的话,就会发现动画与速度是不匹配的。同理,如果把动画调成走路的样子,而速度改为10m/秒,就会发现他一步还没迈出去就已经滑到对面墙上了,这就是我们平时所说的滑步现象(不过没这么夸张),也是很多游戏里面看起表现很差的原因。只有将速度与动画完全匹配,才能让游戏角色移动看起来非常自然。




当然,真实的情况可能要比这个还要复杂很多。我们的角色在一开始可能还正在缓慢的行走,不一会儿之后就突然开始加速跑了起来。为了模拟真实世界中的移动的样子,我们需要对他的这个移动的过程要做各种精确的模拟,比如说行走、奔跑、甚至是游泳、飞行,不同的状态需要以不同的方式去模拟。对于更加真实的游戏,我们还应该把物理也考虑进去,重力、摩擦力、阻力等等都会影响角色的移动,不过任你怎么复杂核心就是两点——速度与加速度。一般来说,包含了上面这些逻辑的模块我们可以称之为移动系统。同时,由于我们的速度发生变化,还需要动态的修改对应的动画,这个匹配的处理以及播放的逻辑所在的模块我们称为动画系统。如果说,角色的移动是通过你的键盘按键触发,那还会涉及到一个输入系统,输入系统会根据你的按键时长转换成对应的移动速度或者是加速度,具体的转换方式要看游戏的设计逻辑。




到目前为止,如果你认识到了移动表现=动画系统+移动系统,你已经基本理解了游戏角色的移动原理了。现在,不妨再稍微拓展一些。一般美术在制作动画时只会制作走路的动画以及奔跑的动画,他不会制作一个0.5/m的走路动画然后又制作一个0.6m/s的走路动画,如果每个速度都要做一个动画的话美术肯定要累死。那游戏中的玩家,在走路和奔跑切换时该怎么处理呢?答案就是把奔跑动画与行走动画进行融合,根据速度的不同,去混合这两种动画,我们可以称之为blend space,参考下面的图片。




对于游戏质量比较高的3A大作,他们的动画远远不只这么简单,除了有基本的走的动画,还有各种方向的转身动画,包括左转和右转,斜着转,总之各个方向都有一个动画,然后通过很多动画的融合,才能达到一个非常流畅的一个表现效果。而且,移动系统的逻辑也需要模拟的非常精确,来和这些动画达到完美的匹配。

移动同步

- 告诉他你在哪 -

最后,我们再来简单谈谈移动的同步。当我们在玩网络游戏时,你会在你的显示器上面看到多个其他的玩家并且可以看到他们在移动,那这个过程中他是怎么样做的呢?这在游戏设计中有一个专有名词,叫做网络同步,网络同步是游戏领域里一块非常重要也很复杂的一个功能。简单来说,当其他玩家在移动的时候,他需要把他的坐标实时的通过网络发送到你的客户端,你就可以看到他在你的客户端上移动。在游戏开发中,发送的频率,发送的内容以及发送方式的不同的都会影响到游戏的具体表现,我在下一篇文章里会详细的分析虚幻引擎里面的移动组件是如何处理的。







  • 光追也只是刚刚开始,等哪一天物理公式都能在里面实现的时候,游戏就更加真实了。到时候移动就不是平移加动画,而是需要角色走动,触发物理公式,带来移动,物体的碰撞也会依据物理公式来,但这不知道是多少年后的事情了

    回复 ⋅ 2条回复10


  • 广东打工 6天前

    很详细,我新手,一看才知道做游戏开发是这么回事

    回复0


  • Ezio66 12天前

    写这么多指望条友们自己去开发游戏么?? 而且说的也太表面了 动画状态机 动画蒙太奇 你也没说吧 偏偏小白可以 然后我就是做游戏开发的[抠鼻][抠鼻]

    回复0


  • 无五唔 13天前

    说的都很表面啊

    回复 ⋅ 1条回复2


  • 梦老师科普 12天前

    优化一下剑三人走路吧,总感觉认有延迟或者在飘






我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励10 天空金币 , 目前已有4人回答

最近访客

来自- 保留地址
回复
天空论坛,有你有我,明天更好!
来自- 保留地址
点评回复 来自- 保留地址

使用道具 举报 私信管理员来自- 保留地址

来自- 中国浙江杭州

Ta在天空论坛排行

积分:NO. 13 名

发帖:NO. 13 名

在线:NO. 88 名

闲不住a 发表于 2020-3-16 02:45:38 | 显示全部楼层 来自- 中国浙江杭州
来自- 中国浙江杭州
曾经沧海难为水 除却巫山不是云
来自- 中国浙江杭州
回复
天空论坛,有你有我,明天更好!
来自- 中国浙江杭州
点评回复 支持 反对 来自- 中国浙江杭州

使用道具 举报 私信管理员来自- 中国浙江杭州

来自- 中国北京

Ta在天空论坛排行

积分:NO. 33 名

发帖:NO. 36 名

在线:NO. 9 名

形腿望舞 发表于 2023-9-25 15:05:22 | 显示全部楼层 来自- 中国北京
来自- 中国北京
作者可以多写写这样的文字,很不错。加油。
来自- 中国北京
回复
天空论坛,有你有我,明天更好!
来自- 中国北京
点评回复 支持 反对 来自- 中国北京

使用道具 举报 私信管理员来自- 中国北京

来自- 中国湖北十堰

Ta在天空论坛排行

积分:NO. 8 名

发帖:NO. 8 名

在线:NO. 9 名

狂人逸文 发表于 2023-12-14 23:06:12 | 显示全部楼层 来自- 中国湖北十堰
来自- 中国湖北十堰
好文,鼓励。
来自- 中国湖北十堰
回复
天空论坛,有你有我,明天更好!
来自- 中国湖北十堰
点评回复 支持 反对 来自- 中国湖北十堰

使用道具 举报 私信管理员来自- 中国湖北十堰

来自- 中国湖北十堰

Ta在天空论坛排行

积分:NO. 30 名

发帖:NO. 23 名

在线:NO. 9 名

张政 发表于 2024-3-30 01:52:48 | 显示全部楼层 来自- 中国湖北十堰
来自- 中国湖北十堰
楼主写的很经典!
来自- 中国湖北十堰
回复
天空论坛,有你有我,明天更好!
来自- 中国湖北十堰
点评回复 支持 反对 来自- 中国湖北十堰

使用道具 举报 私信管理员来自- 中国湖北十堰

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

×天空论坛发帖友情提示:
1、注册用户在本论坛发表、转载的任何作品仅代表其个人观点,不代表本论坛认同其观点。
2、如果存在违反国家相关法律、法规、条例的行为,我们有权在不经作者准许的情况下删除其在本论坛所发表的文章。
3、所有网友不要盗用有明确版权要求的作品,转贴请注明来源,否则文责自负。
4、本论坛保护注册用户个人资料,但是在自身原因导致个人资料泄露、丢失、被盗或篡改,本论坛概不负责,也不承担相应法律责任。

QQ|手机版|我们的天空 ( 苏ICP备18048761号 ) |苏公网安备32068202000215号 |网站地图

GMT+8, 2024-11-6 07:11 , Processed in 0.294001 second(s), 70 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表