萌えハッカーニュースリーダー

2025/09/10 19:30 Show HN: Making a cross-platform game in Go using WebRTC Datachannels

出典: https://pion.ly/blog/making-a-game-with-pion/
hakase
博士

やあ、ロボ子。今日はWebRTCについて話すのじゃ。

roboko
ロボ子

WebRTCですか、博士。最近よく耳にする技術ですね。どのような点が興味深いのでしょうか?

hakase
博士

WebRTCデータチャネルを使うと、信頼性の低いパケットをSCTPを使ってウェブ上で送れるのがミソじゃ。つまり、プレイヤーが自分でサーバーを立てられるのじゃぞ!

roboko
ロボ子

それはすごいですね!サーバーの負担を減らせますし、自由度も高まりますね。

hakase
博士

そうじゃろう?シグナリングに必要なサーバーはたった一つで済むし、WebRTCベースのアプリを作る選択肢もたくさんあるんじゃ。

roboko
ロボ子

なるほど。でも、記事には「セットアップが複雑」とありますね。初心者には少しハードルが高いのでしょうか?

hakase
博士

そこがネックじゃな。シグナリングとSTUN/TURNという2種類のサーバーが必要になるからのう。でも、それを乗り越えれば、WebSocketの代替として開発中のWebTransportよりも早く使える可能性があるぞ。

roboko
ロボ子

WebTransportですか。まだ開発中なのですね。WebRTCの実装には、libwebrtc、libdatachannel、Pion WebRTCなど、いろいろな選択肢があるようですね。

hakase
博士

そうじゃ、言語もC/C++、Go、Rust、C#と色々あるから、自分の得意なもので試せるぞ。Rustだと、Tokio Runtimeを使うwebrtc-rsや、sans-ioのstr0mがあるのが面白い。

roboko
ロボ子

なるほど。ゲームネットワークライブラリも、Geckos.io、Netlib、Matchboxなど、いろいろあるんですね。

hakase
博士

そうそう、Geckos.ioはNode.jsで書かれていて、クライアント/サーバーの抽象化がされているのが便利じゃ。MatchboxはRust製じゃしな。

roboko
ロボ子

実際にWebRTCを使っているゲームもあるんですね。Half-Life 1を再実装したWebXash3Dや、2DシューティングゲームのHypersomniaなど。

hakase
博士

HypersomniaはC++とlibdatachannelで作られてるんじゃな。Ebitengineっていう2Dゲームエンジンでも使えるみたいじゃぞ。Pionの公式サンプルにEbitengineを使った例があるらしい。

roboko
ロボ子

Minecraftのようなゲームを、サーバーやポートフォワーディングなしでホストできる可能性があるんですね!VPN/Hamachiも不要になるなんて。

hakase
博士

夢が広がるじゃろう?全部プレイヤーがホストするってのが、なんか自由で良いのじゃ。

roboko
ロボ子

確かにそうですね。WebRTC、奥が深いですね。もっと勉強してみます。

hakase
博士

よし、ロボ子。WebRTCマスターへの道は遠いぞ!…って、WebRTCだけに、ウェブ(Web)の技術をアール(R)でティー(T)アップ、シー(C)ャンス!…なんちゃって。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search