luc-gh / Hello-World_libGDX

Jogo muito básico que apresenta os conceitos, classes e funções usadas pela libGDX, em Java.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Hello-World_libGDX

Este repositório possui os arquivos para criar um jogo muito básico em Java, para apresentar conceitos, classes e funções usadas pelo framework libGDX.

Os códigos presentes aqui e em outros repositórios desta lista, foram produzidos com base no tutorial da Happy Coding, que você pode acessar aqui.

Tabela de commits

Modificações no arquivo Hello_World_Game.java por commit
Mensagem de texto Upload inicial e do executável (DesktopLauncher.java) onde apenas um texto é escrito na tela
Desenho de um círculo Atualização do arquivo principal para que seja desenhado um círculo na tela
Animação de um círculo Atualização do arquivo principal para que o círculo desenhado se movimente repetidamente
Delta Time Atualização do arquivo principal para que o movimento do círculo esteja compatível com o FPS

 

Lógica do projeto

LibGDX é um framework de desenvolvimento de jogos que oferece vários recursos úteis (um loop de renderização de 60 fps, animação, entrada, física e iluminação, por exemplo) e permite que você implante como um executável em desktops, uma página HTML/JavaScript ou um Aplicativo para Android ou iOS.

Um projeto libGDX é, na verdade, vários projetos: um projeto principal que contém toda a lógica do seu jogo e, em seguida, projetos específicos de plataforma que apontam para seu projeto principal e podem ser implantados em uma plataforma específica.

A configuração do espaço de trabalho para desenvolver com libGDX depende da IDE utilizada para programar em Java, da versão do Gerador de projetos libGDX e das configurações do ambiente computacional utilizado, mas as etapas de criação do projetos em si, são:

  • Abrir o Gerador;
  • Definir o nome do projeto, da classe principal e do pacote;
  • Definir o local do projeo no arquivos;
  • Definir os projetos secundários (específicos para cada plataforma);
  • Escolher as extensões que serão utilizadas;
  • Gerar e abrir o projeto no ambiente preferível.

Tendo o ambiente configurado, é preciso entender que libGDX utiliza funções cíclicas (Lifecycle functions) que são acionadas quando um evento ocorre na execução.

Para vincular tais funções, a classe principal deve extender [extends] a classe ApplicationAdapter ou implementar [implements] a classe ApplicationListener para sobrescrever (@Override):

  • create()
  • resize(int width, int height)
  • render()
  • pause()
  • resume()
  • dispose()

Diante disso, a estrutura do projeto é a seguinte:

  • O projeto principal contém a classe que estende ApplicationAdapter e os projetos específicos da plataforma instanciam essa classe para criar um aplicativo.
    A primeira versão da classe Hello_World_Game.java (Commit 1) utiliza as funções create(), render()e dispose() para desenhar uma mensagem de texto simples no meio da tela.
  • LibGDX usa OpenGL para desenhar coisas na tela. Isso permite escrever um código de desenho eficiente.
    Para desenhar figuras simples na tela foram usadas funções da classe ShapeRenderer na segunda versão da classe principal.
    Algo que vale a pena notar é que com OpenGL (e, portanto, em libGDX), o ponto de coordenadas (0,0) está no canto inferior esquerdo da tela.
    Em outras palavras, a parte inferior da tela tem a posição 0 de Y, e a posição Y aumenta à medida que você se aproxima da parte superior da tela.
  • A criação de animações requer três etapas básicas (normalmente):
    • Armazenar o estado da "tela" em um conjunto de variáveis;
    • Use essas variáveis para desenhar a animação a cada quadro;
    • Atualizar essas variáveis ao longo do tempo para que a animação ocorra.
    O commit 3 da classe principal traz um código que mostra um círculo que se move na tela.
    As variáveis circleX e circleY mantém a posição do círculo, e as variáveis xVel e yVel mantêm a velocidade horizontal e vertical do círculo. Na função render(), move-se o círculo de acordo com a velocidade e, em seguida, verificamos se ele está saindo dos limites da tela. Nesse caso, invertemos a velocidade do círculo, o que o faz saltar das bordas da tela.
  • E a quarta versão do código principal consiste numa alteração no código para impedir que o jogo seja executado de forma inconsistente dependendo da taxa de fps do dispositivo em que o jogo está sendo executado.
    Para controlar a velocidade da exucução, libGDX possui a função Gdx.graphics.getDeltaTime(), que retorna quanto tempo se passou desde o último frame (fps) executado.
    Desse modo, ao armazenarmos as velocidades com valores em frames por segundo em vez de valores por frame, podemos multiplicar nossas taxas pelo Delta Time para obter a distância que devemos mover cada frame. Com isso, círculo se moverá na mesma velocidade, não importa qual seja a taxa de fps do dispositivo.

About

Jogo muito básico que apresenta os conceitos, classes e funções usadas pela libGDX, em Java.


Languages

Language:Java 100.0%