Использовать игровой движок Objective-C в игре C ++ для iPhone? - PullRequest
5 голосов
/ 06 августа 2009

Вы часто слышите, что C ++ предпочтительнее Objective-C для игр, особенно в условиях ограниченных ресурсов, таких как iPhone. (Я знаю, что вам по-прежнему нужен Objective-C для первоначального общения со службами iPhone.) Тем не менее, предпочтительным движком 2D-игр в наши дни является Cocos2d, то есть Objective-C.

Я понимаю, что то, что Apple называет "Objective-C ++", позволяет смешивать классы C ++ и Objective-C в одном файле, но вы не можете смешивать и сопоставлять конструкции языков в одном классе или функции.

Итак, разумно ли / возможно ли использовать Cocos2d для игры на C ++? Вы должны написать много «клеевого» кода? Я бы хотел избежать некоторых тяжелых условий, которые потребуются для прямого подхода OpenGL-ES.

Ответы [ 2 ]

7 голосов
/ 06 августа 2009

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

3 голосов
/ 07 августа 2009

Я сейчас создаю прототип игры с Cocos2. Я пишу игровую логику на C ++ с помощью Chipmunk, а затем использую Cocos для реализации слоя представления. Вы действительно можете свободно смешивать C ++ и Objective-C в одном классе, функции и строке кода. Я уверен, что есть ограничения, как вы, вероятно, не можете смешивать синтаксис определения метода Objective-C и C ++ в интерфейсе класса (я даже не думал об этом пытаться), но для большинства практических целей вы можете смешивать свободно.

Если вы ориентируетесь только на iPhone, я бы не стал слишком беспокоиться о том, чтобы написать все в Objective-C. Как уже упоминали другие, если что-то действительно является узким местом производительности, вы можете просто профилировать и оптимизировать его. Я пишу свое игровое ядро ​​на C ++, потому что я могу захотеть развернуть его на других платформах, и в этом случае Objective-C станет пассивом.

...