Trừ khi bạn sẵn sàng trả 10.000 đô la cho XBOX hoặc Playstation devkit, thì bảng điều khiển duy nhất bạn có thể phát triển là XBOX 360 và cách duy nhất bạn có thể làm là với XNA.
Để phát triển chuyên nghiệp, trừ khi bạn thực sự cần 100% khả năng xử lý của XBOX (điều mà hầu hết các trò chơi, đặc biệt là các trò chơi 2D không cần), thì theo tôi, XNA thực sự tốt hơn nhiều cho sự phát triển.
Một số sai lầm mà những người trả lời khác đã mắc phải:
XBOX chỉ có 3 lõi. Bạn có quyền truy cập vào tất cả chúng với XNA.
Mỗi lõi có siêu phân luồng và hỗ trợ cho 2 siêu phân luồng. Bạn chỉ có thể truy cập 4/6 chủ đề. Một trong những chủ đề đó là dành cho XNA. Cái còn lại là một chủ đề mà không nhà phát triển trò chơi nào có quyền truy cập, vì nó được XBOX OS sử dụng.
C # trên XBOX chậm hơn nhiều so với C # trên Windows. XBOX sử dụng CLR nhỏ gọn .NET, rất nhẹ và thiếu nhiều lựa chọn tối ưu của CLR trên máy tính để bàn. Các tính năng bảo mật XBOX ngăn các chương trình sửa đổi mã nguồn của riêng họ. Điều này làm cho rất khó để thậm chí cho phép mã .NET chạy, ít hơn nhiều để chạy nhanh . Một phần của những gì làm cho mã được quản lý cạnh tranh về hiệu năng với mã gốc C ++, là CLR có thể sửa đổi mã của chính nó để tối ưu hóa tính liên kết của bộ đệm. Nhóm phát triển XNA phải nhảy qua một số vòng khá lớn chỉ để có được C # để chạy trên XBOX, và có một chi phí hiệu suất liên quan với các vòng này.
Bạn không được lười biếng với việc phân bổ bộ nhớ. XNA trên Windows đơn giản hóa rất nhiều việc cấp phát bộ nhớ, như bạn mong đợi từ một môi trường được quản lý. Tuy nhiên, trên XBOX, .NET compact CLR sử dụng cách tiếp cận quét & thu gọn để thu gom rác và cách tiếp cận điển hình để ngăn chặn tình trạng nói lắp trong trò chơi của bạn do các bộ sưu tập, là để tránh các bộ sưu tập hoàn toàn. Điều này yêu cầu sử dụng nhóm đối tượng cho các lớp của bạn và sử dụng các cấu trúc cho các đối tượng nhỏ hơn, nơi bạn thường sử dụng các lớp trong môi trường Windows. Nhóm đối tượng thường yêu cầu một mô hình quản lý đối tượng phân bổ / miễn phí, không tệ hơn (và có thể tốt hơn một chút) so với quản lý bộ nhớ C ++.
Điều đó nói rằng, phát triển trong C # / XNA vẫn nhanh hơn và dễ dàng hơn nhiều lần so với phát triển trong C ++ mà không cần API DirectX (mà XNA là).
Đây là trạng thái của một trò chơi tôi đang thực hiện trong XNA, sau 4 tuần làm việc:
Điều đó sẽ cho bạn cảm giác về sự phát triển nhanh đến mức khó tin với thư viện / API XNA kết hợp với C #.
Ảnh chụp màn hình đó được XBOX hiển thị ở khoảng 65FPS.
Nếu bạn là nhà phát triển trò chơi có sở thích và bạn muốn tạo trò chơi cho bảng điều khiển, không chỉ XNA + XBOX là tùy chọn thực tế duy nhất của bạn, đây còn là một tùy chọn khá tuyệt vời, môi trường phát triển thú vị và nhiều trò chơi XBOX Live Arcade đã được được làm bằng XNA và kiếm được hàng trăm ngàn đô la khi làm việc đó. ( Limbo chẳng hạn.)