电子游戏从上世纪诞生以来,已经从简陋粗糙的2D画面成长到如今以假乱真的3D效果,交互上也从原来几个简单按钮进化到各种VR体感类型的可穿戴设备,游戏玩法和复杂度上更是上升到一门足够深入探讨的科学与艺术。

虽然电子设备的性能每年都在不断攀升,但是CPU与内存等资源还是供不应求。为了提高效率或者节省资源,几乎所有游戏都会采取各种非常取巧的方式来达到某种表现效果,导致游戏实现的方式可能与玩家的认知大相径庭。这篇文章,就从开发者的角度给大家扒一扒这些“游戏障眼法”

“障眼法”数不胜数,种类繁多,这里面大体上分为下面几类。

1.巧妙利用玩家视角

简单来说,就是“保证玩家看到的内容没有bug”,我们只关注玩家能看到的内容,而看不到的无论有多么简陋与不堪,开发者都完全不去理会。这是游戏中最为常用的手段,具体的实现方式与技巧也说是五花八门,只有你想不到,没有开发者玩不了。

例子1:

cs中的角色,我们每次拿着一把冲锋枪奋勇杀敌的时候,屏幕中心都是这样的第一人称视角。

随着我们利用精湛的枪法不断地击杀敌人,心中的自己一定是这样的,

或者这样

再不济也就是这样了。

但其实真相却是......

这样

没错,其实你只有一双手和一把枪,早期的CS甚至连脚都看不到。

那你不禁要问,这是为什么???

答案当然是——为了省事。没错,就是为了省事,做一个完整的模型加动画可是要耗费不少时间和投入呢。反正玩家第一视角又看不到,做那么多不是浪费么?(老板:3D模型师一个月要不少工资呢,能省则省啊)

当然,还有第二个原因,就是第一人称视角下做一个完整的模型并应用进去效果其实是很差的,游戏中第一人称视角下最合适的比例与实际生活中是有差异的。假如我们做了一个完整的第三人称角色与换枪的动画,在第一视角下总会出现模型被遮挡甚至是穿模的问题,因此所有的第一人称动画与第三人称的动画就完全分开来做。

对于一些喜欢深究的同学,可能还有抱有一丝疑问,为什么我看到别的玩家就是正常的角色模型呢?

这涉及到网游的一些常识,你看到的确实是一个普通的第三人称的模型,但是这是在你的电脑上面,你的电脑上只有自己是一双手,其他的角色都是完整的,这是游戏开发者对网络游戏视觉同步的一种手段。

例子2:

关卡与场景范围。当我沉浸在《神秘海域》《巫师》《战神》等3A大作的时候,当我们眺望远处看着波澜壮阔的场景而感慨人生无常的时候,你一定不由得赞叹开发者竟能做出如此广袤又充满细节的场景。

但你一定没有想到,当你再次把摄像机从玩家的视角向远方移动的时候,所见之处的外面会是这个样子,到处是空荡荡的场景,远处白茫茫一片什么都没有。

虽然有点失望,但事实就是这样,为了性能我们不得不删点哪些玩家看不太到的东西。简单科普一点游戏开发常识,场景中的所有物体都是需要占用电脑内存空间的,同时场景里面的物物体越多,对渲染的压力也就越大。对于玩家看不到的场景,确实没有必要去做任何处理。

神秘海域里面,在火车战斗的那个关卡中,经常会把玩家的视角锁定在一个很小的密闭空间里,而这个时候很可能是场景在进行切换而并不想让你发现。

例子3:

2D游戏中的视觉误差。其实我们都知道2D游戏角色都是一张“纸片”,但是有的时候这个纸看起来好像还有点立体。比如下面这个版本的热血足球,里面的角色还真是一张张“立体的纸”。这种手法在游戏里面也是数不胜数。

