技术贴带你走进游戏世界,游戏进度如何恢复

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

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

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

所谓状态,就是某一个时刻游戏里所有参数的取值。

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

这里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年人类就可以把自己的大脑永久化到计算机里面,从而避免死亡。如果有幸(或不幸?)被他言中,那么各位,三十年后,我们内存里见。

时间: 2024-07-31 00:32:30

技术贴带你走进游戏世界,游戏进度如何恢复的相关文章

一起谈.NET技术,带你走进缓存世界

我们搞程序的多多少少都了解点算法.总体来讲,算法是什么?算法就是"时间"和"空间"的互换策略.我们常常考究一个算法的时间复杂度或空间复杂度,如果我们有绝对足够的时间或空间,那么算法就不需要了,可惜这种条件是不存在的,只是在某些情况下相对来说我们不用去考虑其中一个.今天我们讨论的"缓存",自然就是"用空间换时间"的算法. 缓存就是把一些数据暂时存放于某些地方,可能是内存,也有可能硬盘.总之,目的就是为了避免某些耗时的操作.我们常

“.NET研究”带你走进缓存世界

我们搞程序的多多少少都了解点算法.总体来讲,算法是什么?算法就是"时间"和"空间"的互换策略.我们常常考究一个算法的时间复杂度或空间复杂度,如果我们有绝对足够的时间或空间,那么算法就不需要了,可惜这种条件是不存在的,只是在某些情况下相对来说我们不用去考虑其中一个.今天我们讨论的"缓存",自然就是"用空间换时间"的算法. 缓存就是把一些数据暂时存放于某些地方,可能是内存,也有可能硬盘.总之,目的就是为了避免某些耗时的操作.我们常

KVM虚拟化带你走进桌面世界

可以毫不夸张地说,这年头市面上的虚拟化工具不计其数,多得连维基百科都统计不过来.可是,KVM在其中脱颖而出,也许是由于它是唯一免费的.非商业的.开源的虚拟机管理程序,设计当初就着眼于企业级性能.虽然它问世时间相对不长,却取得了长足进展--实际上,现在也许是时候把它作为服务器和桌面端的虚拟化解决方案来考虑. KVM代表基于内核的虚拟机,它与KVM(键盘.显示器和鼠标)切换器没有一点关系.与大多数主要的竞争对手(包括VMware的虚拟机管理程序.VirtualBox和Xen)相比,KVM这个项目显得

桃花坞商城带您走进情趣世界

情趣内衣越来越受到人们的欢迎,不同的元素结合到内衣中,让女人表现出了不同的美感.随着网络购物的兴起,广大用户购买情趣内衣也已经习惯了这样的一种方式,可以说网购渐渐成了人们日常生活中密不可分的一部分.而正是这一购物渠道,彻底打开了人们对情趣内衣表现出来的保守态度.桃花坞商城认为,作为女性用品的性感情趣内衣也赶上了这一潮流,已经从实体店进军到网络之中,情趣内衣未来的市场发展将会呈现逐步攀升的趋势. 人们的审美意识跟着欧美文化进入,逐渐对内衣有了新的熟悉,内衣有了多元化的发展,不同外形花色的文胸泛起,

用好照片HDR功能构筑你的3D游戏世界

HDR本来模拟了人眼能看到的真实世界的动态范围,而很多摄影师反映说,刚开始使用HDR时,对合成出来的图片效果感到非常不习惯,不管是选择哪一种色调映射,始终觉得有点假. 事实上这种假的感觉是正常的,近十年来数码机器的普及和推广,让人们完全适应了数码影像世界,而数码相机能记录下的动态范围和HDR相比是极小的.当低动态范围照片已经在你脑海中形成界定映像后,高动态范围的照片自然会让你不习惯,而这种不习惯就会导致"假"的感觉.如果摄影从一开始就是HDR,那么你在看到今天的数码相机一次性成像的照片

android 自带webview 加载html5游戏

问题描述 android 自带webview 加载html5游戏 android 自带webview加载html5游戏不流畅,但在微信内置浏览或是UC等浏览器中玩的就很流畅,该怎么样优化webview能像在微信中玩h5游戏一样流畅? 解决方案 自己写webview就算了,看看有没有开源的吧,应该有很多

【阿里云大学LIVE】烧脑,还是末日?1月17日晚8点,阿里云研究院田丰院长带你走进AI的世界,亲密互动可以有~

       [阿里云大学LIVE]又跟大家见面啦,这一期由阿里云研究院田丰院长带大家走进AI的世界,如果您对人工智能有兴趣,有疑问,有想法,请在文章评论中留下,田丰老师将在直播中为您一一解答哦. 前段时间有个美剧特别火,最后两集几乎引起了所有影视相关的大号发文讨论.这就是颠覆我们世界观的<西部世界>.        <西部世界>为我们构建了一个诡谲的机器人乐园,在那里,人类和机器人相互厮杀,人类要奴役机器人,而机器人要窥破思维的秘密,像人一样具有意识,二者的界限在压迫与反抗中逐渐

《DayZ》新截图放出 视觉效果升级游戏世界更真实

Dean "Rocket" Hall今日放出了<DayZ>独立版的几组新截图.不光如此,Dean也同时透露了关于游戏http://www.aliyun.com/zixun/aggregation/8936.html">视觉效果的一些趣事.<DayZ>独立版将支持Volumetric Cloud系统,这个系统有不同的光影特效和材质,这会使本游戏的画面质量提高不止一个档次. 游戏截图 Dean说道,Volumetric Cloud system现在已

《TERA》玩家乐搞明星被搬进TERA游戏世界

(编译/小熙)虽然距离NHN巨作.韩国期待作之一的<TERA>的正式公测还有几天,但是游戏的自定义系统日前已经提前对玩家开放."闲来无事"的<TERA>玩家就利用游戏形象系统,"捏造"了几位韩国明星的形象,安吉丽娜朱莉.Rain.少女时代的泰妍.元彬等等韩国观众所喜爱的人物形象均被一一搬进了TERA的游戏世界. 利用高科技进行捏人设置的<TERA>,人物形态可谓是逼真,下面让我们一起看看吧! 这位帅锅是.....对的!就算淡出荧幕