Является ли Objective C подходящим языком для 3D-игр? - PullRequest
5 голосов
/ 30 мая 2009

Я вижу много споров о том, какой язык использовать для разработки 3D-игр в реальном времени, и общее мнение состоит в том, что C или C ++ являются единственными языками, которые могут предложить подходящую производительность для систем высокого класса. -интенсивные 3D игры. Я вижу, что многие люди говорят, что C #, Java или Python слишком медленные, особенно из-за сборки мусора. Как насчет Objective C? Есть ли в Objective C автоматическая сборка мусора? Что кроме Automatic Garbage Collection делает язык «слишком медленным» или неподходящим для 3D-игр?

Этот вопрос, вероятно, является скорее «мысленным экспериментом», так как я сомневаюсь, что когда-нибудь разработаю игру, которая настолько ресурсоемка, что эти вопросы нужно решать, но будучи программистом, я необъяснимо одержим производительностью так что я все еще хотел бы знать только для своих собственных забав.

Ответы [ 4 ]

7 голосов
/ 30 мая 2009

В Objective-C 2.0 имеется сборка мусора, доступная в Mac OS X 10.5, но она не является обязательной - вы все равно можете компилировать приложения Objective-C без сборки мусора, если вы того пожелаете. На других платформах (iPhone, Mac OS X до 10.5 и т. Д.) Сборка мусора отсутствует, и вам приходится вручную управлять своей памятью.

Objective-C является строгим надмножеством C, поэтому вы можете кодировать простой C в Objective-C, если хотите. Следовательно, нет причин не использовать Objective-C для игр, которые также не относятся к использованию C. Вы можете использовать дополнительные функции, которые Objective-C предоставляет столько, сколько вам нужно.

5 голосов
/ 30 мая 2009

Единственное реальное замедление с самой Objective-C - это механизм обмена сообщениями - и даже в этом случае обычно компоненты инфраструктуры Какао замедляют процесс. Отправка сообщений Objective-C на самом деле не снижает производительность , что сильно.

В любом случае, для большинства игр большинство узких мест в производительности возникает из-за графического кода: если вы делегируете графические вещи в OpenGL, что смехотворно быстро, то с использованием Objective-C для игр действительно не должно возникнуть никаких проблем. Единственное другое место, где я могу увидеть узкие места в Objective-C или Cocoa, - интенсивный физический код, и это, вероятно, в любом случае должно быть написано на чистом C / C ++. Однако все остальное не должно иметь такого большого значения.

Если честно, держу пари, что большинство игр для OS X в настоящее время написаны на Objective-C с использованием фреймворков Cocoa с чувствительным к производительности кодом, написанным на чистом C / C ++ (и с графическим кодом, использующим OpenGL). .

0 голосов
/ 13 мая 2011

Меня тоже интересует тема, и я нашел это http://wiki.gnustep.org/index.php/3DKit

Это выглядит довольно мертвым, но теперь с clang / llvm 2.9 многие вкусности Objective-C 2 доступны в Linux и могут быть интересны, если у вас есть 3D API.

0 голосов
/ 30 мая 2009

Objective-C не имеет автоматической сборки мусора. В Java существуют различные методы сбора мусора, и некоторые из них разработаны для совместимости с играми, происходя постепенно с регулярными интервалами. Я был бы удивлен, если бы C # или что-либо еще, у которого также была сборка мусора, не имели нескольких методов выбора, некоторые из которых совместимы с играми.

Единственное, что могло бы сделать игру непригодной для 3D-игр, было бы, если бы она интерпретировалась и была особенно медленной в реализации. Это не характерно для того, что вы перечислили выше.

P.S. Чтобы ответить на ваш первоначальный вопрос, я уверен, что любой, у кого есть iPod Touch или iPhone, сможет сказать вам, что Objective-C определенно подходит для 3D-игр:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...