Die Welt der Spieleentwicklung ist lustig: Einerseits akzeptieren sie oft schnell neue Ideen, andererseits befinden sie sich noch in der Steinzeit.
Die Wahrheit ist, dass es selten so viele Anreize gibt, auf .NET / Java / etwas anderes als C / C ++ umzusteigen.
Die meisten Spielefirmen lizenzieren Teile der Spiele-Engine von anderen Firmen. Diese Teile sind in C ++ geschrieben, und obwohl Sie möglicherweise Zugriff auf die Quelle haben, um sie zu portieren, ist dies sehr aufwändig (und natürlich muss die Lizenz dies zulassen).
Außerdem ist in C ++ bereits viel Legacy-Code vorhanden. Wenn Code aus früheren Projekten wiederverwendet werden kann (z. B. wenn Sie eine Fortsetzung schreiben), ist dies umso wichtiger, wenn Sie sich an dieselbe Sprache halten, anstatt ihn in einer neuen Sprache neu zu schreiben (mehr, da Sie ihn wahrscheinlich wieder einführen werden) Eine Menge Fehler, die Sie zum Ausbügeln benötigen.
Schließlich ist es sowieso selten, dass Spiele in 100% C ++ geschrieben werden - es wird viel mit Skriptsprachen getan, egal ob sie benutzerdefiniert sind oder nur eine vorhandene Sprache integrieren (Lua ist heutzutage eine der beliebtesten).
Was die Speicherbereinigung betrifft, kann dies ein Problem sein. Das Problem ist nicht so sehr, dass es existiert, sondern vielmehr, wie es funktioniert - der Garbage Collector MUSS nicht blockieren (oder zumindest nur sehr kurz blockieren), da es einfach inakzeptabel ist, das Spiel 10 Sekunden lang einfrieren zu lassen Es durchsucht den gesamten zugewiesenen Speicher, um festzustellen, was freigegeben werden kann. Ich weiß, dass Java beim GC'ing dazu neigt, ziemlich zu ersticken, wenn fast der Speicher knapp wird (und bei einigen Spielen wird dies der Fall sein).
Sie sind auch etwas eingeschränkter in Ihren Möglichkeiten: Sie können die Hardware aufgrund des Overheads der Laufzeit nicht vollständig ausnutzen. Stellen Sie sich vor, Crysis wird in Java geschrieben ... selbst wenn dies der einzige sichtbare Unterschied ist, wäre es nicht der gleiche (ich bin mir auch ziemlich sicher, dass Sie einen Core i7 benötigen würden, um es auszuführen.).
Das bedeutet nicht, dass diese Sprachen nicht ihren Platz in der Spieleentwicklung haben - und nein, ich beziehe mich nicht nur auf die Tool-Programmierung. Für die meisten Spiele benötigen Sie nicht die zusätzliche Leistung, die Sie von C ++ erhalten, einschließlich 3D-Spielen. Wenn Sie alles von Grund auf neu schreiben, kann es durchaus sinnvoll sein, etwas wie XNA zu verwenden - tatsächlich gibt es eine gute Chance wird es.
Was kommerzielle Spiele betrifft - zählt RuneScape ? Das ist vielleicht das erfolgreichste Java-Spiel da draußen.