游戏和动画有什么不同?(如何理解游戏系列)


游戏和动画有什么不同?(如何理解游戏系列)_第1张图片
图片来源:Halfbrick

在说正题之前,先说说动画。

细说起来,我接触动画挺早的。初中那会,在上天的眷顾之下,我拥有了一个爱画黄色漫画的同桌,也正是在他的引领下,我接触到了动画。他常用铅笔在课本右下角勾一些线条,通常都是两个小人变身互放龟波气功的场景,等每页都画上了,用手一撩拨,噼里啪啦地就放出了一段精彩的动画。

多年以后,他到一家游戏公司做美术设计,而我也终于知道,这就是传说中的逐帧动画。

怎么理解逐帧动画呢?

想象一下你把一个西瓜往天上扔,同时让远处的小伙伴给它来个疯狂十连拍。一阵卡擦过后,你就得到了十张照片。一旦这些照片以足够的速度在你眼前逐张闪过,我们就会看到一个西瓜做抛体运动(东西被往天上甩时所作的运动)的动画。

我们把这些照片里的每一张叫做一帧;而这些照片闪过的速度,则是用帧率来衡量,我们说一个动画帧率为24 FPS,就是说它一秒钟会播放24帧。

那么,游戏跟动画有什么区别?

我们以半块砖工作室开发的风靡全球的游戏——《水果忍者》为例,来说明一下这个问题。

当你在iPhone上玩这款游戏的时候,你的iPhone会以每秒几十帧的速度在屏幕上画西瓜,由于每帧里西瓜的位置不同——刚开始西瓜被画在屏幕左下角,过一会它被画在屏幕上部,最后又被画在右下角——你最后就看到了一个正在做抛体运动的西瓜。

那么,一个显而易见的问题来了:这些帧又不是十连拍拍下来的,它们是怎么画出来的?或者说,这西瓜怎么就知道自己要做抛体运动?它怎么就不飞出屏幕去或者飞一半自己爆掉呢?

答案是你的iPhone在两帧之间的空隙处做了很多工作,这些工作决定了这个西瓜的行为,我们把这些工作叫做计算。

假设第一帧的时候西瓜位于左下角,iPhone把这一帧画完后,就得开始思考下一帧它得画在哪这个问题。回顾一下你曾经学过的经典物理课程:如果我们知道一个东西此刻的位置、速度和加速度,就可以计算出若干时间(例如一帧)后它所处的新位置。你的iPhone正是根据西瓜第一帧的物理参数,来计算它下一帧的位置,一旦算出来了,它才开始画下一帧。

当然,计算这件事实际上是由程序员们写的代码来实现的。不同的游戏需要计算不同的东西,比如《反恐精英》需要计算弹道轨迹、《极品飞车》需要计算赛道摩擦、《瘟疫公司》需要计算病毒扩散。他们都有自己的一套代码。

诸如位置、速度这一大坨参数,在游戏开发里我们管它们叫做状态。某一帧的状态决定了这一帧的画面。所谓的计算,实际上就是一个状态到另一个状态的变化,而整个游戏的运行,则是状态不断变化,画面也跟着不断变化的过程。

这种状态不断变化的东西叫做状态机。游戏在本质上就是一个状态机。

游戏跟动画之间最大的区别也正在于此。对于动画来说,它只要把每一帧的画面依次显示出来就可以了,但游戏需要在两个帧之间进行计算,在计算出新的状态后,才能渲染。

ok,现在我们知道游戏世界里那个西瓜是怎么知道自己要做抛体运动的,但还有个无聊的问题:刚才在真实世界里被你抛到天上的那个能吃的西瓜,又是怎么知道自己要做抛体运动呢?它怎么不飞出地球或者飞一半自己爆掉呢?

这个问题似乎还没有答案。有一些物理学家和哲学家认为这个世界的一切事物本质上都是信息,而整个宇宙则是一次不断计算着的游戏。类似的想法在艺术领域催生了很多有名的作品,比如大家熟悉的《黑客帝国》和《盗梦空间》。事实上,我们的宇宙的确有一个最小的时间单位,叫做普朗克时间,约为5.39e−44秒。这么看来,如果宇宙真是一款游戏,这帧率还挺高,应该不卡——不过谁知道呢。

跟其它艺术形式相比,游戏在构建虚拟世界这事上有得天独厚的优势。因为它们在本质上是一个状态机,所以这个虚拟世界可以有自己的规则,就好像真实的世界有各种科学定律一样,而更出彩的是,这个虚拟世界不是封闭的,它可以接受来自外界的信息——当你的手指在屏幕上划过时,那个西瓜就会啪地爆开。这是我们在下篇文章里要说的用户事件,敬请期待。

下一篇《西瓜是怎样被切掉的?》

你可能感兴趣的:(游戏和动画有什么不同?(如何理解游戏系列))