Estamos desenvolvendo um jogo de salto e corrida com HTML5 e JavaScript e precisamos criar uma estrutura de jogo própria para isso. Aqui temos algumas dificuldades e gostaria de pedir alguns conselhos:
Temos um objeto "Stage", que representa a raiz do nosso jogo e é um empacotador div global. O palco pode conter várias "cenas", que também são elementos div. Implementaríamos uma cena para a tarefa de reprodução, pausa, etc. e alternaríamos entre elas. Cada cena pode, portanto, conter várias "Camadas", representando uma tela. Essas camadas contêm "ObjectEntities", que representam imagens ou outras formas, como retângulos, etc. Cada Objectentity possui suas próprias telas temporárias, para poder desenhar imagens para uma entidade, enquanto outra contém um retângulo.
Definimos uma cena ativa em nosso Palco; portanto, quando o jogo é jogado, apenas a cena ativa é desenhada. Chamando activeScene.draw()
, chama todas as subcamadas para desenhar, que desenham suas entidades (chamando drawImage(entity.canvas)
). Mas isso é algum tipo de boa prática? Tendo várias telas para desenhar? Cada loop de jogo, todo contexto de camada é limpo e desenhado novamente. Por exemplo, temos apenas uma camada de fundo ainda ... não seria mais útil desenhar isso uma vez e não limpá-lo todas as vezes e redesenhar? Ou devemos usar uma tela global, por exemplo, no Palco e apenas usar essa tela para desenhar? Mas nós pensamos que isso seria muito caro ...