Jogos Java em 2D: API, JGame ou Pulp?

33 respostas
J

Ola a todos… programo java para web e desktop e estou começando minhas pesquisas para jogos.
Vou começar com jogos em 2D, estilo plataforma (mário, megamen, etc)… encontrei alguns frameworks, mas não sei qual seria o melhor para usar em 2D…

  1. a API Java 2D.
  2. JGame - http://www.13thmonkey.org/~boris/jgame/
  3. Pulp - http://www.interactivepulp.com/pulpcore/

Jgame e Pulp parecem bem avançados. Mas dos dois, qual seria melhor? Haveria diferença na programação (facilidade e usuabilidade) ?

Alguem aí já desenvolveu games 2D pra dar uma dica ? Conheço pouca coisa, mas já usei a API 2D pra desenhar e mover objetos na tela. Mas agora teria conceitos de colisão e tal… teria algo em pt?

abraços

jopss :stuck_out_tongue:

33 Respostas

R

Boa tarde jopss
De uma olhada tambem no Killer Game Programming in Java (creio que ateh o cap. 12 ou 13 jah dariam conhecimento necessario para desenvolver jogos)
Link: http://fivedots.coe.psu.ac.th/~ad/jg/
Obviamente eh em ingles, mas creio que vc nao tera muitos problemas
Aqui do GUJ conheço apenas o ViniGodoy que tambem desenvolve jogos, voce pode encontrar seu blog aqui:
http://www.pontov.com.br
Em Java conheço poucas APIs que tratam da parte grafica. Me deparei ha um tempo atras com a linguagem Processing, especialmente desenvolvida para manipulaçao de imagens, videos, jogos, etc. O link da linguagem:
http://processing.org/
De tambem uma procurada no google, mas acho que os materiais mais extensos serao provavelmente em ingles.

[]'s

