Boa noite senhores.
Na faculdade escutei boatos de que o professor nos pedirá para fazer um jogo em C no proximo semestre, mas não sabem se é C ou C++. Qual é melhor para desenvolver jogos? Ou só uma delas é viável (ou possível)?
Para quem já usou a linguagem (acredito que muitos pela popularidade da linguagem):
Alguém sabe como montar um bom ambiente de desenvolvimento? Quais as melhores ferramentas? Quero montar as coisas direitinho antes de ir para o código de vez, em relação ao código eu me viro, afinal, java não é a primeira linguagem que aprendi e nem vai ser a última.
Obs.: Prefiro desenvolver em Linux, afinal, nem tenho windows na minha máquina. Particularmente uso Ubuntu, mas acho que se tratando de Linux não deve ter diferenças entre as distros.
Sendo em c++ ou c, de qualquer maneira você vai desenvolver sem problemas.
Em termos de ferramentas, se você já trabalha com linux, aconselho usar o qt creator e o framework qt, tanto para plataforma móvel quanto para desktop. O desenho dele é completamente OO.
Muitas empresas hoje o estão empregando devido ao quesito multiplataforma, e dentre alguns softwares escritos usando-o estão o próprio kde e o virtualbox.
Existem muitos exemplos e a documentação é a melhor dos frameworks que eu conheço.
Para jogos, existem dezenas de engines opensource e free, no qual você pode aproveitar para acelerar o desenvolvimento do seu projeto.
Essa lista cita os engines e e as linguagens que elas trabalham:
Primeiro de tudo você precisará saber qual é a API gráfica que seu jogo irá usar. Vai ser 2D em SDL? 3D em OpenGL? Ou será que vai usar o Allegro? Sem isso, fica difícil te orientar sobre como montar o ambiente.
Numa dessas, o tal jogo é no console, seco, como um jogo da velha ou mancala. Tudo vai depender do que seu professor exigir.
Quanto à linguagem, eu acho o C++ mais fácil de desenvolver jogos que o C.
O argumento do Bruno não é válido. Se você ainda não souber OO, não programe com OO, mas ainda assim use C++. Você terá acesso a classes utilitárias como o vector, map e string e poderá usar operadores como new e delete. Diferentemente do Java, a orientação à objetos não é obrigatória na linguagem.
Aqui no meu portal há alguns artigos que talvez você se interesse: Ponto V! - Roadmap C++: Dicas de livros de C++, do básico até o avançado. Um ambiente para criar jogos com a SDL e a OpenGL: Mostra como configurar um ambiente com a SDL e a OpenGL. Ainda que você não use essas APIs, o artigo da dicas de como organizar as pastas e arquivos no geral; Ponto V! - Java no desenvolvimento de jogos: Apresenta um comparativo entre as linguagens java e C++ para essa área.
Todos os links são muito úteis, estou olhando todos os materiais que vocês me mostraram. Sobre OO, eu vou tentar usar, gosto muito de Java por causa disso, vou tentar adaptar à C++ na medida do possível. Sobre a biblioteca QT, não posso fazer usando o GTK? Acho que a popularização dela é maior. Acho que para isso precisarei de outros Frameworks, IDEs, etc… mas se eu não encontrar um meio de usar GTK, eu coloco as bibliotecas do QT no meu Ubuntu, sem problemas.
Acho que vou precisar ler bastante ainda para entender as perguntas que o Vini me fez, ainda bem que no site dele tem uns livros para download. Obrigado Vinicius.
Todos os links são muito úteis, estou olhando todos os materiais que vocês me mostraram. Sobre OO, eu vou tentar usar, gosto muito de Java por causa disso, vou tentar adaptar à C++ na medida do possível. Sobre a biblioteca QT, não posso fazer usando o GTK? Acho que a popularização dela é maior. Acho que para isso precisarei de outros Frameworks, IDEs, etc… mas se eu não encontrar um meio de usar GTK, eu coloco as bibliotecas do QT no meu Ubuntu, sem problemas.
Acho que vou precisar ler bastante ainda para entender as perguntas que o Vini me fez, ainda bem que no site dele tem uns livros para download. Obrigado Vinicius.[/quote]
as bibliotecas do qt já estão inclusas na maioria dos gerenciadores de janelas linux, assim como as do gtk. Mas enfim, se for usar gtk use o anjuta, porque ele se entegra com o glade.
Detalhe que gtk+ não possui um desenho muito bom, mas ela é ótima, se você não se preocupar com OO. http://www.anjuta.org/
Se for fazer um jogo, você pode simplesmente usar a SDL diretamente (se for 2D) ou a SDL com o OpenGL. A vantagem é que a aplicação fica extremamente portável. Além disso, a SDL é específica para trabalhar com aplicações de mídia e extremamente simples.
[quote=gqferreira][quote=juliocbq]
Detalhe que gtk+ não possui um desenho muito bom, mas ela é ótima, se você não se preocupar com OO. http://www.anjuta.org/[/quote]
Como assim? GTK não fica bom com orientação a objetos?
Acho que vou fazer em QT mesmo então…
Pegando o caminho das pedras…[/quote]
Como o vini citou acima não é necessário sequer usar um framework robusto para criar um jogo, podendo codificar apenas com a biblioteca padrão e usando directx ou opengl.
A idéia do qt é que grande parte das estruturas de dados dele é type safe, e você não vai ter que se preocupar “muito” com overflows e memory leaks. E levando em conta que os widgets(componentes) e dispositivos como QPaint são acelerados no hardware, porque já usam opengl ou directx dependendo da plataforma. Pode facilitar o desenvolvimento
A Allegro é a concorrente direta da SDL. A diferença entre as duas é a mesma do Netbeans e do Eclipse. Enquanto a Allegro é um pacotão com os recursos mais comuns em um único “bundle”, a SDL é totalmente modular.
Claro que se você juntar todos os pacotes padrão da SDL, acabará com algo muito parecido com a Allegro nas mãos.
Gosto da SDL porque você pode só pegar o núcleo dela e utilizar junto com OpenGL e OpenAL na hora de fazer aplicações 3D.
Mas se você quer fazer só um jogo 2D, use qualquer API dessas e estará muito bem servido.
Legal, acho que meu primeiro jogo será 2D mesmo, mas estou gostando de ver que o topico está indo longe, estou observando de camarote os “experts” em game, muito bom isso.
Estou ate fazendo um simples jogo 2D para rodar em Canvas. Estou seguindo um tutorial.[/quote]
Estava fazendo um em jme, tive uns tropecos, e decidi parar para aprender mais antes de conclui-lo. O meu primeiro funcionou legal até, so que não usei todos os recursos disponiveis, ficou bem redundante (gambiarrônico), esse segundo quero faze-lo “profissional”.
Você está seguindo algum livro, tutorial (como disse)? Está na web?
Estou ate fazendo um simples jogo 2D para rodar em Canvas. Estou seguindo um tutorial.[/quote]
Estava fazendo um em jme, tive uns tropecos, e decidi parar para aprender mais antes de conclui-lo. O meu primeiro funcionou legal até, so que não usei todos os recursos disponiveis, ficou bem redundante (gambiarrônico), esse segundo quero faze-lo “profissional”.
Você está seguindo algum livro, tutorial (como disse)? Está na web?
Obrigado![/quote]
Ah sim, Ferreira.
Realmente fui breve no outro comentário. Mas elucidando melhor… Fiz um joguinho bem simples em HTML5 Canvas, seguindo esse tutorial. O jogo é do estilo breakout - aqueles que você controla um bloco retangular e uma bolinha fica “quicando” no bloco em direção à parede e os outros blocos superiores.
É um bom tutorial para começar com Canvas do HTML. E acho que essa tendência será bem forte no futuro em programação de jogos via browser. Com esse breve conhecimento, tentarei criar um jogo simples mas que seja uma ideia minha. Ao mesmo é uma forma de praticar e entender mais técnicas.
Tente dar uma olhada, o código do jogo é pequeno e simples de entender (apesar do último algoritmo para colisão).