Phaser Dicas

Imprimir

Phaser Dicas

BasicGame.Game = function (game) {
// When a State is added to Phaser it automatically has the following properties set on it, even if they already exist:
this.game; // a reference to the currently running game (Phaser.Game)
this.add; // used to add sprites, text, groups, etc (Phaser.GameObjectFactory)
this.camera; // a reference to the game camera (Phaser.Camera)
this.cache; // the game cache (Phaser.Cache)
this.input; // the global input manager. You can access this.input.keyboard, this.input.mouse, as well from it. (Phaser.Input)
this.load; // for preloading assets (Phaser.Loader)
this.math; // lots of useful common math operations (Phaser.Math)
this.sound; // the sound manager - add a sound, play one, set-up markers, etc (Phaser.SoundManager)
this.stage; // the game stage (Phaser.Stage)
this.time; // the clock (Phaser.Time)
this.tweens; // the tween manager (Phaser.TweenManager)
this.state; // the state manager (Phaser.StateManager)
this.world; // the game world (Phaser.World)
this.particles; // the particle manager (Phaser.Particles)
this.physics; // the physics manager (Phaser.Physics)
this.rnd; // the repeatable random number generator (Phaser.RandomDataGenerator)

// You can use any of these from any function within this State.
// But do consider them as being 'reserved words', i.e. don't create a property for your own game called "world" or you'll over-write the world reference.
};


Com esta função podemos chamar

this.add ao invés de this.game.add

Usar
this.add.sprite(0, 0, 'einstein');

no lugar de:
this.game.add.sprite(0, 0, 'einstein');

A função update() atualiza a tela em torno de 60 vezes por segundo.

Implementar entradas pelo teclado no Phaser é algo simples. A função retorna as 4 teclas de setas:

this.cursors = this.input.keyboard.createCursorKeys();

Exemplo de uso:

this.player.body.velocity.x = 0;
this.player.body.velocity.y = 0;

if (this.cursors.left.isDown) {
this.player.body.velocity.x = -this.player.speed;
} else if (this.cursors.right.isDown) {
this.player.body.velocity.x = this.player.speed;
}

if (this.cursors.up.isDown) {
this.player.body.velocity.y = -this.player.speed;
} else if (this.cursors.down.isDown) {
this.player.body.velocity.y = this.player.speed;
}


Caso permitamos ao jogador apertar ao mesmo tempo as teclas para movimentos horizontais e verticais então poderemos ter movimentos em 8 sentidos ao invés de apenas 4. Teremos também movimentos nas diagonais e não somente na vertical e horizontal.

Alguns objetos funcionam melhor quando contidos em grupo, como é o caso de balas. Assim reduz o consumo de memória.

Outro bom uso de grupo é nas explosões.

Refatorar o código com os objetivos:
- Recomendação: Refactorar sempre que o código for duplicado 3 ou mais vezes.
- Tornar a manutenção mais simples
- Reduzir o consumo de memória
- Deixar o jogo mais rápido
- Quebrar trechos de código grandes em pequenas funções
- Reduzir hard-coded trechos e constantes numéricas fixas para isso criando constanes em um state que fica mais fácil de alterar.
- Usar também valores relativos às dimensões, como this.game.width, ao inves de 800 fica mais flexível

O Phaser assume que seus sprites são orientados para a direita.

Coordenadas do Canvas

O ponto (0, 0) fica no canto superior esquerdo, portanto
O X aumenta da esquerda para a direita
O Y aumenta de cima para baixo

Formatos de áudio suportados pelo Phaser:

- Ogg e MP4 dão a maior cobertura de navegadores
- Wav deve ser evitado por ser grande
- MP3 deve ser evitado por problemas de licensa

Publicação do Jogo

Um jogo com o Phaser pode ser hospedado em qualquer servidor com suporte ao HTML 5 com um servidor web.

Uma boa alternativa free é o GitHub, mas requer conhecimento do Git.

Hospedagem free no Neocities


Ele aceita drag and drop em sua administração.
http://neocities.org
Desvantagem: não suporta criação de pastas. Todos os arquivos devem ficar no raiz do seu site. Não aceita upload de .wav.