7. • Gestion des collisions
• Sprites et animations
• Editeur de niveaux
• Outils de debug
8. 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);
}
});
11. Requêtes traditionnelles VS Websockets
Serveur http
Navigateur traditionnel Navigateur socket.io
Hello World
Coté serveur Coté client
// Un client vient de se connecter // Le client reçoit un message du serveur
io.sockets.on("connection", function(client) { server.on("messages", function(data) {
// Envoi d'un message au client console.log(data.hello); // "world"
client.emit("messages", { hello: "world" }); });
});
12. Toxigame
Application au jeux
Nouveau joueur (coté serveur)
game.on('newPlayer', function(player) {
this.sendToAll({ spawnPlayer: player });
});
Les autres joueurs reçoivent l’événement (coté client)
toxigame.on("server.spawnPlayer", function(player) {
this.syncPlayer(player);
});
13. 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 });
}
}
});