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



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

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

129   4  

4 ответов:

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

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

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

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

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

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

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

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

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

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

    Ничего не найдено.

Добавить ответ:
Отменить.