Ich versuche, einfache Multi-Player mit HTML5 Canvas, JavaScript (auch mit John Resigs einfacher Vererbungsbibliothek) und Node.js mit Socket.IO zu erstellen. Mein Kundencode:
var canvas = document.getElementById ('game'); var context = canvas.getContext ('2d'); var socket = neuer io.Socket ('127.0.0.1', {port: 8080}); var player = null; var UP = 'UP', LINKS = 'LINKS', DOWN = 'DOWN', RECHTS = 'RECHTS'; socket.connect (); socket.on ('connect', function () {socket.send (); console.log ('Verbunden!'); Spieler = neuer Spieler (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: Funktion (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 () { gib dies zurück. }, 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 ++; } }); Funktion checkKeyCode (Ereignis) { var keyCode; if (event == null) { keyCode = window.event.keyCode; } else { keyCode = event.keyCode; } switch (keyCode) { Fall 38: // UP player.moveUP (); socket.send (UP); brechen; Fall 37: // LINKS player.moveLEFT (); socket.send (LEFT); brechen; case 40: // DOWN player.moveDOWN (); socket.send (DOWN); brechen; Fall 39: // RECHT player.moveRIGHT (); socket.send (RECHTS); brechen; Standard: brechen; } } Funktionsupdate () { player.draw (); } var FPS = 30; setInterval (function () { aktualisieren(); player.draw (); }, 1000 / FPS); Funktion init () { document.onkeydown = checkKeyCode; } drin();
Und Servercode:
var http = require ('http'), io = require ('socket.io'), buffer = new Array (), server = http.createServer (function (req, res) { res.writeHead (200, {'Content-Type': 'text / html'}); erneut senden('Hallo Welt
'); }); server.listen (8080); var socket = io.listen (Server); socket.on ('Verbindung', Funktion (Client) { client.on ('message', function (message) { console.log (message); client.broadcast (Nachricht); }) client.on ('disconnect', function () { }) });
Und wenn ich zwei Clients betreibe, kann ich mit dem ersten Client das zweite Client-Rect und mit dem zweiten Client das erste Client-Rect und so etwas wie mit dem dritten Client das erste und zweite Client-Rect verschieben.
Ich habe Fragen, wie man einen echten Multiplayer erstellt. so etwas wie: Öffne drei Clients und der erste Client erhält rect1, der zweite rect2 und der letzte rect3. Der erste Client kann nur rect1 bewegen, der dritte Client kann nur rect3 bewegen.
Vielleicht hat jemand eine Idee? Ich suche in Google, finde aber keine Antwort.
Entschuldigung für meine englische Sprache, Danke.