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

 湿度も上がり、暑い夏が近づくのを感じる今日この頃、皆様どうお過ごしでしょうか?
まだ4月ですが社内はエアコンを点ける事が増えてきました。

私も自宅で気温の高い夜に遭う事が増えてきたので、自宅のエアコンをつける事が多くなりました。
温度は27度~28度を意識し、エアコン病にならないようにしています。
皆様もお気をつけ下さい。





先日に引き続き社内研修にてWebGLと、Node.jsSocket.ioを用いてのマルチプレイの課題に臨みました。
現在は自分のアバターと、他の人のアバターを同時に表示し、他の画面から操作している他人のアバターも動きが反映されるようになりました。



ここまでくるのに、モーション、移動、水平の視点の同期に苦労しました。
特にモーションについては他人が操作するアバターのモーションが何故か違うモーションになっていたりすることがあったりした為、この点の原因究明が大変でした。


この点については本日、原因が分かりました。
自分が操作しているアバターの座標の移動やモーションを、他の人の画面でも反映させるには、まず自分で操作しているアバターの「操作された情報」をサーバーへ送り、その後、他人の操作する画面側でその情報をsocket.ioを用いたリアルタイムな受け取りの過程を経て、反映させる必要があります。

今回の原因は、自分が操作しているアバターの「操作された情報」の取得の仕方に間違いがありました。
というのも、その操作されているアバターのモーションの情報を取得してサーバーへ送っているのですが、この取得したモーションが一つ前の操作の段階で実行されたモーションを取得して送ってしまっていた為、失敗の動画のように移動中なのに立ちっぱなしのモーション、移動していないのに歩き続けるモーションになり、それがループする不具合が発生していました。

今回はWebGLでモーションを取得する際の難しさを痛感する課題となりました。
モーションが取得可能な方法を調査する際に度々、console.logを用いる事にもなりましたが、重要な取得方法を把握できたので次回からは時間の節約につながると考えています。

この経験を活かし勤めて参ります。

ここまでご一読いただきまして誠にありがとうございました。
次回もお読みいただけますと幸いです。
宜しくお願い致します。


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




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

コメント