KLab株式会社は、オンライン対戦や協力プレイなどを実現するためのリアルタイム通信システムとして自社タイトルの運用ノウハウを反映・汎用化した「WSNet2」を開発、公開した。
詳細はこちら

■オープンソース公開の背景

オンライン対戦や協力プレイなどを実現するためのリアルタイム通信は、昨今のゲームの中核をなす機能となっている。こうしたリアルタイム通信を実現するサービスやライブラリは多数存在するが、モバイル端末やゲーム仕様に合わせたカスタマイズが難しく、頭を悩ませるポイントとなっている。

KLabでは複数タイトルで自社製リアルタイム通信システムを開発運用してきたが、この度それらのノウハウを反映・汎用化したシステムとして「WSNet2」を開発した。

KLabでは創業当初より多くのオープンソース・ソフトウェアを利用し、低コストかつ高品質なサービスの提供へと役立ててきた。同時に、オープンソース・コミュニティから情報を得るばかりではなく、可能な限り多くの情報やソースコードをコミュニティへと還元してきた。

「WSNet2」においても、そのソースコードが多くの開発者の目に触れること、また同様の問題を抱える人々との情報交換を通して、品質や性能の向上へ寄与すると考えているという。これが同社の競争力を高めるとともに、ゲーム業界の技術発展にもつながると考えオープンソース化を決定した。

「WSNet2」の特徴

1) 特別な設定なしに様々な環境から接続可能
ブラウザの双方向通信に広く使われているWebSocketを採用しているため、回線の種類や接続方法、ネットワーク構成にかかわらず、多くの国の様々な環境から確実に接続することができる。
2)回線の切り替わりや一時的な圏外をシステム側で吸収
モバイル端末では回線の切り替わりや一時的な圏外により通信切断が発生する。一般的なオンラインゲームでは、切断してしまった時点でゲームを続行できなくなるものが珍しくない。WSNet2では自動的に再接続して通信を継続するため、一時的に切断してしまってもプレイヤーはゲームを続行できる。またこの再接続は暗黙的に行われるため、開発者はこうした切断を考慮することなくゲームロジックを実装することができる。
3)一般的なスペックのサーバ1台で数千クライアントの同時接続 ※1
WSNet2のサーバは、処理速度に定評のあるGo言語で実装している。このため、ハイスペックなサーバでなくても多数の同時接続を処理することができ、運用コストを抑えることができる。
※1 開発中タイトルの負荷試験にて、AWS EC2のc5.xlarge (vCPU 4、メモリ 8GiB)のサーバで1台あたり約6,000人の同時接続を処理できている。
4)数十万人規模の観戦 ※2に対応
近年盛んになってきたeスポーツにおいては、観戦も重要な機能になっている。WSNet2では、動画配信等ではできない双方向インタラクションを維持したまま、数十万人規模の観戦に対応した。
※2 開発中タイトルの負荷試験にて20万観戦の同時接続を達成した。サーバ台数を増やすことでさらに多人数にも対応できる。

公開場所
https://github.com/KLab/wsnet2

動作環境・ライセンス
サーバ環境
Go (1.19以降)
MySQL (5.7以降)
クライアント (C#)
Unity (2020以降)
.NET (5.0以降)
ライセンス: MITライセンス
その他ライセンス表示はリポジトリ内のLICENSEファイルを参照