Jogo de Java em um dia ou dois [fechado]

9

Somos três pessoas que farão um jogo simples em Java como um projeto escolar (universidade, primeiro ano). O jogo deve ser orientado a objetos. Não temos muito tempo, 10-20 horas no máximo . Nenhum de nós tem experiência em desenvolvimento de jogos, mas todos temos habilidades justas em Java.

Podemos escolher exatamente que tipo de jogo, e é aí que está o problema. Quão alto devemos apontar? Há uma competição envolvida, então queremos fazer o melhor jogo no tempo que temos. Um jogo em 3D não é realista? Devemos usar algum mecanismo de jogo / bibliotecas? Que tipo de funcionalidade devemos evitar?

Øyvind
fonte
4
O 3D está mirando um pouco alto, independentemente do tempo, considerando que você não tem experiência com jogos. ; P
O pato comunista
infelizmente, achei que: P
Øyvind
PONG! remos, bola existem objetos próprios, adicione uma pontuação. a bola bate em uma raquete você vezes a direção em -1. se a bola ultrapassar o ponto de remo do outro time, peça que a bola sirva ao outro jogador. ou isso é muito fácil?>
Spooks
Eu acho que talvez devêssemos buscar um conceito melhor e mais criativo, embora seja fácil de desenvolver ...
Øyvind 30/03/11
11
Que tal compartilhar seu jogo conosco? :)
ashes999

Respostas:

23

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.

Ricket
fonte
Esse é um excelente conselho.
Alexander Gessler 29/03
11
Bons pontos. Embora eu ache que o controle de origem também possa tornar as coisas mais complicadas para iniciantes (imagine que alguém estrague o repo). Quando o tempo é crítico, não se deve começar a usar novas ferramentas. Mas se você já está familiarizado com um VCS, ele certamente deve ser usado.
bummzack
4
Os conselhos de Ricket para mirar baixo e usar uma lista priorizada são ótimos - eles são para minimizar riscos e aumentar a iteração. Você deseja evitar situações em que precisa trabalhar por 8 horas antes de executar qualquer coisa. Se não der certo ou se demorar mais do que isso, você pode acabar sem nada. Em vez disso, tente executar um jogo em menos de 1 hora e depois passe o resto das suas 10 horas adicionando coisas, testando, refinando. Enquanto joga, você continuará encontrando mais coisas para adicionar.
Amitp
@bummzack Concordou! Ele pode realmente atrapalhar, portanto, praticar e ter certeza de que são essenciais, mas também pode ser super incrível e útil se usado corretamente.
Ricket
A melhor coisa a fazer com que as coisas funcionem rápido é fazê-lo de maneira extrema em programação (melhor que o svns), o que significa que equipes inteiras ficam juntas na frente de um computador. Funciona muito bem em equipes pequenas (2-3 no máximo). Você se apoia e os problemas são resolvidos mais rapidamente - você não fica frustrado.
Notabene 30/03
2

Não mire muito alto. Escolha algo de seu interesse e crie algo simples em torno disso. Exemplo: talvez você esteja realmente interessado em aprender sobre um mecanismo físico. Por que não construir um quebra-cabeça de física como destruidor de totens ou similar? Tente girar em torno de um elemento central e não inclua outras coisas complicadas, como IA, renderização sofisticada / gráficos / shaders etc.

Concentre-se em um aspecto e tente encontrar uma mecânica de jogo que se adapte a isso. Se você estiver interessado em 3D, seu jogo pode ser tão simples quanto um jogo da velha, mas concentre-se em obter bons gráficos 3D na tela.

Não tente aprender muitas coisas novas ao mesmo tempo. Faça uso das estruturas / ferramentas existentes, tanto quanto possível.

Para encerrar, aqui estão algumas idéias para um jogo de "primeiros passos": Quais são os bons jogos para "ganhar asas"?

Atualização: como você está com pouco tempo, eu reduziria o "material novo a aprender" a um mínimo absoluto. Um mecanismo de física já pode ser um exagero, se você nunca usou um antes. Escolha também um mecânico de jogo que você já conhece, de preferência com um conjunto de regras pequeno e bem definido e uma quantidade limitada de estados de jogo.

bummzack
fonte
2

Se você não tem experiência anterior em escrever jogos em 3D, eu abandonaria a ideia em 3D imediatamente. Em vez disso, concentre-se em um conceito simples de jogo e tente implementá-lo usando gráficos 2D simples. Certifique-se de implementar a mecânica do jogo primeiro - se você tiver terminado mais cedo, ainda poderá adicionar efeitos visuais sofisticados.

Mas um jogo sem jogabilidade não é um jogo, enquanto um jogo sem gráficos impressionantes ainda pode ser divertido.

20 a 30 horas de trabalho são muito pouco tempo para um bom jogo, então você realmente precisa planejar e priorizar suas tarefas com cuidado ou nunca obterá um resultado adequado.

Alexander Gessler
fonte
Um bom ponto, de fato:) #
Øyvind 29/03