Possível tema de pesquisa na área de jogos

Boa tarde pessoal!
Passei por aqui ontem, mas acho que não fui no tópico apropriado.
Estou pensando em fazer a pesquisa de mestrado com o tema Desenvolvimento de Jogos.
Estive pensando em estudar Game Engines e/ou Frameworks existentes e no final implementar alguma coisa que ajude a desenvolver jogos no Linux.
Gostaria de saber a opinião de vocês.
Acham o tema promissor?
Alguém teria alguma sugestão?
Tenho um pouco de experiência com C, Java, OpenGL e JOGL.

Obrigado pela atenção.

Oi, Felipe

Achei muito interessante esse tema de mestrado e estou torcendo para que de certo. :wink:
Quem é o seu orientador?

Se você conseguir deixar um pouco mais específico o que quer dizer com “estudar Game Engines e/ou Frameworks existentes”, talvez fique mais fácil do pessoal ajudar.

Se você não tem muita ideia do que está sendo usado para desenvolver jogos de código livre, aqui vai uma lista de algumas plataformas relativamente famosas:

Ogre3D
http://www.ogre3d.org
Essa é na verdade uma engine gráfica que foi crescendo e ganhando várias funcionalidades. Hoje em dia, além de parte gráfica (inclusive com shaders, partículas, etc.), a Ogre também pode cuidar de física e da estrutura básica do jogo.
Há muito material para consulta e exemplos disponíveis na internet.

Crystal Space
http://www.crystalspace3d.org
Esse é um SDK feito em C++ bem conhecido no meio de desenvolvimento de games. O projeto já está bem maduro e possui várias funcionalidades gráficas avançadas, tais como o Ogre. A diferença é que o Crystal Space já é um pouco mais estruturado pensando no desenvolvimento de games.

Panda 3D
http://www.panda3d.org
A Panda nasceu originalmente na Disney e depois o projeto foi adotado pela Carnegie Mellon. Daí já deu para sentir de leve a qualidade do projeto.

[b]Blender[b]
Site da game engine
O Blender é uma ferramenta de modelagem 3D. Porém, foi desenvolvida uma parte que aceitava scripts em Python e não é difícil de imaginar que rapidamente havia pessoas escrevendo scripts “jogáveis”. Assim, acabaram desenvolvendo uma game engine de verdade dentro do programa.
Nesse caso, a vantagem é que há uma sintonia muito boa entre a engine e os modelos, pois todos estão dentro da mesma ferramenta.

Bem, essas são apenas algumas referências. Certamente a tabela que o Wil (Kazuo) mandou no outro post lhe mostrarão muitas outras opções open source.

Espero que seja de alguma ajuda.
Mantenha-nos informados sobre com anda sua pesquisa e, quem sabe, podemos dar algumas “palpitadas”. :smiley:

Abraços,
Vinícius

Valeu Vinicius.
Ainda não tenho o orientador definitivo.
Estou conversando com o Profº Marco Dimas Gubitoso (Gubi), sobre a possibilidade de ele me orientar. Mas ainda não é garantido. Resolvi conversar com ele sobre este assunto porque vi que no passado ele já orientou alguns trabalhos relacionados a Game Engines. Daí ele me disse que tinha interesse no assunto e recomendou que eu entrasse em contato com vocês da USPGameDev, por que vocês já estão trabalhando com isso há algum tempo.

Sobre ser mais específico:

[ul][li]tenho a ideia de pesquisar o que é prático/produtivo de se desenvolver com cada uma destas ferramentas (citarei algumas a seguir);[/li]
[li]comentar no trabalho cada uma das ferramentas e acrescentar pontos positivos e negativos de cada uma (incluindo exemplos se possível);[/li]
[li]para terminar, tentar criar alguma outra ferramenta que facilite o desenvolvimento em alguma das etapas do processo (e mostrar porque facilitaria).[/li][/ul]

Tenho algumas ferramentas em mente como as bibliotecas OpenGL e SDL. E com relação a Game Engines: a Blender Game Engine e outras que forem interessantes de ser colocadas no trabalho.

Hoje me falaram para eu estudar a SFML por exemplo, ao invés de estudar a SDL. Mas pela importância da SDL, acho que vale a pena comentar no trabalho.

As dicas de engines que você passou são ótimas. A Engine que eu mais conheço dentre as listadas é a Blender Game Engine que antes do mestrado eu estava tentando aprender a usar.

Se a ideia vier a se tornar algo concreto, pode apostar que estarei sempre aqui. :smiley:

Obrigado pelas dicas! E se tiverem mais dicas, são sempre bem-vindas.

Abraços

Uma das minhas metas ousadas que me permito sonhar nessa vida é construir minha própria engine de jogos aberta com suporte a tanto Linux quanto Windows. Por isso acho muito interessante esse seu tema de mestrado!

Gostaria muito de ver como vai ficar, acredito que promete muito.

E bom, vou tentar dar algumas sugestões, mas adianto que considero minha opinião meio viesada e limitada, porque apesar de já ter alguma experiência mínima aqui no grupo, meu repertório de ferramentes de desenvolvimento é bem pequeno.

