XBOX 또는 Playstation devkit에 $ 10,000를 기꺼이 지불하지 않는 한, 개발할 수있는 유일한 콘솔은 XBOX 360 뿐이며 XNA를 사용하는 유일한 방법입니다.
전문 개발을 위해 XBOX (대부분의 게임, 특히 2D 게임이 필요하지 않음)의 처리 능력을 100 % 얻을 필요가 없다면 실제로 XNA는 개발에 훨씬 좋습니다.
다른 응답자가 저지른 몇 가지 실수 :
XBOX에는 3 개의 코어 만 있습니다. XNA를 사용하여 이들 모두에 액세스 할 수 있습니다.
각 코어에는 하이퍼 스레딩이 있으며 2 개의 하이퍼 스레드를 지원합니다. 4/6 스레드에만 액세스 할 수 있습니다. 이러한 스레드 중 하나는 XNA를위한 것입니다. 다른 하나는 XBOX OS에서 사용되는 게임 개발자가 액세스 할 수없는 스레드입니다.
XBOX의 C #은 Windows의 C #보다 훨씬 느립니다. XBOX는 매우 가볍고 많은 데스크톱 CLR의 최적화 기능이없는 .NET 컴팩트 CLR을 사용합니다. XBOX 보안 기능은 프로그램이 자체 소스 코드를 수정하지 못하게합니다. 이로 인해 .NET 코드를 실행하기가 훨씬 어려워지고 실행 속도가 훨씬 줄어 듭니다 . C ++ 네이티브 코드로 관리 코드의 성능을 경쟁력있게 만드는 요소 중 하나는 CLR이 자체 코드를 수정하여 캐시 일관성을 최적화 할 수 있다는 것입니다. XNA dev 팀은 C #을 XBOX에서 실행하기 위해 꽤 큰 농구 대를 뛰어 넘어야 하며이 농구 대와 관련된 성능 비용이 있습니다.
메모리 할당으로 너무 게으르지 않아야합니다. Windows의 XNA는 관리되는 환경에서 기대하는대로 메모리 할당을 크게 단순화합니다. 그러나 XBOX에서 .NET 컴팩트 CLR은 가비지 수집에 대해 스위프 및 컴팩트 접근 방식을 사용하며 수집으로 인해 게임에서 말더듬을 방지하는 일반적인 방법은 수집을 완전히 피하는 것입니다. 이를 위해서는 클래스에 객체 풀을 사용하고 일반적으로 Windows 환경에서 클래스를 사용하는 작은 객체에 구조체를 사용해야합니다. 객체 풀링은 일반적으로 객체 관리의 할당 / 무료 모델을 필요로하며, 이는 C ++ 메모리 관리보다 나쁘지 않습니다.
그러나 C # / XNA에서의 개발은 DirectX API (XNA 인)가없는 C ++에서의 개발보다 훨씬 빠르고 쉽습니다.
다음은 4 주 동안 작업 한 후 XNA에서하는 게임의 상태입니다.
이를 통해 XNA 라이브러리 / API를 사용한 개발이 C #과 얼마나 빠른지를 알 수 있습니다.
이 스크린 샷은 XBOX에서 약 65FPS로 렌더링됩니다.
당신이 취미 게임 개발자이고 콘솔 게임을 만들고 싶다면 XNA + XBOX가 유일한 현실적 옵션 일뿐 만 아니라 매우 놀라운 옵션, 재미있는 개발 환경 및 많은 XBOX Live Arcade 게임이되었습니다. XNA로 만들었고 수십만 달러를 벌었습니다. ( 예 : Limbo )