この記事は TLB Enjoy Developers Advent Calendar 2022 、2日目の記事です。
これは何?
リモートワークの普及により、オンラインでのコミュニケーション促進を目的とした2Dバーチャルオフィスツールが人気なようです。具体的には、GatherやMetaLifeなどです。Youtubeでチュートリアル動画を観たのですが、一言で感想を言えば 「楽しそう!!」 。2Dドット絵がかつて遊んだゲームを彷彿とさせ、えもいわれぬ懐かしみを感じさせます。
- 2Dバーチャルオフィスツールっぽいものを自分で作ってみたい!
- ネットーワーク経由で同期をする学習にもなる!
ということで、学習がてら2Dバーチャルオフィスツールぽいものを制作しようと思い立ちました。
実現したい事
以下のような機能が実現できればそれっぽいものが実現できるのではと考えました。
- ツールに接続したプレイヤーは、2Dドット絵のマップ上でキャラクターとして表現される。
- キャラクター同士、マップ上の位置をリアルタイムに共有できる。
- 画面上でキー入力やクリックなど何らかの操作を行うことで、他のプレイヤーとテキストでの会話や音声通話、ビデオ通話をすることができる。 ※大変そうなのでできたらやる
構成
サーバー・クライアント構成にして、各クライアントはサーバー経由でお互いの位置を共有します。
双方向通信の実現にはgRPCを使用します。また、データを保存しておくためにKVSを配置した方が良いと考えました。
具体的に使用する技術要素としては以下の通りです。
gRPCについて
gRPCの通信方式には、 Unary・Server streaming・Client streaming・Bidirectional streaming が利用できます。
これらの通信方式を組み合わせてアプリケーションを作っていくのですが、今回はプレイヤー同士の位置の共有にBidirectional streamingが使えそうと考えました。
マップ・キャラクターについて
過去に作ったものを再利用できそうです。
ミノ駆動本を読んで不変の大事さを知る
鋭意製作中
ちなみに今(2022年12月2日時点)の制作状況はこんな感じです。
アドカレ期間中に完成できるよう頑張ります...
明日は @Miyayan さんの記事です。お楽しみに!