最近在读Square Enix的工程师中嶋谦互的《网络游戏技术核心》,可以让开发者对MO的开发有全面系统的了解,书写的非常棒。谈谈作者,他最早负责《最终幻想9》的开发。该书曾经获得CEDEC大奖,
许多开发者可能更为熟悉GDC等,CEDEC是在日本横滨举行的开发者会议,和GDC的探讨非常类似,旨在于游戏技术和开发主题的探讨。
下面就引用一些最概括的问题走一遍本书的流程。
1.架构模式
C/S架构就是我们广泛接触的MMORPG大量启用的,这种带宽数据量往往比较小,对游戏的反应速度没有那么快。RPG类游戏非常适合。但是像Call of duty或是Titanfall就显得捉急,因为这种快节奏游戏的数据的吞吐量往往是前者的3倍。
所以你肯定会纳闷为什么Call of duty不能像MMORPG那种出现盛大的千人大战场面。
这种架构的方法往往是需要企业有一个专用服务器,玩家的客户端和服务器之间交换数据。
我们玩到的主机游戏大量使用P2P架构,这种架构在Player之间建立网络架构,可以使用星形或是网状结构。但是因为玩家之间不能通过全局ip来建立连接,当前使用了NAT技术,可以穿透来进行连接。
当然这两种技术可以混合使用。
还有一种玩家经常抱着3DS或者PSV进行《怪物猎人》,这就是Ad-Hoc连接模式。他们不会借助互联网,而是会使用局部的无线LAN等,高中时期我还见过红外线的电子词典联网游戏。大都是讨厌的仙侠RPG。
2.得谈一下MO和MMORPG的特点:
MO:我们拿Titanfall举例,游戏的节奏非常快,连接人数不会超过百人,往往20多分钟一局就结束了,游戏的数据是一次性的。同步与异步方式
MMO:魔兽世界呗,人数众多,数据量要进行保存。浏览器方式
魔兽世界用到了MMO和MO混合,保持了两种架构在不同模式下的优劣,但开发难度却非常大。
3.同步和异步
举一个例子,我们在玩Titanfall的时候,大家都控制自己的角色,得要想办法将所有玩家的状态统一起来,他们的位置,行动,枪支状态进行统一全局管理然后让大家同步进行。否则大家看到不一样的情况就糟了。这就是同步
比如我们使用POV叙述:
我:驾驶titan射击你,你躲避。
你:敌人驾驶titan射我,我得躲避。
总线型的网络布局可以这样做,玩家的客户端之间老老实实的将互相的操作信息发送给对方即可(好像说的很容易,其实相当复杂)。
这要求我们要做到以下几点:
①初始状态得相同
②随机数种子各个客户端都一样
③循环过程:
a.所有终端进行输入信息,在全部接收完成前处于等待状态
b.从玩家A-Z轮询处理
c.渲染
d.受理下一个操作
e.发送自己这部分输入信息