Pergunta

Eu vejo um monte de debate indo e voltando em que idioma a ser usado para desenvolver 3D em tempo real jogos, eo consenso geral é que C ou C ++ são as únicas línguas que podem oferecer o desempenho adequado para high-end, sistema jogos 3D -intensive. Eu vejo um monte de gente dizendo C #, Java ou Python são muito lentos, especialmente por causa da coleta de lixo. Como cerca de Objective C? Objective C têm coleta de lixo automática? O que além automático de lixo Coleção fazer uma linguagem 'muito lento' ou inadequado para jogos 3D?

Esta questão é provavelmente mais de um 'experimento mental' desde que eu duvido que alguma vez vai desenvolver um jogo que é tão pesado recurso que essas questões precisam ser abordadas, mas ser um programador, eu estou inexplicavelmente obcecados com performance, então eu ainda gostaria de saber apenas por minhas próprias jollies.

Foi útil?

Solução

Objective-C 2.0 tem coleta de lixo disponível no Mac OS X 10.5, mas é opcional - você ainda pode compilar Objective-C Apps sem coleta de lixo, se assim escolherem. Em outras plataformas (iPhone, Mac OS X pré-10.5, e qualquer outra coisa), não há coleta de lixo, e você tem que gerir manualmente a sua memória.

Objective-C é uma estrita superconjunto de C, assim você pode codificar simples C em Objective-C, se quiser. Assim, não há nenhuma razão para não usar Objective-C para os jogos que não iria também se aplicam ao uso de C. Você pode usar o recursos extras Objective-C proporciona tanto ou tão pouco como você quer.

Outras dicas

A única verdadeira desaceleração com Objective-C si seria o mecanismo de mensagens e, mesmo assim, é geralmente componentes do quadro de cacau que seria retardar as coisas. A mensagem de Objective-C enviar faz desempenho não realmente machucar que muito.

De qualquer forma, para a maioria dos jogos, a maioria dos gargalos de desempenho virá de código de gráficos: se você delegar o material gráfico para OpenGL, que é ridiculamente rápido, então não há realmente não deve ser problema com o uso de Objective-C para os jogos. O único outro lugar onde eu possa ver Objective-C ou de cacau proporcionando gargalos seria para a física intensiva código e que provavelmente deve ser escrito em puro C / C ++ de qualquer maneira. Tudo o resto, porém, não deve realmente importa muito.

Para ser honesto, eu aposto que a maioria dos jogos OS X hoje em dia estão escritas em Objective-C usando os quadros de cacau, com o código sensível ao desempenho escrito em puro C / C ++ (e com código de gráficos utilizando OpenGL) .

Eu também estou interessado no assunto e eu achei este http://wiki.gnustep.org/index.php/3DKit

Parece bastante morto, mas agora com clang / LLVM 2.9 muitas das guloseimas de Objective-C 2 estão disponíveis no Linux e poderia ser interessante ter API 3D.

Objective-C não tem coleta de lixo automática. Java tem vários métodos de coleta de lixo e alguns deles são projetados para ser compatível com jogos por ocorrendo de forma incremental em intervalos regulares. Eu ficaria surpreso se C # ou qualquer outra coisa que também teve coleta de lixo não têm vários métodos para escolher, alguns dos quais são compatíveis com os jogos.

A única coisa fora do topo da minha cabeça que pode fazer um jogo impróprio para jogos 3D seria se fosse interpretada e particularmente lenta na sua implementação. Isso não é uma característica de qualquer coisa que você listados acima.

P.S. Para abordar a sua pergunta original, eu tenho certeza que qualquer um que tem um iPod Touch ou iPhone será capaz de dizer-lhe que Objective-C é definitivamente até jogos 3D:)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top