2004年のRuneScapeは、56kダイヤルアップでどうやってマルチプレイヤーRPGを実現したのか
2004 RuneScape fit a multiplayer RPG into 56k dial-up

2004年、Jagexは56kモデムという極めて限られた帯域幅で、数千人規模のプレイヤーが同時接続する3DマルチプレイヤーRPGをブラウザ上で動作させていました。本稿では、プレイヤーの移動操作がどのように圧縮され、サーバーに送信されるかを、デコンパイルされたクライアントのコードを基に解説します。歩行リクエストのパケットはわずか7バイトで、位置情報は差分として送信されます。また、サーバーは600msごとに状態を更新し、プレイヤー更新パケットではビット単位の圧縮技術を用いて帯域幅を節約しています。
「変更がない」という状態が非常に安価なのは、まさにクライアントがすでにデータを持っているからであり、サーバーはそれがまだ有効であることを確認するだけなのだ。
HNでの議論
78- akersten
著者にもっとアンチチートの詳細と、それが時間とともにどう進化してきたかを掘り下げてほしかった。Jagexは2005年頃にはマウスの動きのヒューリスティックに基づいてボットを禁止していた。20年後、ここフロントページにあるJSフレームワークが、同じ種類の分析を革命的な新しいアプローチとして称賛している。現代のアンチチートエンジンが何を伴うのか想像もつかない。特に、人間のプレイヤーを確実に模倣できるLLMの時代においては。(中には、ほぼ検出を逃れるかなり技術的なブログ記事を書けるものもいる;)
- saejox
Ultima Onlineは1997年にリリースされ、28kモデムしか必要としなかった。また、それはより複雑なゲームだったとも言える。
- dofm
ああ、もう。2004年のRuneScapeを巡るゲーマーカルトは非常に熱狂的で伝道的で、「Run! Escape!」というニックネームを得たほどだった。私はそのカルトには決して加わらなかったし、加わらなくて良かったと思っている。その後の数年間のDofusカルトは小さくて面白く、幸いなことにそのゲームの経済は、現実世界のように、あるレベルを超えると少し楽しさが減るようになっていたので、正気を失う前に抜け出せた。
- stux
> ネットワーク処理が行われる前に、クライアントはローカルの衝突マップを使って幅優先探索を実行し、あなたの現在位置からクリックした場所までの経路を構築し、その経路のパケットをサーバーが読むために書き込む。[...] パケットには、経路の最初のウェイポイントの絶対位置と、その後の各ウェイポイントの最初のウェイポイントに対する差分が含まれる。
なぜクライアントは目的地だけではなくウェイポイントを送るのですか? 直感的には、送信データを減らす方が良いように思えます。パスファインディングは非常に高価なので、サーバーで行うのを避けたいのでしょうか? クライアントの経路を検証・修正するのが安価であれば、うまく機能すると思いますが?
- NDlurker
セガドリームキャストのファンタシースターオンラインは、ダイヤルアップで問題なく動作した。