HeadlinesBriefing favicon HeadlinesBriefing.com

2004年56k拨号运行RuneScape

Hacker News •
×

2004年,我用56k调制解调器玩RuneScape,每次我母亲拿起电话就掉线。一个3D世界最多有几千名玩家,完全在浏览器中运行。之所以能工作,是因为这是一项持续的字节浪费练习。点击北方的某个瓦片时,每一字节都要从点击传到服务器,再传到另一名玩家的屏幕上。中央水 fountain,Varrock Square。细节来自解编译的2004年RuneScape 2客户端。约束条件严格:56k调制解调器下行速率为56千比特每秒,大约每秒5 KB,上行更少。2000年 broadband就可用了,但大多数英国家庭直到2000年代后期仍坚持使用拨号上网。Java小程序运行在安全沙箱中,阻止原始本地套接字和UDP。每一字节都通过单个TCP连接传输,按序到达,带有分段开销。游戏服务器以大约600毫秒为一个离散周期运行。登录握手后,设置一个小型加密层。每个数据包以操作码字节开头,用名为ISAAC的流密码加密。存在两个流——一个从客户端到服务器,一个反向。双方都需要这两个流。客户端生成两个种子整数;服务器在握手期间提供另外两个作为其一部分。服务器到客户端的流在每个单词上添加50,以保持方向分离。传出时,一行代码加密操作码:putOpcode(int opcode) { this.putByte(opcode + this.outboundCipher.value()); } 接收端以镜像方式检索它:currentOpcode = (currentOpcode - this.inboundCipher.value()) & 0xFF;只有操作码被加密,防止第三方解析器。发送行走请求会在任何网络通信之前触发广度优先搜索。