私はSocket.IOとHTML5のキャンバスは、JavaScript(あまりにもジョンResig氏、単純な継承ライブラリを使用して)とのNode.jsとシンプルなマルチプレイを作成しようとしています。 私のクライアントコード:マルチプレイHTML5、Node.jsの、Socket.IO
var canvas = document.getElementById('game');
var context = canvas.getContext('2d');
var socket = new io.Socket('127.0.0.1', {port: 8080});
var player = null;
var UP = 'UP',
LEFT = 'LEFT',
DOWN = 'DOWN',
RIGHT = 'RIGHT';
socket.connect();
socket.on('connect', function() {socket.send();
console.log('Connected!');
player = new Player(50, 50);
});
socket.on('message', function(msg) {
if(msg == 'UP') {
player.moveUP();
} else if(msg == 'LEFT') {
player.moveLEFT();
} else if(msg == 'DOWN') {
player.moveDOWN();
} else if(msg == 'RIGHT') {
player.moveRIGHT();
} else {
}
});
socket.on('disconnect', function() {
console.log('Disconnected!');
});
var Player = Class.extend({
init : function(x, y) {
this.x = x;
this.y = y;
},
setX : function(x){
this.x = x;
},
getX : function(){
return this.x;
},
setY : function(y){
this.y = y;
},
getY : function(){
return this.y;
},
draw : function(){
context.clearRect(0, 0, 350, 150);
context.fillRect(this.x, this.y, 15, 15);
},
move : function() {
this.x += 1;
this.y += 1;
},
moveUP : function() {
this.y--;
},
moveLEFT : function() {
this.x--;
},
moveDOWN : function() {
this.y++;
},
moveRIGHT : function() {
this.x++;
}
});
function checkKeyCode(event) {
var keyCode;
if(event == null) {
keyCode = window.event.keyCode;
} else {
keyCode = event.keyCode;
}
switch(keyCode) {
case 38: // UP
player.moveUP();
socket.send(UP);
break;
case 37: // LEFT
player.moveLEFT();
socket.send(LEFT);
break;
case 40: //DOWN
player.moveDOWN();
socket.send(DOWN);
break;
case 39: // RIGHT
player.moveRIGHT();
socket.send(RIGHT);
break;
default:
break;
}
}
function update() {
player.draw();
}
var FPS = 30;
setInterval(function() {
update();
player.draw();
}, 1000/FPS);
function init() {
document.onkeydown = checkKeyCode;
}
init();
とサーバコード:
var http = require('http'),
io = require('socket.io'),
buffer = new Array(),
server = http.createServer(function(req, res){
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('<h1>Hello world</h1>');
});
server.listen(8080);
var socket = io.listen(server);
socket.on('connection', function(client){
client.on('message', function(message){
console.log(message);
client.broadcast(message);
})
client.on('disconnect', function(){
})
});
そして、私は2番目のクライアントのRectを移動することができます最初のクライアントを持つ2つのクライアントのIを実行したときに2番目のクライアントに持つように最初のクライアントRECTと何かを動かします第3のクライアントは、第1および第2のクライアント・レットを移動することができる。
実際のマルチプレーヤーの作成方法について質問がありますか?次のようなものがあります。 3つのクライアントと1つ目のクライアントは、rect1、2番目のrect2、3番目のrect3を開きます。最初のクライアントはrect1だけを動かすことができ、クライアントの3番目はrect3だけ動かすことができます。
多分誰もが知っていますか?私はGoogleで検索しますが、答えは見つかりません。
私の英語のために申し訳ありません。
HTML5ゲーム開発へのスーパーブラウザ2 turbo HDリミックスの紹介は素晴らしいです! ありがとうございます! generalhenry、私はあなたのmodifiedクライアント/サーバーコードを試してみますが、私のためには動作しません。 マルチプレイヤーを理解してくれてありがとう! – rhavd
私は変更されたコードをテストしなかったので、いくつかのバグがあるかもしれませんが、あなたは考えを得ます^ _^ – generalhenry
すべてのリンクは現在この回答から死んでいます。 –