TyphoonMC — Goでフルスクラッチ実装したMinecraftサーバーエンジン
オープンソースプロジェクト:Goでフルスクラッチ実装した軽量なMinecraftサーバーエンジン。Endarielネットワークの本番環境で使用されました。
- Go
- Minecraftプロトコル
- GitHub OSS
20.0 tps
90+
tick.go
› go · tick loop · open source
背景
公式のMinecraftサーバーはJava製で、重い。最大10万人以上のユニークプレイヤーまでスケールしたEndarielのようなゲームネットワークでは、CPUサイクル一つひとつが重要です。TyphoonMCは、プロトコルの必要最小限をGoで再実装し、メモリフットプリントを抑え、クリーンなティックループを実現したいという思いから生まれました。
技術的な利点を超えて、これはOSSの遊び場でもありました:Minecraftプロトコルはドキュメントが部分的で、メジャーバージョンごとに変化し、厄介なエッジケース(条件付き圧縮、オプショナル暗号化、可変長パケット)を含みます。これをきれいに実装するのは、低レベルのサーバーアーキテクチャの実践課題です。
担当した役割
メンテナー。これは私の個人プロジェクトです。エンジンを書き、プロトコルの進化を追跡し、外部からの貢献をレビューしました。
構築したもの
- TyphoonCore:軽量で組み込み可能に設計したGo製Minecraftサーバーエンジン
- Minecraftプロトコル実装(ハンドシェイク、ログイン、プレイ状態、ゲームプレイパケット)
- 安定したティックループ:vanillaクライアントが期待する20 TPS前後を維持
- 本番運用:当時共同メンテしていたMinecraftネットワーク「Endariel」で使用
- 長期にわたるOSS運営:Issue、外部PR、バージョン管理されたリリース
難所:Minecraftプロトコルは動く標的。ゲームのメジャーバージョンごとにパケットが変わり、Enumが変わり、後方互換性が壊れる。サードパーティエンジンの維持は、継続的なプロトコル監視を意味します。
成果
GitHubで90以上のスター。Endarielの本番環境で使用され、プロジェクト期間中に10万人以上のユニークプレイヤーにサービスを提供。アーカイブ前に5年間メンテナンス継続——ゲームプロトコルのサイドプロジェクトとしては容易ではない実績です。