Se você planeja começar como desenvolvimento de jogos, saiba que só há três formas de se construir um jogo, utilizando: uma engine, uma framework ou fazendo tudo do zero.
Só para constar eu sou mais adepto da última opção. A diferença entre elas são:
- Engine: Vem com editor visual, suporte a múltiplas plataformas, diversas coisas já prontas (principalmente coisas de baixo nível, ex: motor de física), fácil de começar. Saber programar não é necessário.
- Framework: Não possui editor visual, suporte a múltiplas plataformas, algumas coisas já prontas (principalmente relacionadas a entrada, sons e graficos, porém sem fisicas e coisas similares). É necessário saber programar de forma Intermediária.
- Do zero: Não possui editor visual, só suporta múltipla plataforma se você programar o jogo para tal, não tem nada pronto (com excessões de algumas bibliotecas). É necessário programar em nível Avançado e ter muitos conhecimentos específicos sobre o processo de renderização.
Alguns exemplos de framework são: XNA(C++), Monogame(C#) e LibGDX(Java).
Então você me pergunta: “Ain, se usar engine é mais fácil porque eu vou bater cabeça com coisas difícil?”, então, apesar de ser mais fácil de se começar utilizar engines prontas pode fazer você ter uma baita dor de cabeça se o tipo de jogo que você for desenvolver é muito inovador ou tem mecânicas não usuais.
Ao utilizar uma framework você passa a ter mais controle sobre o jogo, podendo implementar coisas que anteriormente não seriam possíveis ou levariam bastante tempo para implementar em uma engine pronta.
E ao utilizar somente APIs de “baixo nível” você tem ainda mais controle sobre tudo, inclusive a memória e a placa de vídeo diretamente! Apesar disso apresentar uma gradissíma responsabilidade. Um exemplo de jogo feito do zero, que se saiu muito bem é o jogo chamado Equilinox (por ThinMatrix).
Se ainda não viu o vídeo do jogo na página da Steam recomendo que veja.
Tudo o que você viu foi feito em Java (parte GLSL para os shaders), utilizando uma coleção de bibliotecas chamada LWJGL (Lightweight Java Game Library). Tudo foi feito na mão, pós processamento, físicas, modelos, renderização, interface, áudio, tudo!
Observe também que as especificações mínimas são bem baixas, devido ao executável não ser entupido de coisas que você não precisa.
Para começar a desenvolver jogos você deve primeiro ter vontade de aprender! Até porque mesmo utilizando uma engine, criar um jogo não é tarefa fácil. Na verdade, criar jogo lixo qualquer um consegue, mas criar jogos bons não é tarefa para qualquer um!
Eu vou abordar futuramente o meu método de desenvolvimento, que é utilizando LWJGL. Para começar você só precisa ter conhecimentos básicos/avançados de Java, apesar de eu ter falado que este método requer conhecimentos Avançados isto só vale se você não estiver seguindo um tutorial xD.
Fato é que muitos dos que começam a desenvolver um jogo, largam após alguns dias, semanas e os mais resistentes alguns meses. Isso se chama falta de vontade, desenvolvimento de jogos é algo complicado que deve ser planejado com antecedência, começa a desenvolver algo ás cegas somente irá te levar a decepção.
Outra dica importante, começe com projetos PEQUENOS! Eu sei que muitos querem logo sair fazendo aquela ideia louca que vai revolucionar o mercado dos jogos, mas não é assim que funciona meu bacano. Começe com jogos 2D, mesmo se você não gosta de 2D, jogos 2D são bem mais simples de serem criados e as mecânicas a serem aprendidas serão de utilidade para o 3D no futuro.
Não estou dizendo que você não pode começar com 3D, porém começar com 3D irá por uma carga de aprendizagem muito maior sobre você.
Enfim galera, apesar de ser bastante complexo, desenvolvimento de jogos é algo bastante divertido, você aprende diversas coisas novas e interessantes e de quebra ainda constrói algo legal.
Até a próxima, fui!