KLab株式会社(本社:東京都港区、代表取締役社長:森田英克、以下「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ファイルをご参照ください)