Gioco Java in un giorno o due [chiuso]


9

Siamo tre persone che realizzeranno un semplice gioco in Java come progetto scolastico (Università, primo anno). Il gioco deve essere orientato agli oggetti. Non abbiamo molto tempo, 10-20 ore al massimo. Nessuno di noi ha esperienza nello sviluppo di giochi, ma tutti abbiamo discrete competenze in Java.

Possiamo scegliere esattamente quale tipo di gioco, ed è qui che sta il problema. Quanto in alto dovremmo puntare? C'è una competizione, quindi vogliamo creare il miglior gioco nel tempo che abbiamo. Un gioco 3d non è realistico? Dovremmo usare qualche motore di gioco / librerie? Che tipo di funzionalità dovremmo evitare?


4
Il 3D punta un po 'troppo in alto indipendentemente dal tempo, considerando che non hai esperienza di gioco. ; P
L'anatra comunista il

purtroppo, ho pensato che: P
Øyvind

PONG! pagaie, palla ci sono i propri oggetti, aggiungere un punteggio. la palla colpisce una paletta moltiplicando la direzione di -1. se la palla supera il punto di paddle dell'altra squadra, fai servire la palla all'altro giocatore. o è troppo facile?>
Spooks

Penso che forse dovremmo puntare a un concetto migliore, più creativo, anche se facile da sviluppare ...
Øyvind

1
Che ne dici di condividere il tuo gioco con noi? :)
ashes999,

Risposte:


23

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à.


È un consiglio eccellente.
Alexander Gessler,

1
Punti buoni. Anche se penso che il controllo del codice sorgente possa anche rendere le cose più complicate per i principianti (immagina che qualcuno rovini il repository). Quando il tempo è critico, non si dovrebbe iniziare a usare nuovi strumenti. Ma se hai già familiarità con un VCS, allora dovrebbe sicuramente essere usato.
bummzack,

4
I consigli di Ricket per puntare in basso e utilizzare un elenco di priorità sono fantastici: si tratta di ridurre al minimo i rischi e aumentare l'iterazione. Vuoi evitare situazioni in cui devi lavorare per 8 ore prima di iniziare a lavorare. Se non funziona o se impiega più tempo, potresti finire con niente. Invece cerca di far funzionare un gioco in meno di 1 ora e poi trascorri il resto delle tue 10 ore ad aggiungere cose, giocare a test, perfezionare. Mentre giochi continuerai a trovare più cose da aggiungere.
tra il

@bummzack Concordato! Può davvero interferire, quindi esercitarsi ed esserne sicuri sono fondamentali, ma può anche essere super fantastico e utile se usato correttamente.
Ricket,

La cosa migliore per far funzionare le cose velocemente è farlo in modo estremamente programmabile (meglio di svns), il che significa che interi team siedono insieme davanti a un computer. Funziona alla grande in piccoli team (2-3 max). Vi supportate a vicenda e i problemi vengono risolti più rapidamente, non vi sentite frustrati.
Notabene,

2

Non puntare troppo in alto. Scegli qualcosa che ti interessa e costruisci qualcosa di semplice. Esempio: forse sei davvero interessato a conoscere un motore fisico. Perché non costruire un puzzle di fisica come un totem distruttore o simile? Prova a girare attorno a un elemento-core e non includere altre cose complicate come AI, rendering / grafica / shader sofisticati ecc.

Concentrati su un aspetto e cerca di trovare una meccanica di gioco adatta a questo. Se sei interessato al 3D, il tuo gioco potrebbe essere semplice come tic-tac-toe, ma concentrati su come ottenere una buona grafica 3D sullo schermo.

Non cercare di imparare troppe cose nuove contemporaneamente. Utilizzare il più possibile quadri / strumenti esistenti.

Per concludere, ecco alcune idee per un gioco "iniziale": quali sono i buoni giochi con cui "guadagnare le tue ali"?

Aggiornamento: poiché hai poco tempo a disposizione, ridurrei al minimo le "nuove cose da imparare". Un motore fisico potrebbe già essere eccessivo se non lo hai mai usato prima. Scegli anche una meccanica di gioco che già conosci, preferibilmente con un set di regole ben definito e piccolo e un numero limitato di stati di gioco.


2

Se non hai alcuna esperienza precedente nella scrittura di giochi 3D, abbandonerei immediatamente l'idea 3D. Concentrati invece su un semplice concetto di gioco e prova a implementarlo utilizzando una semplice grafica 2D. Assicurati di implementare prima le meccaniche di gioco - se hai finito prima, puoi comunque aggiungere sofisticati effetti visivi.

Ma un gioco senza gameplay non è un gioco mentre un gioco senza grafica mozzafiato può ancora essere divertente.

20-30 ore di lavoro sono pochissimo tempo per un buon gioco, quindi devi davvero pianificare e dare priorità ai tuoi compiti con attenzione o non otterrai mai un risultato adeguato.


Un buon punto davvero :)
Øyvind
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.