Domanda

Vedo un sacco di dibattito in corso avanti e indietro su quale lingua utilizzare per sviluppare in tempo reale giochi 3D, e il consenso generale è che C o C ++ sono le uniche lingue che possono offrire prestazioni adatte per la fascia alta, il sistema -intensive giochi 3D. Vedo un sacco di gente che dice C #, Java o Python sono troppo lento, soprattutto a causa della raccolta dei rifiuti. Che ne dite di Objective C? Ha Objective C ha garbage collection automatica? Che oltre garbage collection automatica rendono un linguaggio 'troppo lento' o inadatto per i giochi 3D?

Questa domanda è probabilmente più di un 'esperimento di pensiero' dal momento che dubito che riuscirò mai sviluppare un gioco che è così pesante che di risorse tali questioni devono essere affrontate, ma essendo un programmatore, sto inspiegabilmente ossessionato con le prestazioni, così mi piace ancora di sapere solo per i miei jollies.

È stato utile?

Soluzione

Objective-C 2.0 ha garbage collection disponibile su Mac OS X 10.5, ma è facoltativo - è ancora possibile compilare le applicazioni Objective-C senza garbage collection se lo desiderano. Su altre piattaforme (iPhone, Mac OS X pre-10.5, e quant'altro), non c'è la raccolta dei rifiuti, e si deve gestire manualmente la memoria.

Objective-C è un rigoroso superset del C, in modo da poter codificare pianura C in Objective-C, se si desidera. Quindi, non c'è ragione per non utilizzare Objective-C per i giochi che non si applicano anche all'uso di C. È possibile utilizzare le funzioni extra Objective-C fornisce più o meno come si desidera.

Altri suggerimenti

L'unica vera rallentamento con Objective-C si sarebbe il meccanismo di messaggistica e anche allora, di solito componenti del framework Cocoa che rallentare le cose. Il messaggio di Objective-C invio in realtà non ha penalizzato la performance che molto.

In ogni modo, per la maggior parte dei giochi, la maggior parte dei colli di bottiglia delle prestazioni verrà dal codice grafico: se si delega roba grafica OpenGL, che è ridicolmente veloce, poi ci realmente dovrebbe essere alcun problema con l'utilizzo di Objective-C per i giochi. L'unico altro posto dove posso vedere Objective-C o di cacao che forniscono i colli di bottiglia sarebbe per la fisica ad alta intensità in codice e che dovrebbe probabilmente essere scritto in puro C / C ++ in ogni modo. Tutto il resto, però, non dovrebbe importa più di tanto.

Per essere onesti, io scommetto che la maggior parte dei giochi OS X al giorno d'oggi sono scritti in Objective-C utilizzando i framework Cocoa, con il codice di prestazioni sensibile scritto in puro C / C ++ (e con il codice di grafica utilizzando OpenGL) .

Sono anche interessati al tema e ho trovato questo http://wiki.gnustep.org/index.php/3DKit

sembra abbastanza morto, ma ora con clangore / LLVM 2.9 molte delle chicche di Objective-C 2 sono disponibili su Linux e potrebbe essere interessante avere API 3D.

Objective-C non ha garbage collection automatica. Java ha vari metodi di raccolta dei rifiuti e alcuni di loro sono stati progettati per essere compatibili con i giochi da che si verificano in modo incrementale a intervalli regolari. Sarei sorpreso se C # o qualsiasi altra cosa che aveva anche la raccolta dei rifiuti non avere più metodi tra cui scegliere, alcuni dei quali sono compatibili con i giochi.

L'unica cosa fuori dalla parte superiore della mia testa che potrebbe fare un gioco adatto per i giochi 3D sarebbe se fosse interpretata e particolarmente lento nella sua attuazione. Che non è una caratteristica di tutto ciò che di cui sopra.

P.S. Per rispondere alla sua domanda iniziale, sono abbastanza sicuro che chi ha un iPod Touch o iPhone sarà in grado di dirvi che Objective-C è sicuramente fino a giochi 3D:)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top