Ae, pessoal, tudo blz?
É o seguinte: estou há muito tempo sem postar aqui, então decidi que de hoje não deveria passar :D
Recebi um comentário anônimo perguntando quais ferramentas poderiam ser utilizadas no desenvolvimento de um Quake 3. Percebi que isso era interessante e extenso demais para responder como um simples comentário, então decidi criar um post sobre isso, então, quem quiser agradecer por isso aqui, agradeça ao cara do comentário. Vlw, anônimo! =)))
Bem, agora vamos ao assunto...
O arsenal de ferramentas existentes no mercado é muito grande, então vou tentar descrever um pouco das mais conhecidas. Esse não é o "tratado definitivo" no assunto, mas já deve dar alguma visão para quem está perdido no escuro, ok?
Em primeiro lugar, precisamos entender quais os conceitos envolvidos nesse tipo de trabalho.
Do jogo em si, podemos falar da importância do motor do jogo e da interface do jogo.
Além disso, há também os arquivos de recursos (imagens, sons, modelos 3d, vídeos, etc.).
Vou começar falando das ferramentas para os arquivos de recursos para depois falar da parte de motor e interface, já que este segundo é que é realmente o meu ramo :D
1. Modelagem 3D
a) Série 3DSMax - essa é a ferramenta mais conceituada e com maior tradição no desenvolvimento de jogos e animações gráficas. A maior parte dos motores conhecidos suportam os modelos gerados pelo 3DSMax ou possui algum plug-in para exportação para o mesmo.
b) Maya - vem ganhando um grande espaço na mídia também essa outra ferramenta também da Discreet, principalmente na geração de animações gráficas.
c) Blender - ela vem ganhando espaço principalmente pelo fato de ser free e ter um trabalho razoável. Agora, meus colegas que já trabalharam com ela dizem que sua interface não é tão intuitiva quanto a do 3DSMax ou do Maya, ok?
d) True Space - a Caligari, empresa desenvolvedora do TS, vem investindo bastante em sua ferramenta para melhor auxiliar os desenvolvedores de jogos. Desenvolveram inclusive o Game Space, uma ferramenta de modelagem 3D ESPECIFICAMENTE para jogos.
2. Imagens
a) Adobe Photoshop - essa é, sem dúvida alguma, a ferramenta mais utilizada comercialmente no tratamento de imagens para criação de texturas e efeitos.
b) Gimp 2 - essa é a ferramenta free que vem ganhando mais espaço no campo da arte gráfica 2D.
3. Sons
a) Série SoundForge - essa é a ferramenta mais conhecida no campo de edição sonora, não somente para jogos, mas também em estúdios de áudio.
* Não conheço nenhuma ferramenta free para esse no momento que seja muito usada, então vou ficar devendo, ok?
4. Interface de Jogo
É claro que a interface final deverá ser feita e "acoplada" à engine gráfica, mas eu acho que seria uma boa em seu jogo primeiro prototipar ou mesmo criar um modelo conceitual de como será. Para isso, papel e lápis podem ser muito bem utilizados. :D
Outra ferramenta que pode ser usada para isso são as ferramentas RAD que permitam criar rapidamente sistemas de menus e posicionamento de elementos gráficos para que você possa validar se a interface parece com o que você realmente quer e não vai atrapalhar quem estiver jogando. Eu utilizo qualquer ferramenta da série Macromedia Flash, então, para fazer esse meu protótipo de interface. Quem der uma olhada no livro "Game Interface Design" (infelizmente não lembro agora o nome do autor, então vou ficar devendo isso também, ok?) vai perceber que ele também aponta o Flash como uma ferramenta interessante na prototipação de interfaces.
Na verdade, nesse ponto os game makers podem ser muito bem vindos, e aí estamos incluindo o Game Maker e o Multimedia Fusion.
Agora, para criar realmente a interface, é simples: para ferramentas gráficas você se utiliza das mesmas que utilizou no projeto e então visualiza junto com o seu motor para validar então.
5. Motor do Jogo
Bem, aqui agora a coisa vai apertar. :D
Se você for um programador ou tiver programadores na equipe, talvez não queira usar motores (engine, em inglês) de terceiros e opte por criar a sua própria.
Bem, sabendo exatamente o conceito de Motor e já tendo escolhido perfeitamente a sua linguagem de programação (acho que já escrevi um post sobre isso, não?), você pode muito bem criar o seu motor, mas lembre-se: reinventar a roda dá trabalho e ela pode não sair tão redonda quanto esperávamos, ok?
Agora, se você preferir trabalhar com engines de terceiros, aí vão algumas dicas:
a) 3D Game Studio - na verdade, a engine deste é (se bem me lembro na atual versão) a A6. O 3DGS trata-se mais de um maker, formado por sua própria engine, editores de cenário e de objetos (que permitem importar e exportar para diversos formados de modelos 3d), uma linguagem de script (C-Script) que permite a programação e várias outras coisas. Em resumo, é bem completo, mas o preço é um pouco amargo. :(
b) Fly3D - essa engine foi desenvolvida por brasileiros, é um tanto mais barata que a anterior e o suporte do pessoal técnico parece bem legal (e dizem que a performance é melhor que a do 3DGS, não sei, nunca testei =D ).
c) Crystal Space - se bem me lembro é esse o nome da engine. Ah! Essa é free e open source. =)))
d) Ogre3D - engine gráfica (ouviu bem? engine só para a parte gráfica!) com suporte a D3D7, D3D9 e OpenGL. Bem legal, suporta pixel e vertex shaders e outras coisinhas mais. Ah, essa também é free e open source e é a que estamos usando em nosso projeto. =D
e) Irrlicth - é assim mesmo que se escreve isso? Também é uma engine gráfica. Bem, essa também suporta D3D9 e OpenGL. Suporta um bocado de coisas, que nem a Ogre3D. Um colega meu disse que ela parece não suportar spotlights (não sabe o que é isso? Googleia que você descobre. :D ). Ah, ela é free e open source também e um colega meu, Luiz Pestana, é quem está trabalhando com ela. :D
Bem, mas essas não são as únicas engines. Toda vez que um grande jogo é lançado com uma engine nova e ela chama a atenção de outras empresas desenvolvedoras, ela acaba sendo comercializada, como foi o caso da UnrealEngine.
Pronto!
Como o objetivo desse post era só mesmo esclarecer quanto a algumas das ferramentas mais utilizadas no desenvolvimento de um Quake 3, acho que consegui, se não esclarecer, deixar o pessoal um pouco mais confuso, não? :D