本文讨论实时多人在线游戏的服务器和客户端技术。
实时多人在线游戏主要包括2类,FPS(quake系列,UT系列,CF等),ACT(DNF,龙之谷这类)
其共同特点是需要用户操作尽快的得到体现。并且所有客户端的结果要一致。
同一世界玩家数量较少(这是有原因的,下面讨论),有较真实的物理效果模拟。
通用的C/S做法:
A. 客户端采样输入数据->Server处理数据->分发结果。
其他不可靠的实现方法:
B.客户端采样计算动作结果->通知server(校验)->分发结果
或者p2p ->>>>>>>>>>分发到其他client
这里输入数据就是用户的操作,比如开火/技能,移动这些。
A.做法所有数据在服务器上面处理,因为客户端不可能直接修改服务器数据,所以数据是可信的(利用bug除外)
由于数据在服务器处理,所以结果一定会有延迟(传输时间)
B.做法的不可靠在于数据的处理是由客户端进行,由于客户端hack可能具有很大的作弊空间(DNF/洛奇全屏秒怪什么的)。加上server端校验可以一定程度上减少作弊。
好处是所有结果本地立即获得,客户端体验很好。
另外在客户端相互作用时,因为延迟的关系,可能会有很奇怪的同步效果(跑跑卡丁车被影子撞飞)。
下面只讨论A的实现
===============