其实宽泛一点说,电影、电视剧等也都是如此,而且相比游戏有过之而无不及,因为很多游戏中玩家都可以随意的调整视角,所见所听也就更为自由,而电影里面你只能看到“导演想让你看到的”场景。

2.隐藏与替换

游戏中常用的手段之二,当然大部分情况也是为了性能。

例子1:

超级玛丽中的草和云,玩了这么多年估计还没有多少玩家发现他们其实是一个图片,只不过是换了个颜色。早期的红白机里面,机器的性能与可利用的资源少得可怜,都是尽可能的利用好每一个像素的。

例子2:

巫师的分尸,我们看到像巫师这类的游戏有碎尸的效果。但是给模型按照刀砍的方向去分离又保证尸体的效果其实是比较困难的,同时如果各种尸体都是不同的模型对游戏性能造成一定影响,所以在玩家砍中的一瞬间会被替换成一个通用的血人模型。

例子3:

还有很多游戏里面的AOE的范围攻击(包括魔兽、dota等),很多游戏里面伤害监测并不是视觉上上的那个特效,而是隐藏在场景里面的一个物理碰撞盒。这里以英雄联盟女枪为例,当开启大招的时候,其实生成一个不可视的碰撞球,然后把这个球体不断的推向前方,这个过程中可能会扩大,达到锥形的效果。

例子4:

最后一个例子是FPS中的子弹,很多射击游戏的枪都是没有子弹的。你开枪的瞬间,立刻就用“射线检测”到是否打到对方,打到就立刻计算伤害,这个过程中不存在任何实体子弹。

在FPS游戏中,枪有两种,一种是hitcan射线枪,一种叫projectile实弹枪。如果你能看到子弹的飞行过程,同时有一定延迟和受到重力产生的向下偏移,那么这种情况下才是实弹枪,战地里面的枪就是projectile的。

3.其他技巧

例子1:

地震效果,基本上都是摄像机在震动,而不会去真正的改变场景中物体的位置。

例子2:

某些动态关卡,是整个场景在动,而玩家其实根本没有产生位移,我当年和同学做的第一款跑酷手游就是如此(下图)。我还记得腾讯的面试官问我为什么这样设计,我当时竟然没有回答出来???简单来说,可以节省关卡设计的复杂性,节省关卡占用的内存资源,对于与玩家相关的物理等处理也比较方便。

例子3:

游戏的水面真的只是个“水面”。游戏里面真正的水只是上面波动的那一层,下面其实什么都没有,你觉得潜入水中有水的效果其实只是加了个后处理(可以理解为滤镜)。

而水面看起来水表面看起来波光粼粼,其实可能只是给他贴了个特殊的2D图片(法线贴图),只不过这个图片自带阴影效果,造成视觉错觉。当然,想实现逼真的水面效果还需要非常多的技术与技巧,由于渲染这块涉及到的内容比较复杂,就不详细描述了。

总的来说,类似的“障眼法”还有很多很多,知乎上有一个问题就是专门讨论这个的,有兴趣的朋友可以进一步查看。

https://www.zhihu.com/question/41720683/answer/92652575

如果觉得文章有帮助请帮忙分享一下或者点一下在看,谢谢~

