Top Banner
Desenvolvimento de jogos, Willian Molinari (a.k.a PotHix) Javascript e HTML5
89

desenvolvimento de jogos com javascript

Mar 03, 2015

Download

Documents

desenvolvimento de jogos com javascript
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: desenvolvimento de jogos com javascript

Desenvolvimento de jogos,

Willian Molinari (a.k.a PotHix)

Javascript e HTML5

Page 2: desenvolvimento de jogos com javascript

Grupo de usuários Ruby de São Paulo

Page 3: desenvolvimento de jogos com javascript

Equipe de Cloud Computing

Page 4: desenvolvimento de jogos com javascript

LinguagensVárias! :)

Page 5: desenvolvimento de jogos com javascript

Frameworks e LibsVarios! \o/

Akihabara

Page 6: desenvolvimento de jogos com javascript

Sou só um cara normal

Page 7: desenvolvimento de jogos com javascript

Meu primeiro gameGame contest Itaú cultural

Criado por: @PotHix / @CrociDB

Page 8: desenvolvimento de jogos com javascript

C++Allegro

Linux / Windows

Page 9: desenvolvimento de jogos com javascript

Vencemos!

Page 10: desenvolvimento de jogos com javascript

Mas depois...

Page 11: desenvolvimento de jogos com javascript
Page 12: desenvolvimento de jogos com javascript

Código difícil

Page 13: desenvolvimento de jogos com javascript

Difícil distribuição

Page 14: desenvolvimento de jogos com javascript

Difícil portabilidade

Page 15: desenvolvimento de jogos com javascript

Malloc()

Page 16: desenvolvimento de jogos com javascript
Page 17: desenvolvimento de jogos com javascript

Claro que não!

Page 18: desenvolvimento de jogos com javascript
Page 19: desenvolvimento de jogos com javascript

HTML5*Canvas WebGL

WebSockets Offline cache

Audio

Local Storage

SVGfileSystem

Page 20: desenvolvimento de jogos com javascript

Canvas<canvas width="100" height="100" id="game"></canvas>

Page 21: desenvolvimento de jogos com javascript

var ctx = document.getElementById("game").getContext('2d');

ctx.fillRect(25,25,100,100);

ctx.clearRect(45,45,60,60);

ctx.strokeRect(50,50,50,50);

Canvas

Rect

Page 22: desenvolvimento de jogos com javascript

arc()

Canvas

ctx.arc(x,y,radius,startAngle,endAngle, anticlockwise);

Page 23: desenvolvimento de jogos com javascript

Linhas e curvas

Canvas

quadraticCurveTo(), belzierCurveTo(), lineTo(), moveTo()

Page 24: desenvolvimento de jogos com javascript

ctx.beginPath();

// Circulo maiorctx.arc(75,75,50,0,Math.PI*2,true); ctx.moveTo(110,75);

// Bocactx.arc(75,75,35,0,Math.PI,false);ctx.moveTo(65,65);

// Olho direitoctx.arc(60,65,5,0,Math.PI*2,true);ctx.moveTo(95,65);

// Olho esquerdoctx.arc(90,65,5,0,Math.PI*2,true);ctx.stroke();

Canvas

Desenho a mão livre

Page 25: desenvolvimento de jogos com javascript

Imagens

Canvas

drawImage(img,cropx,cropy,croptx,cropty,scalex,scaley,cordx,cordy)

Page 26: desenvolvimento de jogos com javascript

image = new Image();image.src = "source/da/imagem.jpg";

// Sempre esperar a imagem carregar antes de colocar no canvasimage.onload = function(){ /* o código do canvas aqui */}

// Apenas a image e sua posiçãocanvas.drawImage(image, x, y);

// A imagem, suas posições e seu tamanhocanvas.drawImage(image, x, y, width, height);

/* A imagen, onde deve ser cortada, qual vai ser o tamanho do corte, o tamanho da imagem e onde ela deve ser colocada */canvas.drawImage(image, cropx, cropy, crop_tam_x, crop_tam_y, scalex, scaley, coordx, coordy);

Canvas

Exemplo de drawImage

Page 27: desenvolvimento de jogos com javascript

SVGScalable Vector Graphics

Page 28: desenvolvimento de jogos com javascript

SVG AnimationsEric Möller

SVG

Page 29: desenvolvimento de jogos com javascript

Porque não é usado?Falta de editores, suporte e outras coisas

SVG

Page 30: desenvolvimento de jogos com javascript

WebGLOpenGL rodando no browser

Page 31: desenvolvimento de jogos com javascript

WebGL

Quake II GWT: http://code.google.com/p/quake2-gwt-port/

