it-swarm.it

Programmazione del gioco: C # o C ++?

Ho deciso che cosa voglio davvero è fare la programmazione del gioco. Quindi la domanda è, come un 18enne che vuole imparare la programmazione autodidatta, qual è il linguaggio di programmazione più adatto tra C # e C++? (Dovrei affermare che non mi interessa Unix perché credo che Windows sarà ancora il sistema operativo più utilizzato)

Conosco le basi di C++, ma nessuna su C #. So che C++ ha più guide tutorial, dll e cose del genere, mentre C # no, ma è molto più facile da imparare e da usare per una singola persona per sviluppare un programma, ma ho letto anche se il programma è offuscato è facile ottenerne la fonte.

Beh, prima voglio concentrarmi molto sul basic, devo dire che ho una preferenza per il C++ solo perché mi sembra più adatto a me, ma devo considerare che lavoro da solo. Quindi, anche se mi piace, potrebbe non essere la cosa migliore da fare.

Non sono davvero sicuro di quale scegliere, ho letto molti thread su vari siti Web e sembra che C # stia diventando più popolare di C++. Ma sì, detto questo, ho anche specificato che voglio fare la programmazione del gioco. Quindi ho bisogno di conoscere alcuni punti migliori del semplice "C # è più facile a causa della gestione della memoria .net mentre C++ non lo è" perché non riuscivo a trovarlo.

15
Chronix

Imparo il C++ programmando un gioco. È stata un'esperienza molto piacevole. Ti incoraggio vivamente a fare lo stesso!

Tuttavia ora sono un programmatore di C #, so che sarei stato molto più produttivo se C # fosse disponibile al momento.

C # è la scelta perfetta per l'apprendimento dello sviluppo del gioco. Ha tutto il necessario per iniziare dai quadri ai libri e la lingua è sorprendente.

Ho visto dozzine di libri specificamente scritto su C # Game Programming e Microsoft si sta impegnando molto per migliorare i suoi framework, tra cui DirectX e [~ # ~] xna [~ # ~] .

