Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ToulouseJS - Javascript Multiplayer Game

ToulouseJS - Javascript Multiplayer Game

Bogaert Cyrille

November 28, 2012
Tweet

Other Decks in Technology

Transcript

  1. Comment fonctionne Impact ? // Création de l’entité Player EntityPlayer

    = ig.Entity.extend({ }); // Chargement des sprites du joueur animSheet: new ig.AnimationSheet('player.png', 16, 16), init: function(x, y, settings) { // Ajout d’une animation this.addAnim('run', 1.5, [1,2,3]); // Appel du constructeur parent this.parent(x, y, settings); }
  2. Moteur javascript V8 coté serveur Code non-bloquant 5 sec 10

    sec 0 sec 5 sec 10 sec 0 sec Bloquant (PHP/ Rails) Non-bloquant (NodeJS) Requête 1 Requête 2
  3. Serveur http traditionnel Navigateur socket.io Navigateur Hello World // Un

    client vient de se connecter io.sockets.on("connection", function(client) { }); // Le client reçoit un message du serveur server.on("messages", function(data) { console.log(data.hello); // "world" }); Coté serveur Coté client Requêtes traditionnelles VS Websockets // Envoi d'un message au client client.emit("messages", { hello: "world" });
  4. Toxigame game.on('newPlayer', function(player) { }); Application au jeux Nouveau joueur

    (coté serveur) toxigame.on("server.spawnPlayer", function(player) { }); Les autres joueurs reçoivent l’événement (coté client) this.sendToAll({ spawnPlayer: player }); this.syncPlayer(player);
  5. Comment le brancher sur Impact ? // Création de l’entité

    Player EntityPlayer = ig.Entity.extend({ }); // Chargement des sprites du joueur animSheet: new ig.AnimationSheet('player.png', 16, 16), init: function(x, y, settings) { // Ajout d’une animation this.addAnim('run', 1.5, [1,2,3]); // Appel du constructeur parent this.parent(x, y, settings); }, update: function() { } // Envoi de la position du joueur au serveur lorsqu’il bouge if(this.hasMoved) { toxicode.sendToServer({ synchronizePlayer: this.pos }); }