###前提・実現したいこと
Node.js Socket.ioを使ってサーバーを作りました。ウェブやチャットではうまくやり取りできています。今回はunity3Dを使ってミニゲーム開発しています、マルチプレイヤーみたいなリアルタイム通信を試しいます。
###発生している問題・エラーメッセージ
問題はキャラクターを動かした時に動いたキャラクターの位置をサーバーに送りたいのですが、 サーバー側がデータを受け取る時にちょっとしたズレが発生します。 これは関係あるかわからないですが、それもだいたい5秒ごとぐらいに。 TCPやUDPが関係しているのでしょうか? もし何か情報をお持ちでしたら協力をお願いします・・
###該当のソースコード
var io = require('socket.io')(9995); var shortId = require('shortid'); var clients = []; io.on('connection', function (socket) { var currentUser; socket.on('USER_CONNECT', function (){ console.log('Users Connected '); for (var i = 0; i < clients.length; i++) { socket.emit('USER_CONNECTED',{ name:clients[i].name, id:clients[i].id, position:clients[i].position }); console.log('User name '+clients[i].name+' is connected..'); }; }); socket.on('PLAY', function (data){ currentUser = { name:data.name, id:shortId.generate(), position:data.position } clients.push(currentUser); socket.emit('PLAY',currentUser ); socket.broadcast.emit('USER_CONNECTED',currentUser); }); socket.on('disconnect', function (){ socket.broadcast.emit('USER_DISCONNECTED',currentUser); for (var i = 0; i < clients.length; i++) { if (clients[i].name === currentUser.name && clients[i].id === currentUser.id) { console.log("User "+clients[i].name+" id: "+clients[i].id+" has disconnected"); clients.splice(i,1); }; }; }); socket.on('MOVE', function (data){ currentUser.position = data.position; socket.broadcast.emit('MOVE', currentUser); console.log(currentUser.name+" Move to "+currentUser.position); }); }); console.log("------- server is running -------");
###試したこと
Localhostからだと問題なく通信を受け取っていますが、アンドロイドや他の機種からIPっを設定してテストするとズレが発生します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。