Consigli per un primo anno CS maggiore [chiuso]


17

Sto arrivando alla fine del mio primo anno di CS, che è stato principalmente un corso basato su Java. Mi piacerebbe bagnarmi i piedi con lo sviluppo di un gioco, ma non sono sicuro da dove cominciare.

Alcune persone hanno suggerito di iniziare con il creatore di giochi che ha un linguaggio di scripting in stile C (che dovrebbe essere facile da imparare) in quanto è probabilmente il più semplice e mi permette di concentrarmi principalmente sul design del gioco e su come l'intero gioco si adatta.

Vedo molte persone raccomandare XNA, in quanto ha una buona astrazione di opengl e directX attraverso le sue API. Ho anche sentito che C # è molto simile a Java.

Ho anche preso in considerazione la programmazione di giochi in Java poiché mi sento abbastanza a mio agio con esso e ho fatto letture extra sul multi-threading e le API grafiche 2D.

Infine, un amico mi ha mostrato di recente pygame, che suona anche molto bene, anche se non ne so molto.

Non so se il C ++ sia un buon punto di partenza, molti dei post che ho visto per gli sviluppatori di giochi per principianti non lo raccomandano per un primo progetto di gioco.

Apprezzerei qualsiasi input, specialmente da parte di coloro che sono entrati nel gioco da un background Java


5
Il C ++ è difficile, dannatamente difficile, ma a lungo termine è più facile se si tenta di avvolgerlo prima che Java lo imposti davvero. È sicuramente più difficile provare a imparare C ++ da uno sfondo Java piuttosto che imparare Java da uno sfondo C ++. joelonsoftware.com/articles/ThePerilsofJavaSchools.html
David Young,

1
Sarei morto cercando di imparare il C ++ dopo aver iniziato con Java, ho iniziato con un C ++ di vecchio stile e poi ho imparato Java. Se sei preoccupato di saltare ai puntatori, ti consiglio di imparare a programmare direttamente C e Unix. Ti mette in una mentalità completamente nuova, quindi hai meno probabilità di applicare concetti Java inapplicabili.
michael.bartnett,

Risposte:


14

Ci sono molte buone scelte. (Insegno a CS1 e CS2, nonché alla programmazione di giochi.) Innanzitutto, ovviamente, impara a pensare come uno scienziato informatico. Non rimanere troppo legato alla lingua, perché i concetti sono veramente universali.

Java è un linguaggio abbastanza buono, ma costruire un gioco in Java è un po 'noioso. Ci sono alcuni motori interessanti là fuori che rendono il processo un po 'più semplice. Sfortunatamente, può essere doloroso collegare un motore di gioco al tuo strumento di modifica.

Mi piace il motore FANG (purtroppo non posso ancora pubblicare collegamenti ipertestuali, quindi cercalo su Google.) Una parte interessante di questo progetto è l'editor online. Ciò significa che puoi iniziare subito senza dover fare confusione con le impostazioni dell'eclissi.

Non sono davvero un fan di Game Maker. La GUI va bene per le persone che non vogliono imparare a programmare ed è uno strumento di prototipazione decente (ma non eccezionale). Tuttavia, ci sono due cose che non mi piacciono. Innanzitutto, è commerciale. Non è una brutta cosa, ma se ci sono alternative open source gratuite che sono altrettanto buone (e ce ne sono) forse dovresti prima esaminarle. Il problema più grande con Game Maker è il linguaggio di scripting. Alla fine supererai la GUI e vorrai iniziare a scrivere codice. Il linguaggio di scripting in GM è piuttosto ripensante. Dato che sei un CS maggiore, sei (spero) interessato al riutilizzo del codice, all'eleganza, alla chiarezza, all'efficienza e alla modularità. Il linguaggio GM ti deluderà.

Adoro Python e Pygame. (In effetti, ho scritto un libro su di loro. Vedi tutti i miei appunti e video online sul mio sito se vuoi. Sei il benvenuto a quelle risorse, che tu abbia il libro o no.) Python è un bel linguaggio elegante che non è Troppo difficile da imparare (specialmente se sai già come programmare.) Pygame è un wrapper sul popolare motore SDL 2D. In effetti, ho aggiunto un secondo wrapper a pygame per renderlo facile da usare come Flash.

