网络游戏
1970s-1990s - now
Tribes(部落)
Age of Empires(帝国时代)
在线游戏简史
1970s-大学主机游戏
1990s中期开始流行
本地多人在线游戏
一台电脑支持多玩家。
1958 双人网球(tennis for two)
1962 年 spacewar(空战)
实现方法和单人游戏类似,只是多视角,可多人操作
最早的多人在线游戏
University of Illinois - PLATO 主机系统
-1973年 回合制策略游戏 Empire
-同年 第一人称游戏 Maze War
串行端口本用于外接设备,也可以连接两台电脑。
1980年12月号 BYTE Magazine 发布文章
MultiMachine Games in BASIC(Wasserman and Stryker 1980)
串行端口只能连接两台电脑,如想连接多人,就需要使用daisy china 环路。这可以认为是一种网络拓普。
但是游戏技术不成熟,一直到1990年才出现有吸引力的网络游戏
MUD
一主机同时连接多人的游戏,游戏名称起源于1978年的MUD(Essex University - Rob Trushaw),MUD可以看成是早期的龙与地下城,当时只在大学内流行
个人PC兴起后,借用电话线游戏也可以在大学外联网,然后兴起了BBS MUD
局域网游戏
1993 DOOM 死亡竞技场模块
在线游戏
1996 - id software Quake
1998 - Epic Unreal
2000s - XBOX LIVE,PS NETWORK
PC-based GameSpy DWANGO
大型多人在线在线
MMORPG
MMOFPS
Quantum Link -后来的 American Online
Habitat(1986)
Morningstar and Farmer(1991)
Ultima Online(1997)
EverQuest(1999)
World of Warcraft(2004)
移动网络游戏
非即时(短连接)
即时(长连接)
Starsiege:Tribes
1998年 科幻题材FPS,支持128人Lan或者网络对战,几百秒的延迟非常普遍
延迟模型的设计非常重要
游戏数据分类
非必须数据
必须数据(如发射子弹)
状态更新数据(可以延迟的)
优先数据(越快越好,例如移动信息)
服务模型
CS
P2P
基本网络模型
游戏模拟层
Ghost 管理器 移动管理器 事件管理器 其它
流管理器
链接管理器
平台包模块
平台包模块
对传输得到的数据进行处理,用底层socketAPI 对数据进行封装。
Tribes 使用了不稳定协议,开发者需要处理数据让数据可靠。Tribes实现了一个自定义的可靠层,但是这一层的实现不在平台封包层,而且ghost 管理器,移动管理器和事件管理器中处理
连接管理器
网络上连接两台计算机的抽象层。它从流管理器接收数据,把数据传给平台包模块。
本层不保证数据的可靠性,但是会通知上层(流管理器
)传输状态通知
流管理器
流量的控制
控制数据的最大传输率。使用28k 包的传输率是10包没秒,每包200byte。以此为基本单位保证服务器连接多少客户端传输的数据总量不至于导致崩溃
数据的排队
根据游戏数据分类和模块不同进行优先级处理,一般移动,事件和ghost管理优先
note
因为间隔和包大小被流管理器控制,所以一个包的消息有可能来自多个模块
事件管理器
事件队列,可靠时间和不可靠事件。可靠事件发送失败继续发送,不可靠时间发送失败后直接抛弃
数据镜像管理器
复制对象,决定什么需要知道,什么不需要知道,什么需要先知道,什么后知道也可以
移动管理器
其他系统
静态数据管理器
Age of Empires
与FPS不同,RTS如8人在线最多有1600单位,所以帝国时代的工程师针对每个玩家进行指令同步。最专业的玩家每分钟也只能操作300条指令。所以传输的信息不是游戏单位的而是玩家的操作
P2P
Turn Timer
每200毫秒1指令回合,第50指令会和的指令在第52回合不在执行。
超过200毫秒的补救措施?
同步
安全问题
随机数同步
原文:http://www.cnblogs.com/ohdaya/p/5221519.html