WebGL+Node.js+socket.ioで3Dマルチプレイ開発の課題に取り組みました。 その9

 本日、福岡県では豪雨が十数分ほど降りました。
記事を書いている現在も曇りで外は恐らく小雨が降り続いていると思います。

梅雨の季節に突入した今日この頃、皆様はどうお過ごしでしょうか?
チーム・タンドリーの北山です。

前回までは自作のローカルサーバでマルチプレイの実装をしていましたが、今回からは所謂「本番環境」であるクラウドサーバへ接続し、実装作業を行っています。

クラウドサーバ側は私は手を一切加えておらず、そのサーバは、他の方が作成済みのものです。
ただし、これまでローカルで作成してきたサーバと同じく、Node.js Socket.ioRedis 等で構築されています。

構築内容は近くても、サーバの内容そのものはブラックボックスとなっており、仕様書を読みながら作業をする必要があります。

  • WebGL側からサーバー側へ命じる処理
  • サーバー側からWebGL側へ命じる処理

これまでは上記の流れをローカルサーバへ経由する事でマルチプレイを実装してきましたが、今回からは仕様書への理解が重要になります。

その為、最初は長文である仕様書の中から、個別の処理(例として「歩く」「モーション」「角度」などそれぞれの個別の処理)を、連鎖的に関連する仕様書上で定義されたコマンドの処理を把握する作業を重視しました。


結果、現在ではローカルサーバ側の作業で実装してきた下記の機能を再現する事ができました。
  • アバターの移動と位置の連動
  • アバターのモーションの連動
  • クラウドサーバに保存されているゲスト番号の取得と連動

実装結果の状態は以下の動画になります。








基本的な機能を実装しましたが、アバターの移動の連動については、時折、怪しい挙動が発生する事があり、調査しています。

この原因については2つの可能性を想定しています。

  1. 本番環境のサーバとの遅延により発生している故の挙動。
  2. ローカルでの開発では使用してこなったライブラリを使用している為。

特に個人的には 2 の可能性も重視しています。

そのライブラリの名前は tween.js というものです。

tween.jsはアニメーション用のライブラリで、これをWebGLのアバターの移動地点の開始と終了地点の動作の最中で使用しています。





今回の実装の参考にさせていただいた資料では tween.js が使用されており、ローカルで作成してきたソースコードのパターンではエラーが発生する事があった為、完全性を目指す為、参考元のソースコードを手本に、tween.jsを使用しています。

tween.jsはこれまで、使用した事が無かったので今後の調査で見識を深めていければと考えています。

ここまでご一読いただきまして誠にありがとうございました。
是非、次回もご一読いただけますと幸いです。



現在
株式会社チョモランマ
株式会社シェルパ
3Dmodeljapan株式会社
ではスタッフを大募集しております!!
UNITY、Unreal Engine4、AI、プログラミングや建築パースに興味がある方!
ぜひご応募下さい!!
初心者の方、未経験の方やインターンを受けてみたい方々でも大歓迎です!!





〔企画運営〕株式会社シェルパ 
公式HP https://sherpa-cg.com/
〒810-0042
福岡県福岡市中央区赤坂1丁目13-10赤坂有楽ビル7F
tel 092-717-6800 / fax092-717-6801 

コメント