[~ # ~] update [~ # ~] : potresti essere interessato anche da this . È un recente post sul blog di Miguel de Icaza .

AGGIORNAMENTO 2013-02-22 Microsoft prevede di cessare il supporto XNA .

21
user2567

La maggior parte delle società di giochi usano C++, forse con python o altre lingue in esecuzione in background. Moreso perché i binding per OpenGL e DirectX sono rivolti al C++ (anche se sono abbastanza sicuro che puoi fare altrettanto Roba Direct3d in C #) ma per la programmazione del gioco, C++ è il linguaggio PRINCIPALE.

Ti darò comunque un avvertimento equo (e non lasciare che questo ti scoraggi), ma la grafica 3D può diventare estremamente complicata. Il nuovo Direct3D lo ha reso un po 'più semplice di prima, ma è comunque un bel po' di matematica (che può diventare piuttosto confusa) e solo le librerie stesse possono essere fonte di confusione.

Comincerei con qualcosa di molto semplice prima. per cose 2d SDL (Simple Directmedia Layer) è molto più facile da usare (per qualcosa come un gioco top down) una volta che sei entrato in 3D, PERSONALMENTE penso che OpenGL sia più facile da imparare (ma questa è tutta opinione). MS ha alcuni tutorial/esempi nella documentazione di DirectX SDK, quindi vale la pena dare un'occhiata. I tutorial di Nehe, sebbene un po 'datati, sono ancora belli.

ma per rispondere alla tua domanda, in genere sono tutti eseguiti in C++.

12
user6791

Per prima cosa vorrai impostare alcune priorità. Vuoi solo creare un gioco prima, quindi conoscere gli aspetti più avanzati della programmazione in seguito, o viceversa. Entrambi gli approcci hanno i loro pro e contro, ma sono entrambi legittimi secondo me.

Se vuoi iniziare a creare giochi, ti consiglio di imparare C #. Se conosci già le basi di C++, non dovresti avere problemi a raccogliere C #. Fare di C # il tuo strumento ha dei vantaggi. È un linguaggio facile da imparare (rispetto al C++) ed è un "linguaggio gestito", il che significa che esegue automaticamente la memoria idraulica per te (qualcosa che molti principianti del C++, e anche i non principianti, hanno problemi con ). Ti dà anche accesso a Microsoft XNA Framework che fa ancora di più del noioso impianto idraulico per te. Ciò ti lascia a concentrarti su cose come il ciclo di gioco e il design, senza doversi preoccupare (troppo) di farlo funzionare. È vero, tutto questo impianto idraulico ha il suo sovraccarico, il che significa che probabilmente non realizzerai giochi 3D di livello industriale, ma stai solo entrando nella programmazione del gioco, quindi dubito che farai il prossimo Halo nei tuoi primi primi tentativi . :)

Ecco un post mortem del ragazzo che ha sviluppato un gioco XNA di successo (Weapon of Choice). Descrive in dettaglio come l'utilizzo di C #/XNA gli abbia risparmiato tempo di sviluppo anziché dover usare C++. http://www.gamasutra.com/view/feature/3899/postmortem_mommys_best_games_.php

Detto questo, dovresti dedicare un po 'di tempo almeno a sapere come funzionano le cose in background. Come lo farebbe un programmatore C++. Imparare a creare un gioco in C++ potrebbe rendere più facile entrare a far parte di un altro team di sviluppo del gioco (poiché la maggior parte di essi funziona in C++), se ciò che desideri è guadagnare terreno nel settore dei giochi. Ma anche se alla fine non usi mai il C++, sapere come funzionano gli interni può solo renderti un programmatore migliore, indipendentemente dalla lingua che usi.

8
System Down

La programmazione di gioco grezza ti lascerà piuttosto freddo. Lavorare con chiamate grafiche di basso livello in C # o C++ è un incubo minore e non si vuole davvero ricostruire la ruota del rendering degli sprite 2D e tanto meno dei modelli 3D. Dato che sei da solo e vuoi imparare la programmazione, la cosa migliore da fare è trovare un framework che possa farti avanzare un po '.

Dato che hai una certa familiarità con il linguaggio basato su C, il mio suggerimento sarebbe quello di dare nity 3D uno sguardo. Non solo sta vivendo un serio assorbimento nell'adozione da negozi di sviluppatori di giochi commerciali, e ha alcune opzioni di piattaforma interessanti (tra cui PC, Android, iPhone e runtime Web), ma ha anche una versione gratuita che è molto facile da usare e molti tutorial per mostrarti come passare dall'ideazione all'implementazione. Soprattutto (IMO) uno dei linguaggi di scripting supportati è C #.

3
Jacob Proffitt

Promuovo vivamente il C++ per lo sviluppo di giochi. Ci sono alcuni ostacoli extra, con vari pro e contro, uno dei migliori motivi è la portabilità.

Con C # puoi sviluppare ancora un po 'di più in questi giorni, e ci sono alcuni motori incredibilmente fantastici là fuori programmati di sicuro. Entrambi questi sono buoni linguaggi per la programmazione di giochi, se stai prendendo di mira solo piattaforme Windows/Xbox, avrai particolarmente motivo di inclinarti verso C #.

La lingua che penso di più che dovresti imparare sarebbe OpenCL o CUDA, un po 'di linguaggio GPGPU. Personalmente preferisco OpenCL poiché sembra probabile che sopravviva e cresca ulteriormente, è fondamentalmente solo in stile C. C'è OpenTK che è un wrapper Nice per C++ o C #.

Mi sono sempre chiesto cosa sarebbe Ruby sarebbe la programmazione di gioco con l'accelerazione hardware ...

3
Garet Claborn

Ho fatto un gioco per una classe due anni fa (all'epoca avevo anche 18 anni) e ce l'abbiamo fatta in C #. Mentre osservo che i grandi programmi C # di solito funzionano più lentamente dei grandi programmi C++, C # richiede anche molto meno lavoro da parte tua. La gestione della memoria viene eseguita automaticamente e, nell'ambito di un primo gioco, è abbastanza veloce. (Il nostro gioco è un vero multiplayer 2D multiplayer in stile Starcraft simile a Starcraft.)

Farei il root per C # in quanto dovrebbe essere più facile da gestire. Tuttavia, se vuoi diventare uno sviluppatore di giochi professionale, ricorda che funziona solo su piattaforme Microsoft. (Tuttavia, C # può essere un buon trampolino di lancio verso C++, e se dovessi riapprendere le due lingue, proverei prima a imparare C #.)

2
zneak

Vorrei votare C++ - principalmente perché può essere multipiattaforma (a seconda di come scrivi il tuo codice, ovviamente) e anche perché penso che ti dia più conoscenza sulla gestione della memoria - perché necessità a preoccuparsene. Ma dal momento che non ti interessa di Linux/Unix, se vuoi lasciare fuori la complessità della memoria per il momento, perché non concentrarti su C # in questo momento e quindi imparare anche C++?

1
Mauren