Frage

Ich sehe eine Menge Debatte hin und her, auf denen die Sprache in Echtzeit-3D-Spiele zu entwickeln, zu verwenden, und der allgemeine Konsens ist, dass C oder C ++ sind die einzigen Sprachen, die geeignete Leistung für High-End bieten, System -intensive 3D-Spiele. Ich sehe eine Menge Leute sagen, C #, Java oder Python sind zu langsam, vor allem wegen der Garbage Collection. Wie wäre es Objective C? Ist Objective C automatische Garbage Collection haben? Was neben automatischer Garbage Collection eine Sprache machen ‚zu langsam‘ oder nicht geeignet für 3D-Spiele?

Diese Frage ist wohl eher ein ‚Gedankenexperiment‘, da ich bezweifle, dass ich jemals ein Spiel entwickeln, das so schwer ist Ressource, die diese Fragen behandelt werden müssen, sondern ein Programmierer zu sein, bin ich aus unerklärlichen Gründen mit Leistung besessen, also würde ich immer noch nur für meine eigenen jollies wissen.

War es hilfreich?

Lösung

Objective-C 2.0 hat Garbage Collection auf Mac OS X 10.5, aber es ist optional - Sie können immer noch Objective-C-Anwendungen ohne Garbage Collection kompilieren, wenn Sie so wählen. Auf anderen Plattformen (iPhone, Mac OS X 10.5 Pre-und etwas anderes), gibt es keine Müllabfuhr, und Sie müssen manuell Speicher verwalten.

Objective-C ist ein strenge Obermenge von C, so dass Sie Ebene C in Objective-C-Code, wenn Sie wollen. Daher gibt es keinen Grund, nicht Objective-C für Spiele zu verwenden, die nicht auch mit C. gelten würden Sie können die zusätzlichen Funktionen Objective-C so viel oder so wenig bietet, wie Sie wollen.

Andere Tipps

Die einzige wirkliche Verlangsamung mit Objective-C selbst wäre die Messaging-Mechanismus-und selbst dann ist es in der Regel Komponenten des Cocoa-Framework, das die Dinge verlangsamen würde. Objective-C Botschaft verletzt Leistung nicht wirklich sendet , die viel.

Wie auch immer, für die meisten Spiele, die Mehrheit der Performance-Engpässe von Grafik-Code kommen: Wenn Sie Grafiken Sachen OpenGL delegieren, die lächerlich schnell ist, dann sollte es eigentlich kein Problem sein mit für Spiele Objective-C verwenden. Der einzige andere Ort, an dem ich Objective-C oder Cocoa Bereitstellung Engpässe sieht für intensive Physik wäre Code und das sollte wahrscheinlich sowieso in reinen C / C ++ geschrieben werden. Alles andere aber, sollte nicht wirklich wichtig, dass viel.

Um ehrlich zu sein, ich würde wetten, dass die Mehrheit des O X heutzutage Spiele geschrieben in Objective-C, das Cocoa-Frameworks, mit dem leistungsempfindlichen Code geschrieben in reinen C / C ++ (und mit Grafik-Code unter Verwendung von OpenGL) .

Ich bin auch das Thema interessiert und ich fand diese http://wiki.gnustep.org/index.php/3DKit

Es sieht ganz tot, aber jetzt mit Klirren / llvm 2.9 viele der guten Sachen von Objective-C 2 unter Linux verfügbar sind und interessant sein könnte 3D-API zu haben.

Objective-C nicht über automatische Garbage Collection. Java verfügt über verschiedene Methoden der Garbage Collection und einige von ihnen sind so konzipiert, durch auftretende schrittweise in regelmäßigen Abständen mit Spielen kompatibel sein. Ich würde, wenn C überrascht sein # oder irgendetwas anderes, das auch Garbage Collection hatte nicht mehrere Methoden zur Auswahl, von denen einige mit Spielen kompatibel sind.

Das einzige, was aus der Spitze von meinem Kopf, dass wäre wäre vielleicht ein Spiel nicht geeignet für 3D-Spiele machen, wenn sie interpretiert wurden und besonders langsam in der Umsetzung. Das ist kein Merkmal der alles, was Sie oben aufgeführt sind.

P. S. Um Ihre ursprüngliche Frage zu beantworten, ich bin ziemlich sicher, dass jeder, der einen iPod Touch oder iPhone hat wird in der Lage sein, Ihnen zu sagen, dass Objective-C ist auf jeden Fall bis zu 3D-Spielen:)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top