Evita il 3D , perché avresti bisogno di sapere come creare modelli 3D o trovarne di buoni, dovresti sapere come caricare tali modelli (spesso un compito epico in sé, purtroppo) e come disegnarli sullo schermo (ad es. OpenGL o DirectX richiedono molto lavoro per un piccolo guadagno e anche un motore come jMonkeyEngine richiede la conoscenza di come utilizzare il motore, insieme alle conoscenze di base 3D. Combinare le immagini 2D sullo schermo e spostarle è molto più semplice che gestire vertici, materiali, visualizzare matrici, trasformazioni, ecc. Ecc. Penso che tu capisca il punto.
Attenersi alle librerie e alle classi Java integrate: Graphics2D, ImageIO, ascoltatori di mouse e tastiera AWT, Canvas, API Java Sound e così via. I vantaggi di attenersi a questi invece di trovare qualche altra libreria includono: li conosci già (in una certa misura), sai che sono ben testati e stabili e generalmente hanno senso, la documentazione e le risorse online sono abbondanti e sono portatili così non devi preoccuparti di installare librerie extra con librerie native e tutto il resto.
Crea in anticipo una piccola libreria di frammenti di codice. Questi includono cose come il caricamento di un'immagine, il disegno dell'immagine su una posizione sullo schermo, il ridimensionamento dell'immagine e altri effetti, la riproduzione di un suono, il looping della musica di sottofondo, il rilevamento delle collisioni del riquadro di delimitazione, il disegno del testo. Inoltre, dispone di un'applicazione scheletro che apre una cornice (o un'applet), aggiunge una tela e i metodi di pittura e riverniciatura della tela devono essere sovrascritti e un thread dovrebbe eseguire il ciclo del metodo di riverniciatura della tela (o un timer che lo chiama). Puoi imparare queste cose se cerchi in giro Java 2D game programming
. Supponendo che tu abbia accesso alla biblioteca della tua università, dovresti avere un numero di buoni libri di giochi Java a tua disposizione; controllali e sfogliali per i frammenti sopra menzionati, e altri che mi sono perso.
Pratica in anticipo il controllo del codice sorgente e la divisione del lavoro con il tuo team.Utilizzerai Subversion, Git, Mercurial o qualcos'altro? I computer di tutti sono impostati sulla stessa versione aggiornata di Java? Crea il tuo repository, esegui il commit / push di alcuni file, assicurati che tutti abbiano il repository verificato e pronto per andare sul tuo sistema. Forse impegna un'app 'ciao mondo' e assicurati che tutti siano in grado di estrarla, modificarla e impegnarla; e assicurati di sapere come gestire l'unione (se lo eviti del tutto con una buona comunicazione o accoppia la programmazione, o sai come usare uno strumento di unione). Oppure, se non si ha familiarità con il controllo del codice sorgente, assicurarsi di trovare una soluzione che funzioni; che si tratti di programmazione in coppia mentre la terza persona fa arte o suoni, o qualcos'altro, assicurati di essere organizzato dall'inizio o perderai tonnellate di tempo.
Link ai segnalibri per siti Web che forniscono media gratuiti. Ci sono stati parecchi di questi siti di tipo elencati in altre domande qui; siti come freesoundsono perfetti per trovare rapidamente contenuti utili da utilizzare nel gioco quando non si ha il tempo di farlo da zero. Aggiungi questo sito ai segnalibri, naturalmente, così puoi fare una domanda se rimani bloccato su qualcosa. Aggiungi ai forum dei segnalibri come i forum di gamedev.net in modo da poter cercare le risposte. Se si sceglie di utilizzare una libreria di terze parti, aggiungere il sito Web ai segnalibri. Organizza questi segnalibri in cartelle e prendine il maggior numero possibile e assicurati di condividerli in modo che tutti e tre possiedano la stessa utile libreria di segnalibri. Non ci vuole molto tempo per andare in giro e raccogliere questi segnalibri e organizzarli per tipo / oggetto, ma ti fa risparmiare molto tempo quando non devi ricordare tutti quei siti Web nel mezzo del tuo progetto.
Per ulteriori suggerimenti, vedi le risposte alla mia domanda "Come prepararsi per una competizione di sviluppo di giochi?" .
Per rispondere al resto della tua domanda ... Il consiglio generale è: non puntare in alto . Tuttavia, può variare ampiamente a seconda di quanto sei preparato (ad es. I miei suggerimenti precedenti) e delle tue abilità in Java. Questo è in gran parte un giudizio personale basato sulla tua storia, ma poiché nessuno di voi ha una storia di giochi (e quindi non può giudicare il tempo necessario), mirare davvero a un livello molto basso . Ti viene in mente un'idea di base che può essere facilmente implementata in 2D senza concetti avanzati (ad es. Evitare collisioni a pixel, calcoli di fisica folle, effetti particellari, ecc.). Ma poi crea un elenco prioritariodelle funzionalità del gioco, nel modo più dettagliato possibile (ad es. suddividere ciascuna funzionalità in quante più attività possibili possibili). In questo modo, semplicemente scendi la lista il più lontano possibile e, se non riesci ad eseguire alcune attività a bassa priorità, non dovrebbe essere un grosso problema. Questo deve essere fatto con attenzione (alla fine dei tempi è ancora necessario un gioco funzionale, quindi è necessario un set minimo di attività e alcune attività dipendono da altre attività), ma in generale penso che questo sia il migliore approccio quando non sai quanto tempo ci vorrà.