Pitch: JSimple Game Engine - Engine para Jogos 2D
Olá, tudo bem?
A JSGE é uma engine simples para desenvolvimento de jogos e simulações em Java. Ela atua como uma camada de abstração ao Java2D, tornando as operações de desenho mais transparentes e gerenciando diversas funcionalidades inerentes ao desenvolvimento de jogos. A motivação para seu desenvolvimento inicial foi prover aos meus alunos, estudantes das disciplinas introdutórias de programação orientada a objetos, uma forma mais simples de desenhar figuras geométricas em Java. Essa abstração inicial cresceu ao ponto de eu decidir implementar uma engine que tem funcionamento e filosofia iguais à excelente engine de jogos Raylib. A documentação provida no código fonte e disponibilizada via Javadoc está em português, pois meu foco são meus alunos, mas nada impede que futuramente seja traduzida para inglês.
O link do repositório é https://github.com/davidbuzatto/JSGE
A forma mais fácil de usar é baixar um dos templates disponíveis em https://github.com/davidbuzatto/Templates-JSGE e começar o desenvolvimento. Muitas das funcionalidades implementadas são exemplificadas nos exemplos apresentados no showcase, todos contidos no pacote br.com.davidbuzatto.jsge.examples. Aliás, todo usuário é encorajado em explorar o código fonte da engine para entender como as coisas funcionam e quais as funcionalidades disponíveis. Nas realeases também há um arquivo .zip com a documentação da engine.
Note que a engine depende de algumas bibliotecas nativas para o gerencimamento de controles/gamepads/joysticks, essas parte da JInput. No template do NetBeans esses arquivos serão copiados para o diretório de distribuição automaticamente quando se controi o projeto. Nos templades do VS Code, Eclipse e IntelliJ é necessário fazer tal tarefa manualmente ou automatizá-la de acordo com a ferramenta, visto que qualquer IDE ou sistema de build para Java tem a capacidade de realizar essa tarefa de cópia, ficando a cargo do usuário configurá-la. Ao executar seu programa, tenha em mente que as bibliotecas nativas tem que estar visíveis para a JVM, seja deixando esses arquivos no mesmo diretório de execução do jogo, seja informando à JVM onde buscar tais arquivos (opção -Djava.library.path) ou colocando-os visíveis sob a variável PATH do sistema operacional.
Ainda, o showcase pode ser visto executando-se o arquivo JSGE-vx.x.x-bin.jar contido nos pacotes binários ou executando o projeto da engine, que também é mantido usando a IDE NetBeans.
Um vídeo de apresentação da engine pode ser visto aqui: https://youtu.be/-n80MKVra6w
Espero que gostem!
Eu fiquei interessado no JSGE e raylib, cara. Também fiquei interessado no seu trabalho/obra. Eu baixei o jogo do mario que você fez e achei muito bom mesmo. Muito legal ! Eu também sou programador de jogos e eu também desenvolvo uma engine minimalista, cara: https://github.com/aimowin/poly
Interessante, é legal ter um get starting da engine pois ajuda muito quem quer usar :D
davidbuzatto, como um dos gurus da computação, você conhece uma ferramenta que poderia criar uma espécie de fluxograma que represente todas as relações de funções (criadas pelo usuário, claro) da lib JSGE? Não somente dessa lib, mas também poderia ser aplicado a qualquer outro código em linguagem compatível que esteja em um repositório.
Alguns cursos técnicos nos ensinavam a criar um fluxograma da ideia e somente depois desenvolver o código. Se não for minha impressão cega demais, não tenho mais visto esta representação, mas apenas os códigos em repositórios. Não é uma crítica ao seu projeto, mas noto isso em todos os repositórios que visito para copiar ou aprender uma nova ideia. A falta dessa visão gráfica e macro do projeto facilita o entendimento e até manutenção de uma aplicação. Por eu não encontrar essa informação gráfica, fico pensando se só eu sinto sua importância.