Mailson Menezes
openBossa @ INdT
Mailson Menezes
Desenvolvimento da versão HTML5 do Incredible Circus.
Jogue no Facebook
Também disponível para iOS, Android e Windows Phone
Menor controle sobre a plataforma
Estávamos acostumados a trabalhar em um ambiente nativo
Preocupação com a performance do jogo
Experiência do time
<canvas id="game" width="200" height="200"></canvas>
Acesso via JavaScript
var canvas = document.getElementById("game");
var context = canvas.getContext("2d");
context.fillStyle = "#c80000"
context.fillRect(10, 10, 55, 50);
context.fillStyle = "rgba(0, 0, 200, 0.5)"
context.fillRect(30, 30, 55, 50);
As imagens não serão imediatamente exibidas, serão desenhadas
var image = new Image();
var imageLoaded = false;
image.onload = function () {
imageLoaded = true;
};
image.src = "images/smurf.png"
if (imageLoaded)
context.drawImage(image, 30, 30);
context.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh);
Útil para o uso de spritesheets
var image = new Image();
image.onload = function () {
context.drawImage(image, 0, 0, 128, 128, 30, 30, 128, 128);
};
image.src = "images/smurfs_sheet.png"
Chamar o update do jogo em um intervalo fixo de tempo
setInterval
function tick() { /* ... */ }
setInterval(tick, 30);
Não temos muito controle sobre o loop do jogo
setTimeout
function tick() {
/* ... */
setTimeout(tick, 30);
}
tick();
requestAnimationFrame
function tick(delta) {
/* ... */
requestAnimationFrame(tick);
}
tick();
<audio>
)var Person = function (name) {
this.name = name;
};
Person.prototype.sayHello = function () {
console.log("Hello, my name is " + this.name);
};
var p = new Person("John Doe");
p.sayHello(); // Hello, my name is John Doe
Não muito usado em games, mas bastante importante
Melhora o reuso dos componentes
Mais fácil de identificar os tipos
Browsers evoluem rapidamente