Qual é o princípio básico para criar um jogo 2d em java?
2 Respostas
Depende do quanto você conhece da linguagem, da complexidade do jogo, e do quanto você está disposto a fazer na mão ou usar bibliotecas prontas.
O mais básico seria algo como um card game ou um jogo de adivinhação, que não requer animações necessariamente. Isso poderia ser feito com componentes padrão do Swing, como JLabels e afins.
Um jogo mais complexo mas ainda sem usar nada externo poderia usar Java2D, desenhando os elementos do jogo (jogador, inimigos, interface, cenários) num canvas (JPanel). Isso te permite fazer jogos razoavelmente complexos, embora não seja possível usar aceleração de hardware, o que limita a quantidade de coisas que se pode fazer e os efeitos a serem aplicados. Coisas como animações, efeitos e física teriam que ser programados por vocês.
Usando uma biblioteca pronta, como a libGDX, você tem muito mais ferramentas e recursos prontos, como animações, aceleração por hardware, carga de sprites e modelos 3D e física.
Respondendo às suas perguntas:
Os sprites são icones de jlabel?
Podem ser, embora eu recomende usar Java2D e desenhar diretamente no canvas. Vai parecer mais complexo no começo, mas te dará mais liberdade.
Que formato é melhor para as imagens?
Depende muito do que você quer fazer, mas recomendo png por ser bem suportado e permitir transparências.
Como eu faço a física?
Há tutoriais para sistemas simples de física, com forças e colisões. Também há bibliotecas só para isso, como a Box2D.
Abraço.