Il C ++ è "ancora" preferito nello sviluppo del gioco? [chiuso]


17

Sono un programmatore di giochi 2D. Alcuni linguaggi di programmazione in cui sono bravo sono C, Java, C #. Conosco anche Actionscript 2.0,3.0 e alcuni javascript. Sono interessato all'apprendimento della programmazione di giochi 3D. Così lontano dalla ricerca che ho accumulato cercando su Google e leggendo diversi forum e articoli sullo sviluppo di giochi. Ho notato che la maggior parte dei programmatori tende a preferire il C ++. Anche in un corso di insegnamento di programmazione di giochi online ho notato che preferiscono insegnare C ++ e Visual C ++ come corso iniziale. Il motivo per cui sto ponendo questa domanda poiché vorrei conoscere la differenza di "forza" tra C ++, C # e Java per la programmazione di giochi 3D.

Include anche collegamenti a buoni articoli di programmazione di giochi 3D per il programmatore di giochi già in 2D.

PS: IMHO, trovo anche C ++ per essere criptico.


Lo capisco anche molto. Quindi ho fatto una domanda nella comunità sulle abilità che un programmatore di giochi professionale dovrebbe avere. Ho delle belle risposte focalizzate sul C ++ come linguaggio migliore per lo sviluppo di giochi. check .. gamedev.stackexchange.com/questions/5552/…
GamDroid

@GamDroid: non mi interessa sapere cosa rende un programmatore di giochi 2D professionale. Sono interessato a conoscere Visual C ++ e perché ne parla così tanto.
Vishnu,

2
Btw: Visual C ++? Non solo semplice C ++?
speeder,

L'editor di Visual C ++ è interessante, ma il linguaggio Visual C ++ (ovvero: C ++ con l'API della GUI Win32 e cose del genere, sia con MS Visual C ++ o Borland C ++ Builder) è piuttosto confuso e non dovrebbe essere usato per i giochi (è troppo gonfio e l'utilizzo di GDI è più lento rispetto all'uso di dire, SDL, per controllare la finestra)
speeder

1
@Vish, poi scusate, sentitevi liberi di modificarlo per essere più precisi tenendo presente i commenti finora. Se vuoi dire che la programmazione di Win32 è confusa, allora dillo.
Tetrad

Risposte:


30

Sì, C ++ è il linguaggio usato più spesso (anche se alcune persone usano ancora C).

Ci sono numerose ragioni per questo. Lo slancio puro è uno di questi: è semplicemente il linguaggio usato da anni, esiste già molta tecnologia e la gente è a suo agio, quindi i cambiamenti non avverranno dall'oggi al domani.

Quindi c'è il problema del controllo. Gli sviluppatori di giochi sono maniaci del controllo e ci piace sapere tutto ciò che accade nel nostro codice. C ++ ci dà quel controllo, C # e Java (per scegliere le due alternative che menzioni) tolgono il controllo. In molti modi potrebbe essere una buona cosa, ma ai programmatori di giochi non piace :)

Infine c'è il semplice problema pratico che gli SDK per varie piattaforme sono molto incentrati sul C ++. L'uso di un'altra lingua comporta inevitabilmente la scrittura di wrapper, la compilazione incrociata fino a macchine virtuali, e possibilmente (nel caso di sviluppo di alcune console) non è consentito dal titolare della piattaforma (in realtà non gli piacciono le persone che eseguono la compilazione JIT, per cominciare).


2
Nel settore dello sviluppo tradizionale, sì.
JasonD,

2
In termini di lingue, C ++, principalmente - non andrà da nessuna parte presto. Suggerirei anche che non sarebbe male avere familiarità con i linguaggi di scripting - Lua, Python, ecc.
JasonD,

8
Visual C ++ non è un linguaggio, è un IDE.
SurvivalMachine

2
Sì, anche se è probabilmente l'IDE più usato, quindi vale la pena conoscerlo contemporaneamente all'apprendimento del C ++.
JasonD

1
@SurvivalMachine Beh tecnicamente è un dialetto (ci sono molte estensioni MSVC ++ che non esistono nello standard)
bobobobo

4

Il C ++ è ancora preferito come puoi vedere praticamente su qualsiasi pubblicazione sull'argomento dello sviluppo del gioco. Personalmente sto attualmente usando C per il mio tuffo nello sviluppo del gioco per la semplice ragione che il codice C ++ che scrivo abusa di funzionalità di template, utilizza estesamente RAII, allocazione dinamica della memoria e altre cose che non dovresti fare nel codice di gioco da quello che ho visto finora.

Rimanere su C mi costringe a essere minimalista e pensare a quello che sto facendo. Può essere più difficile a volte quando devi reimplementare qualcosa che la STL ti offre gratuitamente, ma sul lato positivo sento di scrivere un codice più pulito e di avere un tempo migliore per il debug di quella cosa.


3
RAII è perfettamente accettabile (e dovrebbe essere incoraggiato) nel codice di gioco.
stonemetal

1
@stonemetal: RAII incoraggia l'allocazione ritardata e quindi imprevedibile delle risorse. Se ciò debba essere incoraggiato o meno dipende dalle dimensioni del tuo gioco e dalle tue piattaforme target (e dalla risorsa in questione); in media non lo incoraggerei. Inoltre, RAII in C ++ è più comunemente usato con l'allocazione dell'heap, poiché la OO di C ++ rende l'allocazione dello stack troppo difficile.

3
In che modo RAII incoraggia l'allocazione ritardata delle risorse? Quando uso GLFW creo una classe chiamata GLFWRAII che chiama la funzione init di GLFW nel costruttore e chiama la routine di pulizia di GLFW nel distruttore. Lo alloco in pila all'inizio del main, non ritarda in alcun modo né fa nulla di imprevedibile. Altri usi potrebbero essere l'allocazione all'inizio di un livello e la pulizia alla fine di un livello. L'uso inadeguato di una tecnica non la rende una tecnica scadente. Nulla di RAII suggerisce un'allocazione imprevedibile delle risorse se non un uso improprio.
stonemetal

Devi solo evitare di usare quelle funzionalità. Uso C ++ e non uso mai modelli nel mio codice né oggetti che generano eccezioni nei loro costruttori. In C puoi ancora usare l'allocazione dinamica (e devi farlo per un gioco 3D). Inoltre, dovresti programmare in modo che anche qualcun altro lo trovi facile da capire - un grande progetto in puro codice C può essere un inferno, anche se lo capisci. Se impari a pensare a quello che stai facendo anche se la lingua non ti costringe a farlo, sarai in grado di scrivere codice pulito anche in molte altre lingue.
Pablo Ariel,

1

Personalmente non sono un fan di C ++ e preferisco Java. Tuttavia, la maggior parte delle persone del settore lo usano ed è il linguaggio più semplice da convertire in altre piattaforme senza wrapper e macchine virtuali.

Tuttavia, a volte altre lingue funzionano abbastanza bene per lo sviluppo del gioco. Uso Java con LWJGL ed è fantastico. Quindi, se vuoi iniziare con la programmazione 3D e OpenGL senza dover imparare il C ++, prova LWJGL con Java, perché è molto leggero e penso che sia in realtà il codice C ++ che attraversa JNI.

Forse a lungo termine potresti voler passare a C ++, ma puoi iniziare ed esercitarti con C # o Java. Perché la maggior parte del codice di gioco proviene dall'esperienza con la lingua, ma dovresti provare a praticare OpenGL con una lingua che ti piace. Inoltre, mentre pratichi la grafica, dovresti provare anche GLSL con OpenGL, che ha una sintassi molto simile al C

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.