盘点游戏中那些“欺骗玩家眼睛的开发技巧”相关推荐

  1. 盘点游戏中那些“欺骗玩家眼睛的技巧”

    电子游戏从上世纪诞生以来,已经从简陋粗糙的2D画面成长到如今以假乱真的3D效果,交互上也从原来几个按钮进化到各种VR体感类型的可穿戴设备,游戏玩法和复杂度上更是上升到一门足够深入探讨的科学或艺术. 虽 ...

  2. cad黑色背景变成白色_盘点CAD中你可能不知道的实用小技巧

    相信对很多设计师朋友和刚学设计的小白来说CAD制图都是设计中用的较多的一个制图软件了,可是你知道吗在众多命令中其实有很多小技巧可以给我们节省不少时间呢,下面我就说说有那些实用小技巧吧! 1.文字镜像如 ...

  3. 游戏中的回放系统是如何实现的?

    这是[游戏开发那些事]第54篇原创 回放系统,是电子游戏中常见的一项功能.通过回放,我们可以观摩高手之间的对决,重复享受游戏中的精彩瞬间,甚至还可以拿到敌方玩家的比赛录像进行分析和学习.总的来说,回放 ...

  4. 简单的文本设计就能影响游戏体验?游戏中提升玩家体验的小设计

    除去少部分以"折磨"玩家为己任的"受苦"游戏,电子游戏其本质上还是为了给予使用者美好的体验. 除去游戏的画面.手感.音乐等等一些会直接影响玩家体验的重要要素, ...

  5. 游戏中的网络同步机制——Lockstep(转载)

    原文转自http://bindog.github.io/blog/2015/03/10/synchronization-in-multiplayer-networked-game-lockstep 0 ...

  6. 游戏中的网络同步机制(一)帧同步Lockstep

    转载自:https://www.jianshu.com/p/64b3f162dcf4 参考游戏中的网络同步机制--Lockstep 一.前言 每个人或多或少都接触过网游,那个虚拟的世界给予了我们无穷的 ...

  7. 游戏中的网络同步机制——Lockstep(帧同步)

    本文来自: https://bindog.github.io/blog/2015/03/10/synchronization-in-multiplayer-networked-game-lockste ...

  8. [unreal4入门系列之十二] 在UE4中创建非玩家角色(NPC)

    现在我们来创建一些NPC(non-playable characters,非玩家角色).在这个游戏中,当我们靠近NPC时,它们会做出相应的反应. 创建C++类 1) 在UE编辑器中,打开文件-新建C+ ...

  9. 【转】多人联机射击游戏中的设计模式应用(一)

    为了方便大家更加系统地学习和掌握各种常用的设计模式,下面通过一个综合实例--"多人联机射击游戏"来学习如何在实际开发中综合使用设计模式. 反恐精英(Counter-Strike, ...

最新文章

  1. insert size|single-read|Paired-end|Mate-pair
  2. C51汇编伪指令 CSEG DSEG
  3. Python+Django+SAE系列教程14-----使表单更安全
  4. Java线程:线程栈模型与线程的变量
  5. Python实训day11am【大作业思路梳理】
  6. 【学习笔记】第二章——信号量机制 用信号量实现互斥、同步
  7. python pexpect模块详解_python pexpect模块
  8. Python里的++和--不是运算符
  9. Vivado中的Incremental Compile增量编译技术详解
  10. php 实现贪心算法,python贪心算法如何实现 python贪心算法实现代码示例
  11. jTopo的基本使用
  12. SpringBoot生成条形码
  13. 计算机专业可以评电力工程职称吗,电力工程类职称评审专业范围,你了解多少?...
  14. Android设置状态栏的字体颜色
  15. html easyui怎么实现折叠面板,Easyui 创建折叠面板_EasyUI 教程
  16. python花猫_涨见识了,在终端执行 Python 代码的 6 种方式!
  17. php程序员学什么语言好就业_中高级PHP程序员应该掌握哪些技术?
  18. AS400 EBCDIC码转UTF-8码
  19. 兼职做淘宝客好吗?淘客APP怎么盈利?
  20. 一个手游外行怎样杀出万分之一创新血路(上篇)

热门文章

  1. IDEA中使用jdbc连接数据库
  2. LSTM实现时序羽毛球动作生成预测【源码分享】
  3. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day28,mysql教程入门到精通pdf
  4. Java使用Derby数据库
  5. 第十六周总结——清静
  6. 配置Tomcat服务器
  7. Oracle给用户授查询表权限,给oracle用户查询其它用户表的权限
  8. tomcat显示服务器端口被占用,启动Tomcat服务器端口被占用解决方法
  9. 零售转型电商三重门:双线+定价+物流
  10. Stirling公式的应用