Solucionado (ver solução)
Solucionado
(ver solução)
15
respostas

Mover herói para um posição fixa

No curso foi mostrado que para mover o herói em uma posição fixa, basta mexermos no seu X ou Y, sendo assim, eu poderia move-lo sempre para a frente como feito no primeiro exemplo:

this.node.y += 1;

Certo ? Porém, como faço para ignorar o FPS nesses casos ? Pois meu note esta entre 5 e 12 de FPS, então a nav não pode rapidamente igual no exemplo dado.

Obs: Tentei multiplicar o 1 pelo dt mas ficou mais lento ainda kkk

15 respostas

Bom dia Matheus, a ideia é realmente multiplicar o a velocidade da nave pelo parâmetro "dt" do método update mesmo.

Ele ficou mais lento sim, pois agora a nave está se movendo a 1 pixel por segundo enquanto que antes ela estava se movendo a 1 pixel por frame, que no se caso ficava entre 5 e 12 pixels por segundo.

Isso aconteceu no vídeo onde eu expliquei o Delta time, na aula 3 do curso.

Você sabe por que está rodando tão devagar no seu note o jogo? O ideal era que o jogo rodasse a pelo menos 24 FPS, esse é o limite do que nosso olho aceita sem que o jogo pareça estar com lag.

Curiosidade: Os filmes costumam rodar a 24 FPS no cinema, alguns hoje em dia filmam a 48 FPS como o Hobbit.

Fala ai Ricardo, eu fiz exatamente como nas aulas , vou te mostrar o código:

update: function (dt) {
    this.node.y += 1000 * dt;
},

Então nesse caso, estou movendo 1000 px por segundos, certo ?

Sobre o FPS baixo, não faço idéia, eu testei pelo simulador, ai foi de boa, ficou bem melhor, bem mais natural a movimentação da nave, não deu aquelas travadas, o problema é quando rodo pelo brower.

É bem estranho pois o note é bom, é um mac com: i7, 8gb de ram com SSD e tals.

solução!

Exato, vc está movendo ele 1000 px por segundo no eixo Y.

Sobre o FPS, qual browser vc ta usando? tenta abrir o profile do browser e ver se o problema é no consumo de RAM ou no processamento mesmo.

As veze pode ser inclusive o fato do jogo não estar utilizando WebGL pra renderizar o jogo. No canto superior esquerdo o terceiro item é um menu dropdown com duas opções WebGL e Canvas, qual delas ele está exibindo pra vc?

Estou usando o chrome, esta mostrando WebGL.

Sobre o processo, esta consumando cerca de 170mg de RAM, porém a CPU esta alto, esta consumindo cerca de 180.

O jogo já começa lento? Quantos objetos você tem na cena? Qual chamada de método o profiler mostra que está travando o processamento?

Sim, o jogo já começa lento, vou lhe mandar um print:

Game

Sobre o profiler, não sei ver qual o processa esta travando kkk

Será que pode ser o meu png muito pesado ou com muitos detalhes ?

Não achei a imagem da nave usada no curso para baixar, se puder me mandar o link, eu baixo e testo com ela.

Qual o tamanho da sua imagem, em pixels e em MB?

Tamanho em px 383x381, em arquivo físico 8kb, mas quando eu adiciono ela na cena, eu mudo o tamanho para 75x75(Não sei se tem diferença)

Não é esse o problema não, o arquivo está pequeno o suficiente. Teria que ver no profiler mesmo o que está acontecendo.

Como faço isso ?

Você tem que abrir o inspetor do chrome, e ir na aba "Performance". Ele vai pedir pra você "gravar" o jogo/site executando por um tempo e depois ele te exibe uma time line onde você pode ver o que aconteceu no tempo que ele gravou.

Tem esse tutorial do google que mostra um pouco de como essa ferramenta funciona. https://developers.google.com/web/tools/chrome-devtools/evaluate-performance/timeline-tool?hl=pt-br

Se achar o local onde ele ta demorando pra processar posta aqui um print.

Fala ai Ricardo, achei o problema(vou procurar a solução), o problema é porque meu Chrome não tem suporte a WebGL, qualquer jogo que eu abro com WebGL ele não roda, tenho que abrir pelo Firefox.

Acabei de rodar o jogo no Firefox e esta perfeitinho, com FPS total kkk, igual no simulador.

Preciso ver porque o Chrome esta assim, tem alguma idéia ?

Atualizei o navegador, problema resolvido \o/.

Sem problemas, eu imaginei que pudesse ser isso. Mas como o jogo tava mostrando WebGl no painel achei que ele tivesse rodando em WebGL.

Que bom que conseguiu solucionar.

Sem problemas, ainda teram muitas dúvidas para me ajudar kkkkk