ps.: Eu estou estudando C++ (para desenvolvimento de jogos, juntamente com a SDL) e Lush (http://lush.sourceforge.net/). Lush e basicamente uma dialeto Lisp (tipo Scheme). De modo geral, procure desenvolver naquilo que vc ache mais divertido, ainda mais para aprender :P. Meu blog (ai na assinatura) anda desatualizado, mas pretendo mante-lo atualizado daqui p frente, quem sabe podemos trocar algumas ideias :wink:

A

ja desenvolvi jogos em 2D
mas foi tudo feito no eclipse e nao apostei muito na parte grafica…se precisar de alguma ajuda. Estou disponivel…

D

Olá.

O Java 2D não é uma API para desenvolvimento de jogos, mas os frameworks podem fazer uso dela para ajudar no processo de desenho.
Quanto a framework eu nunca usei nenhum, na verdade copiei o framework do livro Developing Games in Java.

Como trabalho de conclusão de curso eu desenvolvi um jogo (JMario).
Tem o Vikanoid do Vinícius Godoy.

A

ja desenvolvi jogos em 2D
mas foi tudo feito no eclipse e nao apostei muito na parte grafica…se precisar de alguma ajuda. Estou disponivel…

J

Opa… vlw pelas respostas…

Bom vou tentar com JGame… se alguem usou me dah um help ae…rs…

Ainda nao sei mt coisa sobre a teoria dos games… e isso q vai me dah um pouco de trabalho…

Parece-me que é necessário muitas funções matemáticas pra funcionar uma animação nao?
Existe algum “tutorial” sobre isso?

jopss :stuck_out_tongue:

J

renatoes, já tinha visto o livro, nao achei muito intuitivo… vlw…

Alkamavo, quais jogos desenvolveu? Em java? Conte-nos sua experiencia com jogos e o que vc acha…

davidbuzatto, o meu seria algo parecido com o seu JMario… teria como vc dá dicas? Como começar em java, como movimentar imagens, como vc desenhou as imagens…

Estou a fim no final do desenvolvimento criar um tutorial desde o básico !!! Isso ajuda muito quem está começando.

jopss :stuck_out_tongue:

V

Oi.

Use java 2D mesmo e java sound.
Acho que o seu objetivo agora deve ser aprender como a coisa funciona. Depois vc parte para engines e coisas que facilitam sua vida.

E é sempre bom não ter que ficar incluindo um monte de .jars.

Um tutorial que considero excelente é esse aqui:
http://www.cokeandcode.com/tutorials

Eu ia indicar meu blog também, mas parece que já fizeram isso. :lol:

Também postei na PDJ um exemplo do jogo genius, feito em Java, super-mega-hiper-ultra comentado, e muitíssimo simplificado. Baixe e dê uma estudada nos fontes: http://www.programadoresdejogos.com/osgames/

Comece a estudar na classe Principal.java, depois na classe Cor.java, Sequencia.java e, no final, vá para a Genius.java.

Espero que te ajude! E qualquer coisa, é só perguntar! :slight_smile:

V

jopss:
Parece-me que é necessário muitas funções matemáticas pra funcionar uma animação nao?
Existe algum “tutorial” sobre isso?

Na verdade, você precisa fazer algumas continhas básicas com a função System.currentTimeMillis. E trocar imagens.
O melhor material que já vi sobre isso é o capítulo “An animation framework”, do Killer Game Programming in Java (o link está ali em cima). Não é nada muito difícil.

V

Não sou ele, mas já respondendo também :slight_smile: :
http://vinigodoy.wordpress.com/meus-jogos

J

vLW viniGodoy… vo olha todos.

Optei mesmo por usar o JGame… a API eu já conheço, vamos ver no que vai dar…
To começando com um pack-man seguindo o tutorial do JGame, mas depois vou mudar.
To enrolado um pouco com a parte de animação, o “abre e fecha boca” dele, mas vou tentar, se nao funfa posto a duvida aqui.

tamos ae…

jopss

A

jopss:
renatoes, já tinha visto o livro, nao achei muito intuitivo… vlw…

Alkamavo, quais jogos desenvolveu? Em java? Conte-nos sua experiencia com jogos e o que vc acha…

Boas ca estou…
realmente n tinha visto a tua questão me desculpe…
Nao tenho um blog…mas posso postar aki as sources…pode ser?

J

opa… manda bala

jopss

T

Alguém já fez algum jogo simples usando somente C + OpenGL?
Perguntei isso porque é a única coisa que eu sei ( eu não sei C++, nem conheço essas bibliotecas de jogos por aí :oops: )

Abraços

P.S. - mas o que eu gostaria mesmo era de desenvolver jogos JME :roll:

R

tnaires,

Novamente lhe indico o blog do amigo Vinicius Godoy quanto ao jogo C + OpenGL :stuck_out_tongue:
Atualmente estou usando a SDL: http://www.libsdl.org/ tanto em Lisp quanto em C++
Tem binds para diversas linguagens, mas para C/C++ nao e necessario baixar nenhum bind
Existem diversas outras bibliotecas, inclusive especialidades da propria SDL (SDL_image, SDL_ttf, SDL_mixer, etc), portanto de uma pesquisada no google.
[google]C game api[/google]
[]'s

A

jopss:
opa… manda bala

jopss


aki esta a bala…crie projecto…substitui…compile…e divirta-se!!!

V

Eu fiz esse aqui usando soh java2d (swing). Precisa de nenhuma biblioteca e por isso fica pequeno o download

(Clica no link que vai rodar. OBS: tá incompleto o jogo)
http://www.cin.ufpe.br/~vcac/dave/DangerousDave.jnlp

tem até level editor :stuck_out_tongue:
http://www.cin.ufpe.br/~vcac/dave/LevelEditor.jnlp

Nesse site tem o tutorial q eu usei pra fazer. Tem até um tutorial pra fazer jogo 3d em java :stuck_out_tongue:
http://www.cokeandcode.com/tutorials

A

acho k vou partir para 3D tb…
hehehehe
e ja começei :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :evil: :evil: :evil: :evil:

V

tnaires:
Alguém já fez algum jogo simples usando somente C + OpenGL?
Perguntei isso porque é a única coisa que eu sei ( eu não sei C++, nem conheço essas bibliotecas de jogos por aí :oops: )

Não tem muito porque usar C hoje em dia para fazer jogos… Exceto o C simplificado das linguagem de shaders.

Tem o Campeonato Bola Gelada, no meu site, que é beem simples (para um jogo 3D), mas é em C++. Usa OpenGL e SDL (que elimina a parte chata da API do Windows).

C

Nao sei se ja mencionaram, mas alguem tem brincado com LWJGL?

V

victorcosta:
Nesse site tem o tutorial q eu usei pra fazer. Tem até um tutorial pra fazer jogo 3d em java :stuck_out_tongue:
http://www.cokeandcode.com/tutorials

E não é que é o mesmo que eu indiquei? Será que ele bate as indicações do meu blog. :lol:

Quem curtir Java2D, sugiro que dê uma olhada na JMonkeyEngine.

T

O problema é que pra aprender C++ bem, é preciso tempo, coisa que tá escassa pra mim hoje em dia…

J

Mas ele não eh osh pra 3D ?
To fazendo um pacman com o JGame… gostei nao, vo refazer com o Pulp e postar as diferenças… se JMonkey for 2D, vo testa tbm!

jopss :stuck_out_tongue:

V

Na pior das hipóteses, você aprende só a parte estruturada do C++.

Com isso, vai poder:

  1. Usar as classes prontas da STL (string, list e map, por exemplo);
  2. Criar arrays e variáveis no heap através de new e deleta-los através do delete (muito mais seguro que malloc e free);
  3. Ter mais suporte a tipos const, funções inline e praticamente não usar macros;

Só por isso, já valeu a pena.

Aí com o tempo você vai aprendendo classes, orientação a objetos e, por último, meta-programação.

Outro fator importante, que envolve mais o mercado de trabalho do que a tecnologia em si.
Se você não aprender POO hoje em dia, vai estar ilhado em tecnologias mais antigas, como o C e o VB6. Praticamente todas as linguagens novas (C++, Java, C#, só para citar 3 GRANDES exemplos) já implementam o paradigma. É uma boa você saber sobre ele se quiser manter sua empregabilidade alta.

V

Mas ele não eh osh pra 3D ?
To fazendo um pacman com o JGame… gostei nao, vo refazer com o Pulp e postar as diferenças… se JMonkey for 2D, vo testa tbm!

jopss :stuck_out_tongue:

Depois publica em algum lugar!!! :slight_smile:

E aguardamos screenshots! :smiley:

T

Na pior das hipóteses, você aprende só a parte estruturada do C++.

Com isso, vai poder:

  1. Usar as classes prontas da STL (string, list e map, por exemplo);
  2. Criar arrays e variáveis no heap através de new e deleta-los através do delete (muito mais seguro que malloc e free);
  3. Ter mais suporte a tipos const, funções inline e praticamente não usar macros;

Só por isso, já valeu a pena.

Aí com o tempo você vai aprendendo classes, orientação a objetos e, por último, meta-programação.
Pensar dessa forma é animador mesmo :smiley:

ViniGodoy:
Outro fator importante, que envolve mais o mercado de trabalho do que a tecnologia em si.
Se você não aprender POO hoje em dia, vai estar ilhado em tecnologias mais antigas, como o C e o VB6. Praticamente todas as linguagens novas (C++, Java, C#, só para citar 3 GRANDES exemplos) já implementam o paradigma. É uma boa você saber sobre ele se quiser manter sua empregabilidade alta.

Quando falei que só sabia C e OpenGL, quis dizer que só sabia isso para programar jogos. Hoje eu trabalho com Java e estudo Ruby :wink:
Aprendi C e OpenGL na faculdade.

J

Bom, minhas considerações iniciais são:

JGame é muito fácil de usar e possui um ótimo passo-a-passo. É simples e faz games simples, somente 2D. O único inconveniente eh que ele guarda as informações de mídias em arquivos texto formatado, oq deixa confuso nessa parte. Se conseguisse informar pelo proprio código ou arquivos properties seria show. Traduzi o tutorial, após finalizar o pac-man posto tudo. Faz games desktop ou applet.

Pulp é mais complicado de usar, e não possui nenhum tutorial. Ou seja, teriamos que por “tentativa e erro” olhando na API, decifrando os exemplos. Além, é somente para applet. No entanto o visual final é mais elaborado e bonito.

jME é robusto e com materiais de fácil acesso. No entanto é voltado para games 3D… dá pra fazer em 2D, mas usando bibliotecas 3D, o que poderia prejudicar a performace, como visto neste post:

http://www.jmonkeyengine.com/jmeforum/index.php?topic=2416.0

Mas seria o ideal se o game fosse em 2D mas com partes 3D, como o fundo…
Tutorial jME: http://jmonkeyengine.com/pmwiki/index.php?pagename=Tutorials.TheTutorials (primeiro link pdf é ótimo!!)

Bom vou completar meu exemplo, depois posto aqui. Vou usar JGame mesmo e depois partir para 3D/2D com jME !!

jopss :stuck_out_tongue:

V

tnaires:
Outro fator importante, que envolve mais o mercado de trabalho do que a tecnologia em si.
Se você não aprender POO hoje em dia, vai estar ilhado em tecnologias mais antigas, como o C e o VB6. Praticamente todas as linguagens novas (C++, Java, C#, só para citar 3 GRANDES exemplos) já implementam o paradigma. É uma boa você saber sobre ele se quiser manter sua empregabilidade alta.

Eu já tinha deduzido, já que vc está no GUJ.
Na verdade, estava só falando no geral. :slight_smile:

J

Fala galera… “transportei” meus posts aqui para meu blog… lá terá toda a pesquisa e o codigo dos games que eu fizer… o PacMan já tah saindo… dah uma conferida lá depois e baixem o game pra ver como ficou…

Gostaria de pedir ao ViniGodoy se posso colocar o link para o seu blog…

http://jopssgames.wordpress.com/

att

jopss

S

e o lado negro da força, XNA, alguem já brincou ?

V

Nem precisa pedir… Claro que pode!

G

Pessoal, eu sei que isso aqui tá meio antigo…

Mas queria uma ajudinha pra uma coisa. Tô estudando JGame e tem um exemplo : http://wwwhome.cs.utwente.nl/~schooten/showsrc/showsrc.php?src=http://www.13thmonkey.org/~boris/jgame/JGame/tutorial/Example4.java

Onde eles criam uns pack-mans e eles colidem com o cenário. Tem um outro exemplo onde existe um background e a gente pode dar um scrolling: http://wwwhome.cs.utwente.nl/~schooten/showsrc/showsrc.php?src=http://www.13thmonkey.org/~boris/jgame/JGame/tutorial/Example6.java

Tentei juntar um com o outro, a idéia era fazer um packman só (mudei o FOR pra criar um objeto só e coloquei o objeto como variavel glogal, assim quadno sair do metodo posso pegar informacoes dele) e deixar a tela se movimentando em função do packman. Antes a tela se movia em função do mouse. Daí minhas dificuldades :

1 . quando eu usava o mouse, a tela se movia pra sempre, era como se o cenário fosse infinito… Ainda com o mouse, se eu o movesse pra cima, ele rolava a tela pra cima infinitamente…
2 . Quando tentei colocar o movimento da tela pra ficar em função do packman. O que fiz foi pegar a parte do scrolling do segundo exemplo e ao inves de colocar as informacoes do mouse, colocar a do myPackMan.x e myPackMan.y. Mas isso deixa a tela doida.

Vocês tem um exemplo em que eu possa seguir, que funcione como um scrolling. Queria algo simples, como um personagem andando por um cenário. Mas se possível, que ele fizesse o scrolling em relação ao personagem, isto é, quando ele andasse, a tela desse o scrolling. Queria saber também como fazer para que o tela não ficasse “infinita”. Isto é, como fazer pra que o personagem chegue ao final?

Eu acho que essas dúvidas podem ser meio bestas, mas é que tô começando e realmente viajei em como fazer essas coisas… Espero ter deixado claro a duvida… Desde já, agradeço a todos!

G

Pessoal,

Acho que já sei o que é que tá dando errado. Eu ainda nao tenho certeza se e isso, entao vou dar uma olhada melhor e assim que tiver resposta mando por aqui.

G

consegui nao…

fiz tudo o que tem no tutorial da api, mas essa coisa de scroll nao consigo…

nao sei pq…

Criado 28 de fevereiro de 2008
Ultima resposta 21 de fev. de 2011
Respostas 33
Participantes 10