문제

실시간 3D 게임을 개발하기 위해 어떤 언어를 사용할 언어에 대해 많은 토론이왔다 갔다하는데, 일반적인 합의는 C 또는 C ++가 고급 시스템 집약적 인 3D에 적합한 성능을 제공 할 수있는 유일한 언어라는 것입니다. 계략. C#, Java 또는 Python이 너무 느리다고 말하는 많은 사람들이 특히 쓰레기 수집으로 인해 너무 느립니다. 객관적인 C는 어떻습니까? 목표 C는 자동 쓰레기 수집이 있습니까? 자동 쓰레기 수집 외에 언어를 '너무 느리게'하거나 3D 게임에 적합하지 않은 것은 무엇입니까?

이 질문은 아마도 '생각 실험'일 것입니다. 나는이 질문을 해결해야 할 게임을 개발할 수있는 게임을 개발할 것이 의심 스럽지만, 프로그래머가되기 때문에 나는 성능에 불가피하게 집착 할 수 없습니다. D 여전히 내 자신의 젤리를 위해 알고 싶어합니다.

도움이 되었습니까?

해결책

Objective-C 2.0에는 Mac OS X 10.5에서 가비지 컬렉션이 있지만 선택 사항이므로 선택한 경우 쓰레기 수집없이 Objective-C 앱을 컴파일 할 수 있습니다. 다른 플랫폼 (iPhone, Mac OS X Pre-10.5 등)에는 쓰레기 수집이 없으므로 메모리를 수동으로 관리해야합니다.

대상 C는 a입니다 엄격한 C의 SuperSet이므로 원하는 경우 Objective-C에서 일반 C를 코딩 할 수 있습니다. 따라서 C를 사용하는 데 적용되지 않는 게임에 Objective-C를 사용하지 않을 이유가 없습니다. 객관적인 C는 원하는만큼 제공하는 추가 기능을 사용할 수 있습니다.

다른 팁

Objective-c의 유일한 둔화 그 자체 메시징 메커니즘이 될 것입니다. 그럼에도 불구하고 일반적으로 코코아 프레임 워크의 구성 요소입니다. Objective-C의 메시지 보내는 것은 실제로 성능을 해치지 않습니다 저것 많이.

어쨌든 대부분의 게임에서 대부분의 성능 병목 현상은 그래픽 코드에서 나옵니다. 그래픽을 OpenGL에 위임하는 경우 엄청나게 빠르면 게임에 Objective-C를 사용하는 데 아무런 문제가 없습니다. 병목 현상을 제공하는 Objective-C 또는 Cocoa를 볼 수있는 유일한 곳은 집중적 인 물리 코드를위한 것이며 아마도 순수한 C/C ++로 작성되어야합니다. 그러나 다른 모든 것은 실제로 그렇게 중요하지 않아야합니다.

솔직히 말해서, 오늘날 OS X 게임의 대부분은 Cocoa 프레임 워크를 사용하여 Objective-C로 작성되었으며, Puferation-Ensitive Code (및 OpenGL을 사용하여 그래픽 코드)로 작성되었습니다.

나는 또한 주제에 관심이 있고 나는 이것을 발견했다http://wiki.gnustep.org/index.php/3dkit

그것은 꽤 죽어 보이지만 이제는 Clang/LLVM 2.9와 함께 대 Objective-C 2의 많은 음식이 Linux에서 사용할 수 있으며 3D API를 갖는 것이 흥미로울 수 있습니다.

Objective-C에는 자동 쓰레기 수집이 없습니다. Java는 다양한 쓰레기 수집 방법을 가지고 있으며 일부는 정기적으로 점진적으로 발생하여 게임과 호환되도록 설계되었습니다. C# 또는 가비지 컬렉션이있는 다른 방법이 여러 가지 방법 중에서 선택할 수 없으며 일부는 게임과 호환됩니다.

3D 게임에 적합하지 않은 게임이 해석되고 특히 구현이 느리게 진행되는 경우 내 머리 위의 유일한 것은 유일한 것입니다. 그것은 위에 나열된 것의 특징이 아닙니다.

추신 : 원래 질문을 해결하기 위해, 나는 iPod touch 또는 iPhone이있는 사람이라면 누구나 객관적인 C가 최대 3D 게임이라고 말할 수있을 것입니다 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top