kaseiicy
Larva
- Mensagens
- 7
- Reações
- 9
- Pontos
- 3
É, eu já sei o que você tá pensando: "hurr durr como vc faz um jogo sem engine? para de falar m**** gordao". Maaaaas, deixe eu terminar de falar primeiro.
Eu não uso Game Engines prontas, eu crio as minhas próprias, agora algum de vocês devem estar pensando: "Ih alá o retardado fica reinventando a roda" maaaaaas calma lá meu "pasero".
O problema que eu sempre tive com Game Engines em geral (Unity, Cocos, Godot, Unreal, etc) é que elas todas usam tecnologias que não acho interessante, por exemplo, Godot usa uma especie de Python e C# para programar. Unreal você só consegue produzir games para jogadores com PCs fod**. Unity tem historico de alto consumo computacional para pouco resultado. Sem contar que todas essas engines usam linguagens que sinceramente eu considero o "côco do cavalo do bandido", C++, Python e C#.
Então como um bom dev Java por mais de 8 anos, eu pensei assim: Hmm, eu tenho a capacidade de criar a minha própria solução! E né que eu tenho mesmo? O meu primeiro projeto eu fiz, pasmem, com JWT puro hahahaha. Então eu comecei a estudar computação gráfica e tive meu primeiro contato com OpenGL e DirectX, cara eu me apaixonei a primeira vista com OpenGL.
OpenGL provê uma solução aberta, grátis e multiplataforma. E adaptando uma coisa e outra você pode criar para Mobile com o mesmo codigo. Maravilhoso né? Bom, no inicio não. A documentação da API não é muito amigavel para iniciantes, materiais são caros ou dificeis de achar de graça, eu TIVE que COMPRAR o livro do OpenGL 4.2, foi 130 reais na epoca, mas valeu a pena.
Outra coisa, recursos relacionados a essas APIs você só acha majoritariamente em C++. Faz sentido, C++ é o padrão da industria. Então pra estudar OpenGL/DX/VK vc precisa manjar pelo menos um pouco de c++ só para entender os exemplos.
Algumas semanas de estudo depois, eu descobri a biblioteca java que ia mudar o modo como eu crio jogos até hoje! Ela se chama LWJGL (LightWeight Java Game Library), e advinhem um jogo EM JAVA que é 3D? Minecraft. É, minecraft foi criado usando LWJGL 2!
Hoje em dia a Biblioteca evolui bastante, antigamente ela provia uma solução propria para o OpenGL, hoje ( versao 3 ) ela provê um sistema de C++ bindings ou seja não é só codigo emulado ou adaptação (Wrapper) o codigo do LWJGL usa CODIGO NATIVO C++ para prover bibliotecas C++ comuns como GLM, GLFW, OpenAL, OpenAL, Opus, Assimp e etc tudo pela JNI! então você tem um desempenho do k7!
Bom, porém, usar APIs de baixo nível certamente é mais dificil doq usar uma abstração (Unity por exemplo), mas a experiencia de criar algo com as suas proprias maos é deliciosa.
Ah para interessados nisso, não eu não comecei meu gamedev "from scratch" já criando uma engine. Criar uma engine é um subproduto de você criar jogos do zero. Você vai percebendo e entendendo partes do codigo que podem ser genericalizados e transformando isso em libs e dps com o tempo quando vc ganha dominio suficiente vc começa a construir sua game engine como uma especie de "super library", dps disso vc começa a desenvolver pequenas GUI para utilitarios dessa lib e mais futuramente vc faz uma solução All-In-One com editor e tudo mais que tem direito.
No momento eu estou no maximo que dá pra se estar do segundo passo, porque? Simples! Uma solução All-In-One é INFINITAMENTE mais dificil que tudo, sozinho é impossivel! E como eu não sou muito do tipo colaborador esse é o maximo que eu consigo chegar, porém eu estou satisfeito com as minhas proprias ferramentas.
Eu deixaria alguns links de referencia mas vai que os moderadores me banem! kkkkkkkk
TL;DR
Java junto com LWJGL3 tão suavera como usar C++ usando bibliotecas nativas! Obviamente, usar APIs de baixo nivel significa que você PRECISA FAZER TUDO DO ZERO! E eu não to zuando quando eu digo DO ZERO. Mas, a experiencia que você ganha é invaluavel e é super divertido!
Eu não uso Game Engines prontas, eu crio as minhas próprias, agora algum de vocês devem estar pensando: "Ih alá o retardado fica reinventando a roda" maaaaaas calma lá meu "pasero".
O problema que eu sempre tive com Game Engines em geral (Unity, Cocos, Godot, Unreal, etc) é que elas todas usam tecnologias que não acho interessante, por exemplo, Godot usa uma especie de Python e C# para programar. Unreal você só consegue produzir games para jogadores com PCs fod**. Unity tem historico de alto consumo computacional para pouco resultado. Sem contar que todas essas engines usam linguagens que sinceramente eu considero o "côco do cavalo do bandido", C++, Python e C#.
Então como um bom dev Java por mais de 8 anos, eu pensei assim: Hmm, eu tenho a capacidade de criar a minha própria solução! E né que eu tenho mesmo? O meu primeiro projeto eu fiz, pasmem, com JWT puro hahahaha. Então eu comecei a estudar computação gráfica e tive meu primeiro contato com OpenGL e DirectX, cara eu me apaixonei a primeira vista com OpenGL.
OpenGL provê uma solução aberta, grátis e multiplataforma. E adaptando uma coisa e outra você pode criar para Mobile com o mesmo codigo. Maravilhoso né? Bom, no inicio não. A documentação da API não é muito amigavel para iniciantes, materiais são caros ou dificeis de achar de graça, eu TIVE que COMPRAR o livro do OpenGL 4.2, foi 130 reais na epoca, mas valeu a pena.
Outra coisa, recursos relacionados a essas APIs você só acha majoritariamente em C++. Faz sentido, C++ é o padrão da industria. Então pra estudar OpenGL/DX/VK vc precisa manjar pelo menos um pouco de c++ só para entender os exemplos.
Algumas semanas de estudo depois, eu descobri a biblioteca java que ia mudar o modo como eu crio jogos até hoje! Ela se chama LWJGL (LightWeight Java Game Library), e advinhem um jogo EM JAVA que é 3D? Minecraft. É, minecraft foi criado usando LWJGL 2!
Hoje em dia a Biblioteca evolui bastante, antigamente ela provia uma solução propria para o OpenGL, hoje ( versao 3 ) ela provê um sistema de C++ bindings ou seja não é só codigo emulado ou adaptação (Wrapper) o codigo do LWJGL usa CODIGO NATIVO C++ para prover bibliotecas C++ comuns como GLM, GLFW, OpenAL, OpenAL, Opus, Assimp e etc tudo pela JNI! então você tem um desempenho do k7!
Bom, porém, usar APIs de baixo nível certamente é mais dificil doq usar uma abstração (Unity por exemplo), mas a experiencia de criar algo com as suas proprias maos é deliciosa.
Ah para interessados nisso, não eu não comecei meu gamedev "from scratch" já criando uma engine. Criar uma engine é um subproduto de você criar jogos do zero. Você vai percebendo e entendendo partes do codigo que podem ser genericalizados e transformando isso em libs e dps com o tempo quando vc ganha dominio suficiente vc começa a construir sua game engine como uma especie de "super library", dps disso vc começa a desenvolver pequenas GUI para utilitarios dessa lib e mais futuramente vc faz uma solução All-In-One com editor e tudo mais que tem direito.
No momento eu estou no maximo que dá pra se estar do segundo passo, porque? Simples! Uma solução All-In-One é INFINITAMENTE mais dificil que tudo, sozinho é impossivel! E como eu não sou muito do tipo colaborador esse é o maximo que eu consigo chegar, porém eu estou satisfeito com as minhas proprias ferramentas.
Eu deixaria alguns links de referencia mas vai que os moderadores me banem! kkkkkkkk
TL;DR
Java junto com LWJGL3 tão suavera como usar C++ usando bibliotecas nativas! Obviamente, usar APIs de baixo nivel significa que você PRECISA FAZER TUDO DO ZERO! E eu não to zuando quando eu digo DO ZERO. Mas, a experiencia que você ganha é invaluavel e é super divertido!