盘点游戏中那些“欺骗玩家眼睛的技巧”
电子游戏从上世纪诞生以来,已经从简陋粗糙的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
结语
其实游戏世界本身就是一个“虚拟”甚至虚假的世界,游戏开发者就是游戏世界的神,你可以获取游戏里面所有npc与玩家的信息然后对这些信息进行逻辑处理。
盘点游戏中那些“欺骗玩家眼睛的技巧”相关推荐
- 盘点游戏中那些“欺骗玩家眼睛的开发技巧”
电子游戏从上世纪诞生以来,已经从简陋粗糙的2D画面成长到如今以假乱真的3D效果,交互上也从原来几个简单按钮进化到各种VR体感类型的可穿戴设备,游戏玩法和复杂度上更是上升到一门足够深入探讨的科学与艺术. ...
- rust原地复活_rust腐蚀游戏新手入门必知小技巧 Rust腐蚀游戏中的12个实用小技巧...
rust腐蚀游戏新手入门必知小技巧,想必还有很多小伙伴还不太了解,下面小编给大家带来了Rust腐蚀游戏中的12个实用小技巧,一起来看看吧. rust腐蚀游戏新手入门必知小技巧 Rust腐蚀游戏中的12 ...
- rust腐蚀网页游戏_Rust腐蚀游戏中的12个实用小技巧
Rust腐蚀游戏中的12个实用小技巧 2020-08-05作者:网络来源:网络 Rust是一款第一人称生存网络游戏,有点像野外求生,但这款游戏内容则更加丰富.刺激.血腥. 在这款游戏中玩家的第一任务就 ...
- 游戏中汉字显示的实现与技巧
转自: http://www.cppblog.com/richardhe/archive/2009/01/04/63851.html 游戏中汉字显示的实现与技巧[ZZ] 作者:炎龙工作室 千里马肝 版 ...
- 游戏中的实时光线追踪技术与技巧
提到游戏使用的实时渲染,很多人都会觉得光栅化渲染是唯一的方法,而想要在游戏中使用实时的光线追踪,似乎还是遥远的梦想. 虽然整体的光线追踪实时渲染架构以及相关硬件还在试验阶段,但从2016GDC的技术展 ...
- 游戏中的回放系统是如何实现的?
这是[游戏开发那些事]第54篇原创 回放系统,是电子游戏中常见的一项功能.通过回放,我们可以观摩高手之间的对决,重复享受游戏中的精彩瞬间,甚至还可以拿到敌方玩家的比赛录像进行分析和学习.总的来说,回放 ...
- 简单的文本设计就能影响游戏体验?游戏中提升玩家体验的小设计
除去少部分以"折磨"玩家为己任的"受苦"游戏,电子游戏其本质上还是为了给予使用者美好的体验. 除去游戏的画面.手感.音乐等等一些会直接影响玩家体验的重要要素, ...
- 游戏中的网络同步机制——Lockstep(转载)
原文转自http://bindog.github.io/blog/2015/03/10/synchronization-in-multiplayer-networked-game-lockstep 0 ...
- 游戏中的网络同步机制(一)帧同步Lockstep
转载自:https://www.jianshu.com/p/64b3f162dcf4 参考游戏中的网络同步机制--Lockstep 一.前言 每个人或多或少都接触过网游,那个虚拟的世界给予了我们无穷的 ...
最新文章
- 聊聊数据库优化的4大手段
- CAShapeLayer和CAGradientLayer
- linux环境安装部署mark
- 洛谷P1040 加分二叉树运用区间DP(动态规划)求解
- 【转】php利用mkdir创建多级目录
- LeetCode 849. 到最近的人的最大距离
- 戴尔XPS-13超级本赏析
- Memcached、MongoDB、Redis和tokyotyrant
- 服务器webpack构建性能,[译] 优化 WEBPACK 以更快地构建 REACT
- Codeforces - 1176E - Cover it! - bfs
- Cocos2d-x三种定时器启用和停止
- securityPolicy与安全策略等级配置
- Junit第一次使用
- EFRCN对应频段号
- html 在线打开word文件,Html打开pdf、word、xls等文件
- 微信跳一跳小游戏源码
- “无边框”引发口水大战 供应链考验手机硬件创新
- Godot实现项目差异热更新
- LED显示按键控制 CT1642、PT6964(1)
- nginx locating匹配问题(1) ---cookie
热门文章
- 日积月累的名典[2014-10-7]
- UI设计教程分享:字体变形—阴阳收缩法
- Xamarin 构建提示 error APT2260 resource 找不到资源
- 不小心删了sxos文件夹_修复rpm命令(不小心删了rpm命令)方法
- 趣谈Linux操作系统随笔——2.0 从BIOS到bootloader:创业伊始,有活儿老板自己上
- RTK-RTD-SBAS-WAAS-PPP-PPK-WADGPS
- 为什么众多IT名人都在悼念金庸?
- sap 奇葩问题SYSTEM_CORE_DUMPED
- 计算机专业常用的学术搜索引擎
- 干部智能工作平台 ——助力干部管理工作数字化改革