Heim >Java >javaLernprogramm >C++: Geschwindigkeitsbesessenheit in der Spielebranche
C++ ist schon vor langer Zeit eine Standardsprache für Spiele und Grafiksoftware geworden. Und es gab tatsächlich einen Grund: Die Arbeit mit Echtzeitgrafiken und Physik erfordert eine hohe Leistung. Geometrie verarbeiten, Puffer verwalten, Matrixberechnungen – all das braucht Zeit.
Aber was ist mit der Logik auf hoher Ebene? Spielmechanik, Benutzeroberfläche, Speicherverwaltung, Netzwerkanfragen? Stabilität und Sicherheitsind dort viel mehr gefragt als Geschwindigkeit.
Wir können leistungsintensive Funktionen in einer kompilierten Sprache wie C++ implementieren und sie aus einem Programm aufrufen, das in einer dynamischen Sprache wie Python geschrieben ist.
Aber heute verfügen wir bereits über gut dokumentierte und einfach zu verwendende Bibliotheken für Python (pygame, pyopengl, pyassimp, pybullet, numpy), die hauptsächlich auf C/C++ implementiert sind und Funktionen für umfangreiche Berechnungen bereitstellen. oder insbesondere Physik/Grafik. Wir werden möglicherweise nie mit der Notwendigkeit konfrontiert, solche Bibliotheken selbst zu implementieren.
Es ist allgemein anerkannt, dass Garbage-Collected-Sprachen wie Java oder C# langsamer als C++ sind und die Anforderungen für umfangreiche Berechnungen nicht wirklich erfüllen. Das ist natürlich nicht wahr.
In einigen Sonderfällen kann C++ Java oder C# in der Leistung um 20–30 % übertreffen, aber wenn es um Laufzeitabstraktionen geht, wie z. B. dynamische Funktionsverteilung, Sprachinteraktion, asynchrone Aufgaben, Text- oder abstrakte Sammlungsverwaltung, Java und C# zeigen eine viel höhere Effizienz als C++.
Außerdem können wir unsere Python-Programme zur gleichen Laufzeit mit Java oder C# ausführen, indem wir Jython oder IronPython verwenden. Es bringt viele Vorteile mit sich, wie z. B. gemeinsamer Garbage-Collected-Speicher, Typensystem und einfacher Zugriff auf C#- oder Java-Bibliotheken direkt nach dem Auspacken. Auf Java sind so schöne dynamische Sprachen wie Clojure und Groovy implementiert, die vollständigen Zugriff auf die Java-Klassenbibliothek haben und die zuvor genannten Vorteile teilen.
Heutzutage sind Personalcomputer viel schneller als vor 15 bis 20 Jahren. Allerdings funktionieren die meisten Desktop-Programme oder Spiele nicht so schnell wie erwartet (obwohl sie immer noch größtenteils auf C/C++ implementiert sind). Heute brauchen wir gute Algorithmen und effektive Ansätze viel mehr als nur Sprachgeschwindigkeit. Eine Funktion mit konstanter Komplexität in Python ist einer Funktion mit linearer Komplexität in C vorzuziehen. Das Malen von 100 Bäumen mit 15 Zeilen Python-Code ist besser als das Malen von 500 Bäumen mit 300 Zeilen von C++-Code.
Es ist nicht wirklich wichtig, welche Sprache Sie verwenden, wenn Sie noch kein Spiel erstellt haben, oder?
Ein Spiel in C++ zu erstellen ist viel anspruchsvoller und anstrengender, als dasselbe in Python oder Ruby zu tun. Wenn Sie 1 Spiel mit C++ erstellen würden, würden Sie 10 Spiele mit Python erstellen. Wenn Sie 5 Spiele mit Python erstellen würden, wären es 0 Spiele mit C++.
Lasst uns auf Spiel und Spaß achten, wozu sonst?
Das obige ist der detaillierte Inhalt vonC++: Geschwindigkeitsbesessenheit in der Spielebranche. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!