Sobre linguagens de programação. Acho que Java não é uma boa idéia para jogos. Ele tem o atrativo de rodar em praticamente qualquer sistema mas o custo em perfomance disso é muito alto. Creio que existam muitos casos em que Java tenha uma grande vantagem sobre outras ferramentas, mas desenvolver jogos não é um deles. Sugiriria mais que você usasse C ou C++, que é o que geralmente é usado para games (no que diz respeito a linguagens de programação). No entanto, se a aplicação da ferramenta que você pretende fazer for alguma etapa do processo que não exija perfomance, então talvez não haja problema em usar Java já que além de tudo sua familiaridade com a linguagem facilitaria o desenvolvimento.

Sobre bibliotecas, também concordo que é importante não deixar a biblioteca SDL de fora, mesmo tendo sentido na pele as limitações dela. Ela é simples, fácil e intuitiva; porém, não tem suporte a aceleração de processamente gráfico por hardware. Ela é ideal para quem está começando a desenvolver jogos, mas não recomendada para jogos mais robustos e exigentes no visual.

Espero ter ajudado!

Legal Kazuo. Eu estou bastante animado para começar, mas preciso garantir a orientação antes.

Quanto à linguagem, vou ver qual a melhor para a situação. Se fosse em Java facilitaria para mim, mas acho que vale a pena eu me esforçar um pouco mais para o resultado final ser melhor e mais útil para outras pessoas.

A SDL eu ainda não conheço muito, mas já vi que na página inicial do USPGameDev tem um link com um tutorial sobre ela. Talvez eu faça alguma comparação entre a SDL e a SFML, pois da forma como me indicaram, me pareceu que ambas têm as mesmas finalidades (talvez eu esteja enganado).

Obrigado pelas dicas também Kazuo.
Ajudou sim!

Abraços

Uma coisa que é importante diferenciar é o conceito de biblioteca e engine/framework:

Inicialmente, pensei que você iria se ater apenas a engines. Por esse motivo, todos os meus exemplos foram dessa categoria. Ou seja, são um conjunto de funções, estruturas, etc. de nível mais alto e prontos para serem usados para a elaboração de projetos de uma certa categoria.

Em contra partida, tanto a SDL quanto OpenGL e SFML são bibliotecas. Isso é, são um conjunto de operações de nível mais baixo que controlam diretamente o comportamento de algumas partes do hardware.

Basicamente, um é alto nível e outro é baixo nível. Mas acho que um exemplo será mais ilustrativo:
Com o OpenGL (uma biblioteca), é possível pintar um pixel na tela com apenas um comando. Provavelmente, a Ogre3D (uma engine) não lhe permitirá fazer isso - a menos, não tão facilmente.
Por outro lado, com a Ogre3D é possível facilmente importar um modelo 3D dentro de uma cena, enquanto com OpenGL será preciso implementar todas as funções necessárias para ler o arquivo do modelo e converte-lo em vértices para serem pintados na tela - sem comentar que o conceito “cena” não existe para o OpenGL.

Acho que deu para ter uma ideia do que estou falando, mas vale a pena pesquisar um pouco mais sobre essas diferenças para deixar tudo claro.
(Inclusive, à rigor, engine e framework não são a mesma coisa, embora sejam próximos)

Dito isso, acredito que uma das primeiras coisas que você precisa decidir é se irá tratar sobre engines ou sobre bibliotecas.

Vinícius

P.S.: Falando sobre bibliotecas, uma que é tão importante quanto a SDL, para não dizer mais importante, é a Allegro.

Entendi Vinicius. Boa observação.

Inicialmente minha ideia foi mesmo tratar de game engines apenas, mas não sei se isso seria o ideal. Vou tentar explicar um pouco melhor o que estou pensando no momento.

Como eu pretendo desenvolver alguma coisa para o final do projeto, provavelmente precisarei das bibliotecas para construir. Desta forma, seria útil eu estudá-las e também mencioná-las no trabalho. Não me imagino construindo algo de baixo nível, mas penso em alguma ferramenta que se utilize de bibliotecas para alcançar um alto nível.

Com isso, acho que valeria a pena então ter um capítulo dedicado a bibliotecas e depois um capítulo seguinte relacionado a game engines. Desta forma, ficariam nítidas as vantagens em produtividade de se utilizar game engines no desenvolvimento. Apesar que me parece que com bibliotecas temos mais liberdade no desenvolvimento podendo abusar mais da criatividade.

Da Allegro eu já tinha ouvido falar, mas nunca desenvolvi nada com ela.

Infelizmente ainda não deu certo.
O mais perto que consegui chegar para dar certo foi uma outra ideia que tive:

Fazer animações ou jogos com Blender para ensinar algoritmos de computação distribuída.

O Gubi até apoiou, mas como co-orientador. Faltou orientador.

[]s

Oi, Felipe

Tente falar com o Prof. Flávio Soares.
Mas já vou avisando, normalmente a cota de orientandos dele está sempre cheia.

Boa sorte!

Vinícius

Oi Vinicius,
já falei com o Profº Flavio Soares.
Realmente, ele já tem 10 orientandos. Se eu tivesse pensado nisso antes, talvez tivesse conseguido.

[]s