这篇文章说说多人游戏。
如果你看过本系列的《游戏进度是如何恢复的?》,你就知道,当游戏在运行的时候,它把状态存储在内存中,而在某些特定的时刻,例如退出游戏时或者某一局游戏结束时,它会把一些数据抄送到硬盘里,以备将来的需要。在多人游戏里,仅仅把数据抄送到硬盘里并不能解决问题,比如当我们需要一个分数排行榜时,就得想办法收集每个人的分数,这时分数这个数据必须被抄送到一台远程计算机上,这台远程计算机就是服务器。
我们同样可以把服务器的内存和硬盘想象成一面巨大的墙,墙上有许许多多的抽屉。当你结束一局《水果忍者》,获得了567分,这时游戏会把你的名字和567这个数字寄送给服务器。服务器收到之后,会找一个抽屉,把567放到里面,然后在抽屉上贴一个标签,并在标签上写下你的名字。由于玩游戏的人很多,服务器会不断地收到许多人寄送来的数据,带标签的抽屉也会越来越多。
这时如果某个人点了“查看排行榜”的按钮,游戏会寄送一个“我要看排行榜”的请求给服务器,服务器收到后把当前所有抽屉的数据按分数高低排个序,再把这些数据给寄送回来,于是这个人就看到了《水果忍者》的分数排行榜。
一个很简单的过程,对吧?我们再看个稍微复杂点的。
《涂鸦跳跃》里有一个模式,可以让A、B两个人在线比赛,双方同时起跳,看谁先跳到一个指定的高度。在比赛过程中,每个人都得知道对方跳到哪了,所以当A的高度发生变化的时候,游戏会把这个新高度寄送给服务器,再由服务器转寄给B,B收到后就会立刻改变游戏里A角色的高度,反之亦然。于是双方都能在自己的iPhone里看到对方这时跳到哪里了。
以上两个例子有一个共同的特点:游戏的状态是通过一台公共服务器来维护的,不同的人通过它改变游戏的状态,也通过它获取当前的游戏状态,从而共享着一个虚拟的世界。绝大部分多人游戏正是通过这种模式来实现的。
多人游戏的本质使得它具有很强的社会性:它一方面涵盖了人和计算机的互动,另一方面孕育了人与人之间的各种关系。这种关系有很多,可能是野外打怪时的一次偶遇;可能是集市交易时的讨价还价;可能在副本任务中互相配合;也可能在竞技场里拼个你死我活或者在排行榜上争个你强我弱。
我们完全可以把多人游戏当做是一个虚拟社会。电影《黑客帝国》的Matrix实际上就像是一款多人游戏,大部分人沉迷其中以为这就是真正的生活,而少数觉醒者发现自己是用生命在玩游戏后,壮士断网,愤然下线,来到了革命根据地锡安,在这里展开了轰轰烈烈的反矩阵运动,尴尬的是,锡安或许也只是另外一款游戏而已。
我们还可以把微博、论坛等社区看做是一款多人游戏,用户在这里扮演着自己的角色,涨粉升级拿称号,混帮派,打团战,玩得不亦乐乎。前文曾提起过Avatar这个词,说它有神灵下凡、附体的本意,是游戏者在虚拟世界里的象征,而很多社交站点里的用户头像就叫做Avatar。
不用等到未来,即使在眼下,虚拟社会和真实社会的关系已经是一个值得讨论的问题,如果大家对这方面的话题有兴趣,欢迎在此评论。
下一篇《数据是怎么保存的?》