HeadlinesBriefing favicon HeadlinesBriefing.com

RuneScape di 56k pada 2004

Hacker News •
×

Pada 2004, saya bermain RuneScape dengan modem 56k yang mati setiap kali ibu saya mengangkat telepon. Dunia 3D dengan hingga beberapa ribu pemain berjalan sepenuhnya di browser. Ini berfungsi karena latihan berkelanjutan untuk tidak menghabiskan byte.

Saat mengklik selatan, setiap byte melintasi dari klik ke server ke layar pemain lain. Pompa tengah, Varrock Square. Detailnya berasal dari klien RuneScape 2 yang didekompilasi pada 2004.

Batasannya ketat: modem 56k sinkronisasi pada 56 kilobit per detik downstream, sekitar 5 KB/s, dengan lebih sedikit upstream. Broadband tersedia sejak 2000, tetapi kebanyakan rumah di Inggris masih memakai dial-up hingga akhir 2000-an. Applet Java berjalan di sandbox keamanan, yang memblokir socket native mentukan dan UDP.

Setiap byte melintasi melalui satu koneksi TCP, urut, dengan overhead per segmen. Server game bergerak dalam siklus diskret sekitar 600 milidetik. Setelah handshake login, lapisan enkripsi kecil ditetapkan.

Setiap paket dimulai dengan byte opcode, dienkripsi dengan cipher aliran yang disebut ISAAC. Dua aliran ada - satu klien ke server, satu terbalik. Kedua sisi membutuhkan kedua aliran itu.

Klien menghasilkan dua integer benih; server menyediakan yang lainnya sebagai bagian dari handshake. Aliran server ke klien menambahkan 50 pada setiap kata untuk memisahkan arah. Di luar, satu baris mengenkripsi opcode: putOpcode(int opcode) { this.putByte(opcode + this.outboundCipher.value()); } Di dalam, cerminan mengambilnya kembali: currentOpcode = (currentOpcode - this.inboundCipher.value()) & 0xFF; Hanya opcode yang dienkripsi, melindungi dari parser pihak ketiga.

Mengirimkan permintaan jalan memicu pencarian lebar sebelum networking terjadi.