游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7107|回复: 7

[分享] 如何理解游戏:游戏进度是如何恢复的?

[复制链接]

8360

主题

9283

帖子

2万

积分

论坛元老

Rank: 8Rank: 8

积分
29945
发表于 2015-3-27 17:36:45 | 显示全部楼层 |阅读模式
  文/ 林博昱  授权GameRes游资网发布。林博昱,游戏制作人,大约三四年的从业经验。两年前牵头成立了一个创业团队,致力于休闲游戏的开发。

  喜欢玩游戏的人很多,但游戏作为一门复杂的艺术形式,它的生产原理并不被广大玩家们所理解;而游戏开发团队里的设计、美术、运营等非技术类的从业者,很多时候也会对游戏开发的原理产生疑问。

  我常常为上述第二件事感到苦恼,因为这是一个看似正常实则对游戏最终品质有很大影响的状况。为了解决这个苦恼,我给这些非技术类的同事们讲了几节课,试图用比较浅显的语言和更加具象化的表述来讲述技术上的来龙去脉。积累了一段时间后,就有了这个系列的几篇短文。每篇短文针对游戏开发中的某个特定主题,做一个浅显的介绍

  相关阅读:如何理解游戏:游戏与动画的不同及游戏内事件的实现
       如何理解游戏:图片是怎么画到屏幕上的


37418719.jpg

  前段时间微博上有个很火的游戏《2048》。我们以它为例子,继续谈谈游戏中的状态。如果你没玩过这个游戏,这就点开玩玩吧,我们九个小时后见。

  在之前的文章里,我们聊过状态。所谓状态,就是某一个时刻游戏里所有参数的取值。

  《水果忍者》的参数是某个西瓜的位置或某根香蕉的速度,而《2048》的参数则是格子上的16个数字。在任何一个时刻,游戏的状态都能用16个数字来表示:

11.jpg

  这里0表示这个格子上没有数字。

  游戏运行的时候,你的iPhone会在自己的内存里划出一块空间来存储这16个数字。考虑到这里有少数读者并非程序员,我想有必要解释一下这句话。我们可以把内存想象成一面巨大的墙,墙上有无数个抽屉,每个抽屉里可以放一个数字。刚才那句话的意思就是,你的iPhone会在这面墙上打开16个抽屉,并把上面的16数字依次放进这些抽屉里。做完这件事,《2048》的第一个状态就出现了。接着,游戏开始接收你的输入,改变状态(也就是改变抽屉里的那些数字),接收输入,改变状态,如此循环不息。每一个状态都像是浮生一瞥,转瞬即逝。

  正当你玩得很high的时候,你的好基友打了个电话给你,跟你探讨人为什么要活着这个问题,你们聊了很久,直到手机聊没电了,你才突然想起来自己刚才只差几步就合到2048了!等你颤抖着双手给iPhone插上电源,满怀希望地再次打开游戏:擦!进度没了!

  这是为什么呢?因为iPhone关机重新启动后,内存抽屉里的数字都是会被清理掉的,也就是说你当你重新打开游戏时,它不知道自己上次的状态是什么,只能重新开始。

  那怎么办?没关系,我们还有硬盘。

  我们不妨把硬盘理解成另外一面更大的墙,墙上有更多的抽屉,而这些抽屉里的数字是不会因为iPhone重启而被清理掉的。为了恢复游戏进度,我们得在基友来电的时候,就把内存抽屉里的数字抄一份存在硬盘抽屉里,机子一旦重启了,我们就可以把硬盘抽屉里的数字再抄回到被清空的内存抽屉里来。这样游戏就可以知道机子重启前的状态是什么了。

  这个把数据抄到硬盘里的过程叫做持久化(persistence),顾名思义,它可以让游戏的状态在硬盘里永久性地驻留下来。状态持久化有很多方式,我们可以把这些数据存在文本文件或者是数据库里。假如我们以文本文件的方式来持久化《2048》的状态,那么持久化后,你会在iPhone的硬盘里发现一个叫做「游戏状态.txt」的文件,打开这个文件,你可以在里面发现16个数字。

  这里说一下,这个系列的短文是以易读而不是细致为目的,就说持久化这事,实际上还它涉及数据加密等诸多过程,这里就不一一赘述了;另外,这个系列也并非开发教程,如果一个程序员胆敢把文件命名为「游戏状态.txt」,相信他很快就会被同事们烧掉的。

  说到永驻这个词,很多人都想在前面加上青春两个字。电影《阿凡达》里,主角在影片结束前把它大脑里的所有信息都传输到了Avatar的大脑里,从此过上了幸福而快乐的生活。这个过程有个说法叫Mind Uploading,就是把大脑里的信息传输到其它介质上的意思。未来学家、Google技术总监Ray Kurzweil曾说过,2045年人类就可以把自己的大脑永久化到计算机里面,从而避免死亡。如果有幸(或不幸?)被他言中,那么各位,三十年后,我们内存里见。

9

主题

104

帖子

625

积分

高级会员

Rank: 4

积分
625
发表于 2015-3-27 21:21:27 | 显示全部楼层
作者写作的文风很浮夸,举例不够细致明了。不知道写出来的策划案是不是条理清晰,逻辑严谨。

然后全篇讲了一个内存和外存的东西,也是醉了···

0

主题

8

帖子

72

积分

注册会员

Rank: 2

积分
72
发表于 2015-3-28 10:42:10 | 显示全部楼层
说得好,但这毫无意义!

13

主题

832

帖子

1875

积分

金牌会员

空想家

Rank: 6Rank: 6

积分
1875
发表于 2015-3-28 10:58:29 | 显示全部楼层
怎么说呢。还真得找一个非技术类的同事才能评价这文章的价值吧……

5

主题

137

帖子

678

积分

高级会员

Rank: 4

积分
678
发表于 2015-3-28 19:13:36 | 显示全部楼层
不知道为什么这个系列的文章居然一直能被GameRes推荐。刚入行的新人看了还以为策划真就应该这样跟美术、运营同事沟通,太误导人了简直。

17

主题

330

帖子

591

积分

高级会员

非知名游戏制作人

Rank: 4

积分
591
QQ
发表于 2015-3-28 22:24:23 | 显示全部楼层
大神啊,膜拜一下~

0

主题

16

帖子

128

积分

注册会员

Rank: 2

积分
128
发表于 2015-3-29 12:48:29 | 显示全部楼层
整个系列都把很简单的一两句话长篇大论,而真正的原理又没有详细涉及,看着更像是给对计算机完全未接触人的启蒙。但当我拿过初二的妹妹的课本,也比这个详尽百倍。

4

主题

86

帖子

843

积分

高级会员

Rank: 4

积分
843
发表于 2015-3-30 12:27:40 | 显示全部楼层
看题目以为是什么好文,但是看一句兴趣全无

这种文章没必要上GameRes
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-23 22:43

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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