Como posso dar uma iniciada nesse projeto?

3 respostas
matheusunitt

Olá usuários do Fórum GUJ, me chamo Jeffrey Matheus e sou novo tanto no Fórum como no universo Java. Venho trazer a vocês uma dúvida que desde meus tempos de início em programação a tenho, é a questão de “Criar uma Game Engine”. Eu sei que é um processo bastante complexo e muito bem elaborado, exige tempo e de preferência uma vasta experiência na área em que deseja atuar (No caso em que linguagem de programação utilizar). Como disse eu sou novo no universo de Java, ainda estou procurando cursos e enquanto isso vou estudando pela internet, e queria saber, não o passo-a-passo de como criar, mas simplesmente uma dica, sugestão ou algum site/vídeo por onde eu possa começar neste processo magnífico. Apesar de minha visão central querer desenvolver uma Game Engine em 3D, um 2D também seria bem plausível. :smiley:

Pelo que saiba, Java é um ambiente muito bem elaborado e que com certeza suporta bem este tipo de aplicação, um belo caso de Game Engine 3D em Java é o jMonkey Engine, caso vocês se interessem para estudar ou saber como responder: http://jmonkeyengine.com/ - http://pt.wikipedia.org/wiki/JMonkey_Engine
Obrigado, aguardo respostas!

3 Respostas

ViniGodoy

Olá.

Primeiramente, o Java não é um ambiente que suporte bem esse tipo de aplicação. Como ele não tem:

  • suporte nativo a aceleração de vídeo;
  • suporte a controles mais elaborados como joysticks, wiimote ou kinect;
  • suporte a audio 3D;
  • possibilidade de controle do processo de garbage collection

Some isso ao fato dele ser suportado em poucas plataformas, de não ter apoio da Oracle para criação de games ou multimídia e de ter poucos membros na comunidade interessados nesse tipo de aplicação, e você vai ver que, na verdade, configura-se um dos piores ambientes para se criar uma game engine.

O que a JMonkeyEngine, Minecraft, Taikodom e outros games de grande porte fazem é usar um binding, fora da JVM, chamado LWJGL.
Com ele, você pode acessar esses recursos através de métodos nativos (JNI).

Um bom caminho para se começar caso você queira fazer uma game engine é:

  • Melhorar sua matemática: Certifique-se que você conhece bem de vetores, matrizes de transformação, quaternions, planos, etc;
  • Ler o livro Game Engine Architecture do Jason Gregory. Outros materiais interessantes são os Game Programming Gems e o Ponto V;
  • Estudar alguma API gráfica, como OpenGL ou DirectX;
  • Usar engines consolidadas, como a Ogre3D, Panda, Unity e a UDK;

Eu optaria por usar uma linguagem portável, diferente do Java. Se você quer dedicar muito tempo numa engine, opte por uma linguagem que tenha plataformas mais interessantes, como o XNA (Windows, X-Box e Windows Phone) ou o próprio C++ (praticamente qualquer dispositivo). O C++ é uma linguagem bem mais difícil, opte por ele apenas se você pretende um dia se candidatar a vagas na blizzard, ea, naughty dog ou qualquer outra empresa triplo A.

Um exemplo de engine feita por brasileiros em XNA é a Ploobs Engine: http://ploobs.com.br/
Vi no seu blog que você já programa em C#, então, pode ser uma ótima para você começar por aí.

matheusunitt

ViniGodoy:
Olá.

Primeiramente, o Java não é um ambiente que suporte bem esse tipo de aplicação. Como ele não tem:

  • suporte nativo a aceleração de vídeo;
  • suporte a controles mais elaborados como joysticks, wiimote ou kinect;
  • suporte a audio 3D;
  • possibilidade de controle do processo de garbage collection

Some isso ao fato dele ser suportado em poucas plataformas, de não ter apoio da Oracle para criação de games ou multimídia e de ter poucos membros na comunidade interessados nesse tipo de aplicação, e você vai ver que, na verdade, configura-se um dos piores ambientes para se criar uma game engine.

O que a JMonkeyEngine, Minecraft, Taikodom e outros games de grande porte fazem é usar um binding, fora da JVM, chamado LWJGL.
Com ele, você pode acessar esses recursos através de métodos nativos (JNI).

Um bom caminho para se começar caso você queira fazer uma game engine é:

  • Melhorar sua matemática: Certifique-se que você conhece bem de vetores, matrizes de transformação, quaternions, planos, etc;
  • Ler o livro Game Engine Architecture do Jason Gregory. Outros materiais interessantes são os Game Programming Gems e o Ponto V;
  • Estudar alguma API gráfica, como OpenGL ou DirectX;
  • Usar engines consolidadas, como a Ogre3D, Panda, Unity e a UDK;

Eu optaria por usar uma linguagem portável, diferente do Java. Se você quer dedicar muito tempo numa engine, opte por uma linguagem que tenha plataformas mais interessantes, como o XNA (Windows, X-Box e Windows Phone) ou o próprio C++ (praticamente qualquer dispositivo). O C++ é uma linguagem bem mais difícil, opte por ele apenas se você pretende um dia se candidatar a vagas na blizzard, ea, naughty dog ou qualquer outra empresa triplo A.

Um exemplo de engine feita por brasileiros em XNA é a Ploobs Engine: http://ploobs.com.br/
Vi no seu blog que você já programa em C#, então, pode ser uma ótima para você começar por aí.

Bem interessante sua resposta, eu não pretendo iniciar já de início no 3D, pois isso seria burrice. Como não tenho tantos fundamentos, então decidi iniciar em uma plataforma 2D, mas vou ver o que consigo. Vou dar umas iniciadas em suas dicas, obrigado.

ViniGodoy

Se quiser começar por 2D, seria uma boa estudar os seguintes game engines:

  • Slick2D (Java + LWJGL);
  • Parallax (Java + Slick);
  • Cocos-x;
  • Box2D;

E também as seguintes APIs multimídia:

  • SDL ou Allegro;
  • Java2D + javax.sound;
  • XNA;

Veja como são organizados, que tipo de serviços fornecem e como.
Hoje não tem porque pensar num game engine sem pensar também na produção de bons editores.

Alguns editores, como TileMap Builder precisarão ser estudados para serem integrados em sua engine.

Criado 1 de abril de 2012
Ultima resposta 2 de abr. de 2012
Respostas 3
Participantes 2