Evite o 3D , porque você precisaria saber como criar modelos 3D ou encontrar bons, precisará carregar esses modelos (geralmente uma tarefa épica em si mesma, infelizmente) e como desenhá-los na tela (por exemplo, O OpenGL ou o DirectX exigem muito trabalho para obter pouco ganho, e mesmo um mecanismo como o jMonkeyEngine requer conhecimento de como utilizar o mecanismo, juntamente com o conhecimento básico em 3D). Blindar imagens 2D na tela e movê-las é muito mais simples do que lidar com vértices, materiais, visualizar matrizes, transformações etc. etc. Acho que você entendeu.
Fique com as bibliotecas e classes Java integradas: Graphics2D, ImageIO, ouvintes de mouse e teclado AWT, Canvas, API Java Sound e assim por diante. Os benefícios de permanecer com eles em vez de encontrar outra biblioteca incluem: você já os conhece (até certo ponto), sabe que eles são bem testados e estáveis e geralmente fazem sentido, a documentação e os recursos on-line são abundantes e são portáteis, portanto você não precisa se preocupar em instalar bibliotecas extras com bibliotecas nativas e tudo mais.
Crie uma pequena biblioteca de trechos de código antes do tempo. Isso incluiria coisas como carregar uma imagem, desenhar a imagem para uma posição na tela, escalar a imagem e outros efeitos, tocar um som, repetir música de fundo, detecção de colisão de caixa delimitadora, desenhar texto. Também tenha um aplicativo de esqueleto que abra um Quadro (ou Applet), adicione um Canvas a ele, e os métodos de pintura e repintagem da tela devem ser substituídos, e um segmento deve estar repetindo o método de repintar a tela (ou um temporizador chamando isso). Você pode aprender essas coisas se pesquisar Java 2D game programming
. Supondo que você tenha acesso à biblioteca da sua universidade, você deve ter vários livros de jogos Java à sua disposição; verifique-os e navegue neles para obter os trechos mencionados acima e outros que eu perdi.
Pratique o controle da fonte e a divisão do trabalho com sua equipe antes do tempo.Você vai usar Subversion, Git, Mercurial, ou algo mais? Os computadores de todos estão configurados para a mesma versão atualizada do Java? Crie seu repositório, confirme / envie alguns arquivos, verifique se todos estão com o repositório em check-out e prontos para entrar no seu sistema. Talvez cometa um aplicativo 'olá mundo' e garanta que todos possam extrair, modificar e cometer; e saiba como lidar com a mesclagem (se você a evita totalmente com boa comunicação ou programação de pares ou se sabe como usar uma ferramenta de mesclagem). Ou, se você não estiver familiarizado com o controle de origem, certifique-se de descobrir uma solução que funcione; seja a programação em pares, enquanto a terceira pessoa faz arte ou sons, ou qualquer outra coisa, certifique-se de estar organizado desde o início ou você perderá muito tempo.
Marque links para sites que oferecem mídia gratuita. Existem vários sites desse tipo listados em outras perguntas aqui; sites como freesoundsão perfeitos para encontrar rapidamente mídias úteis para usar em seu jogo quando você não tem tempo para fazê-lo do zero. Marque este site como favorito, é claro, para que você possa fazer uma pergunta se ficar preso em alguma coisa. Marque fóruns de favoritos, como os do gamedev.net, para poder procurar respostas. Se você optar por usar uma biblioteca de terceiros, adicione o site aos favoritos. Organize esses indicadores em pastas, pegue o maior número possível e compartilhe-os para que todos os três tenham a mesma biblioteca útil de indicadores. Não demora muito tempo para coletar esses indicadores e organizá-los por tipo / assunto, mas economiza muito tempo quando você não precisa se lembrar de todos esses sites no meio do seu projeto.
Para mais sugestões, consulte as respostas à minha pergunta "Como se preparar para uma competição de desenvolvimento de jogos?" .
Para resolver o restante da sua pergunta ... O conselho geral é: não mire alto . No entanto, isso pode variar amplamente, dependendo de como você está preparado (ou seja, minhas sugestões acima) e de suas habilidades em Java. Esse é um julgamento amplamente baseado em sua história, mas como nenhum de vocês tem histórico de fazer jogos (e, portanto, não pode julgar o tempo necessário), mire realmente muito baixo . Crie uma idéia realmente básica que possa ser facilmente implementada em 2D sem conceitos avançados (por exemplo, evite colisões pixel a pixel, cálculos de física maluca, efeitos de partículas, etc.). Mas, em seguida, crie uma lista priorizadados recursos do jogo, com o máximo de detalhes possível (por exemplo, divida cada recurso em tantas tarefas separadas quanto possível). Dessa forma, você simplesmente desce a lista o máximo possível e, se não realizar algumas tarefas de baixa prioridade, não deve ser um grande problema. Isso precisa ser feito com cuidado (você ainda precisa de um jogo funcional no final do período, para que haja um conjunto mínimo de tarefas que precisam ser realizadas e algumas tarefas dependam de outras), mas, em geral, acho que esse é o melhor abordagem quando você não sabe quanto tempo as coisas levarão.