WebSonic: http://forums.sonicretro.org/index.php?showtopic=24965 WebGL Rage: http://code.google.com/p/webgl-ios-rage/

Page 32: desenvolvimento de jogos com javascript

Acesso direto a GPU

WebGL

Page 33: desenvolvimento de jogos com javascript

Drivers

WebGL

Page 34: desenvolvimento de jogos com javascript

Segurança

WebGL

Page 35: desenvolvimento de jogos com javascript

WebGL

http://people.opera.com/~emoller/stagedemohttp://people.opera.com/~emoller/demo2

Page 36: desenvolvimento de jogos com javascript

Offline cache

Page 37: desenvolvimento de jogos com javascript

Cache Manifest

Offline cache

<html manifest="/cache.manifest">

Page 38: desenvolvimento de jogos com javascript

CACHE MANIFEST# revision 1

NETWORK:http://www.google-analytics.com

FALLBACK:resources/audio resources/audio/silence.mp3

CACHE:src/maingame_packaged.jsresources/audio/silence.mp3resources/sprites.png

Offline cache

Exemplo.manifest

Page 39: desenvolvimento de jogos com javascript

WebSockets

Page 40: desenvolvimento de jogos com javascript

var connection = new WebSocket('ws://pothix.com/websocket');

connection.onopen = function () { connection.send('funciona!'); // Envia a mensagem para o servidor};

connection.onerror = function (error) { // Código para tratar erro de conexão};

connection.onmessage = function (e) { // Código para tratar o que fazer em cada mensagem};

connection.onclose = function (e) { // Código para tratar quando a conexão é encerrada};

WebSockets

Exemplo WebSocket

Page 41: desenvolvimento de jogos com javascript

Multiplayer!

WebSockets

http://swarmation.com/

Page 42: desenvolvimento de jogos com javascript

WebSockets

Page 43: desenvolvimento de jogos com javascript

Tag Audio<audio><source src="test.mp3" type="audio/mpeg" /></audio>

Page 44: desenvolvimento de jogos com javascript

Latencia

Audio

Velocidade de resposta não é boa em todos os casos.

Page 45: desenvolvimento de jogos com javascript

Audio

Workaround?

Page 46: desenvolvimento de jogos com javascript

Compatibilidade

Audio

Mobile ainda é um problema.

Page 47: desenvolvimento de jogos com javascript

Local StorageChega de guardar informações em cookies

Page 48: desenvolvimento de jogos com javascript

// Criando um novo item no localStoragelocalStorage.setItem("myGame","The amazing HTML5 programmer")

// Retornando um item do localStoragelocalStorage.getItem("myGame")# => "The amazing HTML5 programmer"

// Criando com outra SyntaxlocalStorage["myGame.stage"] = 1

// Retornando com outra Syntax. Tudo é armazenado como string.localStorage["myGame.stage"]# => "1"

localStorage

Exemplo localStorage

Page 49: desenvolvimento de jogos com javascript

fileSystemQuase nenhum suporte ainda, mas vai ser muito útil!

Page 50: desenvolvimento de jogos com javascript

Game frameworksPelo menos algumas delas.

Page 51: desenvolvimento de jogos com javascript

http://impactjs.com

Page 52: desenvolvimento de jogos com javascript

http://playbiolab.com/http://www.phoboslab.org/ztype/

Page 53: desenvolvimento de jogos com javascript

Partículas

ImpactJS

Page 54: desenvolvimento de jogos com javascript

Suporte

ImpactJS

Page 55: desenvolvimento de jogos com javascript

Map editor

ImpactJS

Page 56: desenvolvimento de jogos com javascript

Física basicaE exemplos de integração com a lib Box2D

ImpactJS

Page 57: desenvolvimento de jogos com javascript

Documentação

ImpactJS

Page 58: desenvolvimento de jogos com javascript

Bons exemplos

ImpactJS

Page 59: desenvolvimento de jogos com javascript

Script para versão .min

ImpactJS

Page 60: desenvolvimento de jogos com javascript

Paga :(US$ 99

ImpactJS

Page 61: desenvolvimento de jogos com javascript

AkihabaraCriado por Francesco Cottone (KesieV Norimaki)

Akihabara

Page 62: desenvolvimento de jogos com javascript

Vários demoshttps://github.com/akihabara

Akihabara

Page 64: desenvolvimento de jogos com javascript

Open Source \o/https://github.com/akihabara/akihabara

Akihabara

Page 65: desenvolvimento de jogos com javascript

Map editor

Akihabara

AkibaKa: Ainda em versão alpha

Page 66: desenvolvimento de jogos com javascript

Documentação?

Akihabara

Precisa de várias melhorias, mas aceitamos ajuda! :)

Page 67: desenvolvimento de jogos com javascript

Assets separados

Akihabara

gbox.addBundle({file: "bundle.js"})

Page 68: desenvolvimento de jogos com javascript

{ addImage:[ ["enemy","resources/enemy01.png"] ], addTiles:[ {id:"enemy", image:"e1", tilew:16, tileh:32, tilerow:6, gapx:0, gapy:0} ], addFont:[ {id:"small", image:"font", tileh:8, tilew:8, tilerow:255, gapx:0, gapy:8} ]}

Akihabara

Arquivos organizados

Page 69: desenvolvimento de jogos com javascript

Keymap page

Akihabara

Sim, no estilo daqueles emuladores :)

Page 70: desenvolvimento de jogos com javascript

Modularizado

Akihabara

Page 71: desenvolvimento de jogos com javascript

gbox.jsO núcleo da engine. Criação de objetos, blit, audio e etc.

Akihabara

Page 72: desenvolvimento de jogos com javascript

Akihabara

O namespace principal// Objetos e gruposgbox.setGroups(["game_group","enemy"]);gbox.addObject({id:"e1", group:"enemy", x: 0, y: 0});

// Blit de objetosgbox.blitTile({tileset: this.tileset, ...});

// Assetsgbox.addBundle({file:"game-bundle.js"});

// Audiogbox.playAudio("title_screen");gbox.stopAudio("title_screen");

.

.

.

Page 73: desenvolvimento de jogos com javascript

gamecycle.jsEstados e funcionalidades basicas dos jogos.

Akihabara

Page 74: desenvolvimento de jogos com javascript

game = gamecycle.createMaingame("game_id", "game_group");

// Algumas funções para controlar alguns estados básicosgame.gameTitleIntroAnimationgame.pressStartIntroAnimationgame.gameIntroAnimationgame.gameMenu

// Controle de alguns objetos comunsgame.hud

.

.

.

Akihabara

Game basics

Page 75: desenvolvimento de jogos com javascript

help.jsExtenções no Javascript e helpers para o game

Akihabara

Page 76: desenvolvimento de jogos com javascript

help.akihabaraInit({ title:"Zero Wing", splash:{ // Algumas notas no footnote footnotes:["All this presentation are belong to us"],

// Utilizando um background customizado no splash background:["resources/my_awesome_image.jpg"] }, // Vamos utilizar offline cache offlinecache: true});

Akihabara

Helper de Inicialização

Page 77: desenvolvimento de jogos com javascript

toys.jsHelpers para vários estilos de games

Akihabara

Page 78: desenvolvimento de jogos com javascript

Akihabara

Snippets para jogos// Topviewtoys.topview.fireBullet("bullets_group", "bullet1", {power:1})

// Shoot'em uptoys.shmup.keepInBounds(this);toys.shmup.fireBullet("bullets_group", "bullet1", {power:1})toys.shmup.generateScroller("game_group", "game1", {power:1})

// Plataformertoys.platformer.jumpKeys(this, "a");

// UItoys.ui.hud("maingame_hud");

.

.

.

Page 79: desenvolvimento de jogos com javascript

RECONQUESTGlobal Game Jam 2011

Page 80: desenvolvimento de jogos com javascript

Plaev Team@PotHix @_bojak

@CrociDB@rmasoni

Page 81: desenvolvimento de jogos com javascript

RECONQUESTGalaxy Tab e Motorola Milestone

Page 82: desenvolvimento de jogos com javascript

RECONQUESTiPad e iPhone

Page 83: desenvolvimento de jogos com javascript

Open source também!https://github.com/plaev/reconquest

Page 84: desenvolvimento de jogos com javascript

Google Web ToolkitFeito em Java, mas exporta HTML5 e várias outras coisas!

Page 85: desenvolvimento de jogos com javascript

Angry BirdsFeito com GWT e incluído na chrome web store

GWT

Page 86: desenvolvimento de jogos com javascript

Outras enginesBox2D Aves

Canvex

ClanFX

bdgeCocos2D

Crafty

Effect games

GameQuery

Hydra

Hydrax

Isogenic Engine

Mibbu

https://gist.github.com/768272

Page 87: desenvolvimento de jogos com javascript

Site interessante com jogos feitos com HTML5

Page 88: desenvolvimento de jogos com javascript

Algumas conclusõesBoa! Agora já posso criar meu Gears of War com HTML5!!!!!11!!

Page 89: desenvolvimento de jogos com javascript

Perguntas?

Obrigado!

http://pothix.comhttp://github.com/pothix [email protected]