Question

Je vois beaucoup de débat va et vient sur la langue à utiliser pour développer en temps réel des jeux en 3D, et le consensus général est que C ou C ++ sont les seules langues qui peuvent offrir des performances adapté à haut de gamme, le système jeux 3D. forte intensité Je vois beaucoup de gens dire C #, Java ou Python sont trop lents, en particulier à cause de la collecte des ordures. Que diriez-vous Objective C? Ne Objective C la collecte des ordures automatique? Qu'est-ce en plus de collecte automatique des ordures font un langage « trop lent » ou inadapté pour les jeux 3D?

Cette question est probablement plus d'une « expérience de pensée » car je doute que je vais jamais développer un jeu qui est si lourd de ressources qui doivent être abordées ces questions, mais d'être un programmeur, je suis inexplicablement obsédé par la performance, donc je voudrais encore savoir juste pour mes propres jollies.

Était-ce utile?

La solution

collection Objective-C 2.0 a garbage disponible sur Mac OS X 10.5, mais il est en option - vous pouvez toujours compiler des applications Objective-C sans la collecte des ordures si vous le souhaitez. Sur les autres plateformes (iPhone, pré-10.5 Mac OS X, et rien d'autre), il n'y a pas de collecte des ordures, et vous devez gérer manuellement votre mémoire.

Objective-C est un strict de C surensemble, de sorte que vous pouvez le code C simple en Objective-C si vous voulez. Par conséquent, il n'y a aucune raison de ne pas utiliser Objective-C pour les jeux qui sont pas applicables aussi à l'utilisation de C. Vous pouvez utiliser les fonctionnalités supplémentaires Objective-C fournit autant ou aussi peu que vous voulez.

Autres conseils

Le seul ralentissement réel avec Objective-C se serait le mécanisme et la messagerie même alors, il est généralement des composants du framework Cocoa qui ralentirait les choses. Le message de Objective-C l'envoi ne fait pas vraiment mal la performance que beaucoup.

Quoi qu'il en soit, pour la plupart des jeux, la majorité des goulots d'étranglement de performance proviendra de code graphique: si vous déléguez graphiques choses à OpenGL, qui est ridiculement rapide, alors il ne devrait vraiment pas de problème avec l'utilisation Objective-C pour les jeux. Le seul autre endroit où je peux voir Objective-C ou de cacao des goulots d'étranglement associés seraient pour la physique intensive code et qui devrait probablement être écrit dans le plus pur C / C ++ de toute façon. Tout le reste, cependant, ne devrait pas vraiment d'importance tant que ça.

Pour être honnête, je parie que la majorité des OS X GAMES de nos jours sont écrits en utilisant Objective-C les cadres de cacao, avec le code sensible à la performance écrit en pur C / C ++ (et avec le code graphique utilisant OpenGL) .

Je suis aussi intéressé par le sujet et je l'ai trouvé ce http://wiki.gnustep.org/index.php/3DKit

Il semble tout à fait mort, mais maintenant avec clang / LLVM 2.9 bon nombre des goodies de Objective-C 2 sont disponibles sur linux et pourrait être intéressant d'avoir l'API 3D.

Objective-C n'a pas la collecte des ordures automatique. Java a diverses méthodes de collecte des ordures et certains d'entre eux sont conçus pour être compatibles avec des jeux en se produisant progressivement à intervalles réguliers. Je serais surpris si C # ou toute autre chose qui avait aussi la collecte des ordures ne pas avoir plusieurs méthodes à choisir, dont certains sont compatibles avec des jeux.

La seule chose du haut de ma tête qui pourrait faire un jeu ne convient pas pour les jeux 3D serait si elle était interprétée et particulièrement lente dans sa mise en œuvre. Ce n'est pas une caractéristique de tout ce que vous avez énumérés ci-dessus.

P.S. Pour répondre à votre question initiale, je suis sûr que quelqu'un qui a un iPod Touch ou iPhone sera en mesure de vous dire que Objective-C est sans aucun doute à des jeux en 3D:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top