Il mondo di sviluppo del gioco è divertente: da un lato, spesso accettano rapidamente nuove idee, dall'altro sono ancora nell'età della pietra.
La verità è che raramente ci sono molti incentivi nel passaggio a .NET / Java / qualsiasi cosa diversa da C / C ++.
La maggior parte delle società di gioco concede in licenza parti del motore di gioco da altre società. Queste parti sono scritte in C ++ e sebbene sia possibile avere accesso al sorgente in modo da poterlo portare, ciò richiede molto sforzo (e, naturalmente, la licenza deve consentirlo).
Inoltre, esiste già molto codice legacy in C ++. Se il codice di progetti precedenti può essere riutilizzato (diciamo, se stai scrivendo un sequel), ciò conta ancora di più a favore di rimanere nella stessa lingua, invece di riscriverlo in una nuova lingua (più perché probabilmente dovrai reintrodurre un sacco di bug di cui avrai bisogno per passare il tempo a stirare.
Infine, è raro che i giochi siano scritti in C ++ al 100% - molto è fatto usando linguaggi di script, sia personalizzati che semplicemente integrando un linguaggio esistente (Lua è uno dei più popolari in questi giorni).
Per quanto riguarda la garbage collection, questo può essere un po 'un problema. Il problema non è tanto che esiste, ma è piuttosto come funziona: il Garbage Collector DEVE essere non bloccante (o almeno essere garantito per bloccare solo brevemente), dal momento che è semplicemente inaccettabile che il gioco si blocchi per 10 secondi mentre esegue la scansione di tutta la memoria allocata per vedere cosa può essere liberato. So che Java tende a soffocare un po 'in GC quando sta per esaurire la memoria (e per alcuni giochi là fuori, lo farà).
Sei anche un po 'più limitato in ciò che puoi fare: non puoi sfruttare completamente l'hardware a causa del sovraccarico del runtime. Immagina che Crysis sia scritto in Java ... anche se questa è l'unica differenza visibile, non sarebbe la stessa (sono anche abbastanza sicuro che avresti bisogno di un Core i7 per eseguirlo.).
Questo non significa che questi linguaggi non abbiano il loro posto nello sviluppo del gioco e no, non mi riferisco solo alla programmazione degli strumenti. Per la maggior parte dei giochi, non hai bisogno di quel po 'di prestazioni extra che ottieni dal C ++, inclusi i giochi 3D, e se stai scrivendo tutto da zero, può avere perfettamente senso usare qualcosa come XNA - in effetti, c'è un buone probabilità che lo farà.
Per quanto riguarda i giochi commerciali, conta RuneScape ? Potrebbe essere il gioco Java di maggior successo là fuori.