A proposito di Flash, non credo ne valga la pena. (So ​​che non l'hai chiesto) È una buona piattaforma, ma il costo e l'incertezza su come andrà sui dispositivi mobili significa che potrebbe non essere uno strumento di apprendimento eccezionale. (Ho anche scritto un libro sugli sviluppatori di giochi in Flash, ma non insegno più a Flash.)

Ecco alcune altre grandi cose da provare. Ottieni una copia di scratch dal MIT: scratch.mit.edu È fatto per i bambini, ma non lasciarti scoraggiare. È uno strumento di gioco e animazione assolutamente incredibile. La programmazione utilizza i riquadri, quindi è facile iniziare. Rimarrai stupito da ciò che puoi farci.

Potresti anche provare Alice da Carnegie Melon www.alice.org L'ultima (terza) edizione è in realtà un'estensione di Java, che utilizza i modelli Sims2.

Sia Scratch che Alice sono gratuiti.

Un altro ottimo strumento da esaminare è Blender www.blender.org

È uno strumento di modellazione 3D, ma molte persone non sanno che è anche un motore di gioco completo con un'interfaccia di programmazione drag-and-drop. Dopo aver superato le tessere, ha il supporto Python integrato.

Ora sono abbastanza interessato a HTML5 (che è a malapena HTML - È davvero HTML, CSS e JavaScript.) Non è abbastanza lì come ambiente di sviluppo del gioco, ma credo che sarà un grande giocatore. Il mio prossimo libro sarà sullo sviluppo di giochi in HTML5.

Buona fortuna a te e fammi sapere se hai altre domande.


Grazie per il tuo contributo, sto controllando il tuo sito mentre parliamo. Sono sicuro che sarà prezioso avere qualcuno con la tua esperienza che contribuisce qui
avatarX il

La gestione del puntatore non è universale = (maledice il mio Java portando.
David Young,

Vorrei sapere perché pensi che creare un gioco in Java sia noioso. Inoltre, sembra che tu stia suggerendo che Python sia meno noioso. Con così tanti fantastici framework e librerie incentrate sui giochi Java, sembra una dichiarazione molto audace da fare.
zfedoran,

1
Per un programmatore principiante, tutto in Java può essere più noioso. Confronta qualcosa come printf. In Python fa parte dell'istruzione print: stampa "% s, il tuo punteggio è% d"% (studente, punteggio). In php, devi lanciare tutte le primitive nelle classi wrapper, lanciarle su oggetti e creare un array di oggetti anonimo. Mi piace Java. (L'ho insegnato per anni e ne ho scritto un libro.) Tuttavia, se l'obiettivo è far entrare qualcuno nella programmazione del gioco, voglio un linguaggio che si allontani il più possibile.
Due pi

Grazie per aver dedicato del tempo per commentare. Mi ha aiutato a capire da dove vieni. Tuttavia, non sono ancora abbastanza venduto sul fatto che Python sia una lingua migliore per gli studenti ancora, simile a come la facoltà della mia Università ha messo in dubbio il loro recente cambiamento in Python per gli studenti del primo anno. Forse, gli studenti sono semplicemente bloccati su nuove questioni. In passato erano gli studenti a rendere tutto "pubblico statico", ora fanno fatica a capire la differenza tra i tipi.
zfedoran,

5

Dipende da quale è il tuo obiettivo e da quale parte dello sviluppo del gioco vuoi entrare.

Sei più interessato ai veri e propri aspetti di come funzionano i motori di gioco e costruendo qualcosa da zero o vuoi entrare nelle parti di sviluppo del gioco il più rapidamente possibile.

Bulloneria: XNA è un bel modo per immergere le dita dei piedi in quell'arena. Il framework fa molto per te, ma puoi sostituire lentamente ogni pezzo con il tuo codice man mano che diventi più a tuo agio con C #. L'apprendimento di C # è utile per le future posizioni di sviluppo del gioco poiché gli strumenti vengono spesso creati con C #.

Programmazione del gioco: Unity è una buona opzione qui. Gratuito e ti consente di programmare in più lingue tra cui JavaScript e C #. Sarai in grado di far funzionare le cose rapidamente, il che è una bella spinta alla motivazione. Inoltre puoi passare a un'altra lingua e persino mescolare le lingue per aiutarti ad esercitarti ad ampliare la tua comprensione.

Il bello è che sono entrambi liberi di giocare e possono essere collegati a una varietà di hardware a un costo piuttosto contenuto.


4

Potrebbe sempre fare alcuni giochi basati su Java, niente di sbagliato in questi (http://zetcode.com/tutorials/javagamestutorial/)

XNA e AS3 sono molto vicini e possono creare giochi complicati o semplici come desiderato. (anche se lo stesso vale con Java)

Una cosa da ricordare è sempre la pratica e basta giocare con il codice.


3

Java Monkey Engine

Se ti senti più a tuo agio con Java, puoi usare Java Monkey Engine per un framework da usare durante la creazione di giochi. Ha anche una discreta quantità di documentazione / tutorial incluse le istruzioni per l'integrazione con Netbeans ed Eclipse.


Devo dire che JMonkeyEngine ha un bell'aspetto. Lo verificherò sicuramente. Grazie per l'input
avatarX,

2

Unità

Direi di provare Unity . Hanno una versione gratuita e puoi bagnare i piedi in poche ore per ottenere l'idea di base seguendo due tutorial forniti da Unity:

L'altra cosa interessante dell'unità è che puoi usare JavaScript come linguaggio di scripting e puoi pubblicare il tuo gioco su Windows, MacOS, Web, iPhone e ora anche con la versione 3 su dispositivi Android.

Inoltre stanno utilizzando il motore StackExchange per Unity Answers e hanno una community meravigliosa per tutte le domande relative a Unity.


1

Ognuno di questi sarebbe un buon inizio, parlando come uno sviluppatore la cui istruzione CS iniziale era in Java.

C # è molto vicino a Java (a volte scherzo che è Java a piattaforma limitata con librerie migliori), quindi XNA potrebbe essere una buona scelta. Minecraft è sviluppato in Java con la libreria di giochi lwjgl, quindi se vuoi restare con Java, questo è un buon metodo. Naturalmente, lo sviluppo 3D è piuttosto complicato; a seconda delle tue conoscenze, esperienze e perseveranza, potresti voler aspettare il 3D (o anche il 2D in un sistema basato su 3D) fino a quando non avrai più istruzione sotto la cintura.

Per le soluzioni 2D: Game Maker è molto semplice ed è stato usato per realizzare fantastici giochi. Dovresti essere in grado di imparare il suo linguaggio di scripting abbastanza facilmente, ma potrebbe essere troppo semplice per qualcuno con un anno di esperienza Java. Sviluppo in Flash utilizzando AS3 puro ( tutorial ), che è abbastanza vicino a Java per essere tradotto facilmente.


1

Consiglio vivamente di andare con XNA. È una piattaforma abbastanza capace e ben supportata con una comunità in crescita. XNA sta davvero iniziando a trovare il suo "posto" nell'ecosistema ora che il framework viene distribuito su più piattaforme che mai (incluso Windows Phone 7). Ancora più importante, tuttavia, l'uso di XNA ti costringerà a imparare C # e lo sviluppo generale di .NET. Sarebbe opportuno che tu acquisissi esperienza con questa piattaforma indipendentemente dal fatto che tu decida di dedicarti allo sviluppo del gioco, poiché lo sviluppo di .NET è in crescita e ha un mercato del lavoro molto salutare. Java, d'altra parte, sta lentamente morendo da un po 'di tempo ormai, e gli eventi recenti sono serviti solo ad accelerare la sua scomparsa. Se il tuo programma CS, come quello che ho completato, è fortemente incentrato su Java, allora ti sarebbe utile imparare C # /. NET sul tuo tempo libero.

Anche se Java sopravvive e decidi di intraprendere una carriera nello sviluppo di Java, probabilmente finirai per doverti integrare con i sistemi .NET. Quindi, comunque vadano le cose, l'esperienza ti aiuterebbe solo a lungo termine.


indeed.com/jobtrends?q=java&l= e indeed.com/jobtrends?q=.net&l= sono piuttosto rappresentativi della domanda del mercato per entrambi. Sembra che Java sia quello in realtà in crescita.
David Young,

Non avevo considerato l'afflusso di sviluppo Java causato dal successo della piattaforma Android. Ciò probabilmente ha molto a che fare con il salto nelle aperture di lavoro correlate tra la fine del 2008 e l'inizio del 2009. Sarà interessante vedere come WP7 e la disponibilità di MonoTouch per iOS e MonoDroid per Android influiranno sulla presenza mobile di Java.
Mike Strobel,

1

Se sei interessato al design del gioco , perché non iniziare a creare un gioco di carte o qualcosa che non richiede alcuna programmazione? Ciò ti consentirà di concentrarti sul design e sulla meccanica del gioco piuttosto che farti strada attraverso API, lingue e framework che non conosci.


1

Potresti anche divertirti usando http://Processing.org . È un ottimo ambiente per l'apprendimento della programmazione grafica. Sebbene non sia strettamente uno strumento di sviluppo del gioco, ha molto da offrire. La sua lingua è un'estensione / semplificazione di Java e sarà veloce da imparare.


0

Un mio consiglio non programmabile:

Crea un progetto pulito e mostralo ai tuoi professori.

È così che ho ottenuto lavori estivi come programmatore dopo il primo e il secondo anno a scuola.


Questo può essere utile, ma in realtà non affronta la crisi linguistica / API a cui sta arrivando il PO.
Il comunista Duck il

0

Se stai solo cercando lo sviluppo di un gioco, perché imparare un'altra lingua allo stesso tempo? Starei con Java, a meno che tu non voglia imparare una nuova lingua.

Le principali opzioni per Java che conosco sono jMonkeyEngine, che è un motore di grafica 3D e generalmente considerato abbastanza buono.

E c'è jOGL, che è un wrapper Java su OpenGL. Questo è naturalmente un livello molto più basso.

Se hai appena iniziato e vuoi lavorare con la logica più che occuparti di buffer, binding shader e simili, vai con jMonkeyEngine. Se vuoi approfondire per iniziare, vai con JOGL.

Se vuoi imparare una nuova lingua, da C # e Python direi probabilmente C #. La sintassi è molto simile a Java e XNA e SlimDX sono molto buoni per la grafica. XNA è di livello superiore e ha fatto alcune cose per te. Tuttavia, ciò comporta una limitazione solo per Windows, senza Mono.

Python è un linguaggio molto semplice da ottenere (mi ci sono voluti circa una settimana al massimo con poca attenzione da un libro, proveniente da un anno di C ++). Pygame è un wrapper per le librerie SDL di C, quindi probabilmente non ha la stessa quantità di funzionalità di XNA.


0

Un altro voto per Unity . Avrai un sacco di tempo nei tuoi prossimi anni di studio CS per coinvolgere C ++ e altre lingue. Se il tuo obiettivo è quello di sviluppare un gioco, impegnarti in quello che è essenzialmente il lavoro di sviluppo di un motore richiederà troppo tempo. Se vuoi essere un progettista di motori, torna sicuramente e prova l'implementazione di livello inferiore.

Il motore Unity ti permetterà di sottrarre la maggior parte dei dettagli in modo da poterti concentrare sulla programmazione del gioco. La community sui forum e basata su Stack Exchange Unity Answers sono incredibilmente utili. Puoi programmare in Javascript o C #. Venendo da Java, ho iniziato con Javascript perché molti tutorial erano stati scritti per questo, ma sono passati a C # (che è stato un passaggio abbastanza semplice).

Penso che anche XNA e Pygame potrebbero essere buoni (dal momento che astraggono alcune delle cose più noiose), ma non ho esperienza con loro.

Infine, non mirare troppo in grande con il tuo primo gioco. Può essere molto facile sottovalutare quanto tempo impieghi a implementare funzionalità in un gioco. Inizia con una meccanica di gioco di base che ti consente di portare rapidamente il gioco in uno stato giocabile. Quindi puoi iniziare ad aggiungere altri elementi.

Divertiti!


0

XNA è un'ottima soluzione se stai uscendo da Java. C # guarderà e leggerà quasi IDENTICAMENTE su java per te, quindi sarai in grado di saltare molto velocemente senza imparare una nuova sintassi. Il framework XNA fornisce tonnellate di buone API con cui lavorare e ci sono molti codici aperti gratuiti "licenza Microsoft permissiva" per iniziare alcuni progetti.

Non consiglierei di usare Java, la maggior parte delle API grafiche sono terribili, non c'è un sacco di supporto 3d e generalmente Java funziona lentamente; non è un grosso problema per la maggior parte delle app java, ma i videogiochi richiedono MOLTE prestazioni.

Il C ++ è il modo di creare videogiochi, praticamente un periodo. Tuttavia, passando da Java -> C ++ sarà piuttosto stonante. Per non parlare del fatto che la maggior parte della programmazione grafica hardcore di basso livello è davvero in stile C, non in C ++, quindi farai un mucchio di aritmetica dei puntatori per provare a spremere più prestazioni. Può essere interessante, ma richiede tempo. Può anche volerci molto per iniziare.

Ci sono molti buoni motori di gioco là fuori come Ogre, ma poi devi passare un sacco di tempo a imparare come fare le cose prima, può sembrare eccessivamente complicato.

Fai attenzione, per quanto fantastiche possano essere le tue idee di gioco, ricorda che i videogiochi sono costosi, richiedono molto tempo per lo sviluppo e hanno grandi team di sviluppo.

Se vuoi creare un gioco ed essere l'unica persona che ci lavora, devi quasi renderlo un gioco 2D (anche se dovresti comunque iniziare con 2D) e dovrai iniziare DAVVERO, DAVVERO semplice.

Quasi tutto ciò che puoi immaginare che sarebbe divertente è probabilmente troppo ambizioso per ora.

Il mio consiglio: ottieni Visual Studio 2010 Express gratuito se non lo possiedi. Scarica lo studio di gioco XNA e il framework .net 4. Scarica una demo di XNA. Esegui la demo, quindi controlla il codice e vedi cosa fa cosa. Prova a leggere un po 'di documentazione su come XNA fa i giochi 2D.

POI, scegli il tuo gioco preferito, vecchio stile, super facile. Pac-man? Pong? Asteroids? Invasori spaziali? Mario? Scegli qualcosa di stupido, stupido facile. Quindi rifai il gioco esattamente come era. Hai abbastanza di cui preoccuparti con la programmazione e l'apprendimento di una nuova API che NON devi preoccuparti della progettazione del gioco; ti distrarrà e basta.

Quindi, una volta che hai avviato il tuo clone mario o qualunque cosa tu abbia creato, puoi iniziare a sperimentare il gameplay e provare ad aggiungere nuove cose.

Inizia con piccoli passi e sarà molto più divertente e imparerai molto di più.

Prova a passare alla modifica del codice sorgente di Quake3 in C ++ per creare un gioco e diventerai davvero frustrato, e anche se lo fai funzionare, non imparerai molto da farlo.

DIVERTITI: D


0

Veloce

L'AS3 di Flash è un linguaggio fantastico per avvolgere la testa intorno a importanti concetti OOP senza doversi preoccupare della gestione della memoria e della scrittura di file di intestazione. È anche praticamente un motore di gioco 2D completo, con un albero di visualizzazione, un sistema di eventi e tutti i tipi di altre utili funzionalità.

Esiste una ENORME comunità di sviluppatori di giochi Flash, e contrariamente alla credenza popolare, puoi sviluppare giochi Flash usando strumenti open source. Se sei su Windows, consiglierei FlashDevelop .

Direi che Flash è ancora più compatibile con più piattaforme di Java o di qualsiasi altra tecnologia tranne forse Unity. Il 99% delle persone può visualizzare contenuti Flash nel proprio browser desktop, quindi è facile condividere le tue creazioni con il mondo. La maggior parte degli smartphone sta lentamente ottenendo il supporto Flash e per iOS, l'unica piattaforma che non supporta Flash nel browser, è possibile creare app con Flash CS5 (sebbene ciò abbia un costo).

Penso che sarebbe un peccato per te dover lottare con qualcosa di più complesso come C ++ o anche C # quando potresti iniziare a imparare le basi della creazione del gioco in questo momento con AS3. Una volta capito AS3, sarà facile passare ad altre lingue in seguito. Nel mio caso, ero uno sviluppatore di Flash, ma ho imparato a programmare con Objective-C e sono riuscito a realizzare un gioco iPhone di successo. Fatti un favore e visita http://www.flashgamedojo.com/ - Non credo che rimarrai deluso!

Unità

Unity ha molti degli stessi vantaggi di Flash, ma in 3D.

Con Unity puoi programmare in C # o in UnityScript (che è javascript-y). Non è open source, ma è gratuito. È supportato molto bene e c'è una grande comunità. Il problema con lo sviluppo di giochi 3D è che per la maggior parte dei giochi avrai bisogno di molta arte e risorse. Questo può anche essere un problema con i giochi 2D, ma in generale l'arte 3D richiede molto più tempo ed è molto più difficile creare "arte programmatore".

Una nota sull'open source

Non c'è niente di sbagliato nell'utilizzo del software open source, ma ti stai modificando se lo stai usando solo perché è open source. Scegli la lingua e gli strumenti migliori che ti aiuteranno ad imparare il più velocemente con il minor attrito. Sulla stessa linea, la mentalità di "imparare prima la cosa più difficile" (cioè C ++) è pazza. Quello che dovresti davvero imparare è la logica, non la sintassi, quindi impara quale lingua ha il minor bagaglio e le barriere all'ingresso. Secondo me, questo è AS3.

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.