Tại sao XNA không được coi là một công cụ trò chơi?


13

Tôi chỉ tự hỏi XNA còn thiếu gì, được coi là một công cụ trò chơi. Nó thực hiện tất cả những điều mà một công cụ trò chơi nên làm (ngoại trừ phần vật lý); nó cũng có hỗ trợ cho mọi khía cạnh được xác định trong bài viết Wikipedia về công cụ trò chơi .

Tại sao XNA không được coi là một công cụ trò chơi?


19
@Miro Điều đó vô nghĩa.
Vịt Cộng sản

2
Vấn đề ở đây là gì? Nếu nó làm công việc mà bạn cần, hãy sử dụng nó. Nếu không, thì không. Ai quan tâm làm thế nào mọi người gọi nó? Dù sao nó cũng chỉ là một nhãn hiệu, chủ yếu được sử dụng từ những con khỉ tiếp thị;)
Maik Semder

đó chỉ là lời bình luận Vịt Cộng sản đã trả lời bình luận của tôi trong câu hỏi này
Ali1S232

4
@Maik Semder Nó hoàn toàn không phải là một nhãn hiệu. Một công cụ và một khung là hai thứ riêng biệt và riêng biệt, và XNA là cái sau. Thật hữu ích để phân biệt và hiểu rằng XNA không phải là một công cụ, nếu không bạn có thể rất bối rối khi phát hiện ra bạn thực sự có thể cần phải tạo một công cụ trong XNA hoặc nó không cung cấp bất kỳ trình cắm thêm nào và chơi khả năng như động cơ thực tế làm.
doppelgreener

3
@Maik Đây là một phần trong cách chúng tôi tìm ra những gì nó làm. Tôi nói lái xe , bạn biết nó là gì và không, nó làm gì và làm thế nào bạn có thể sử dụng nó. Một cái gì đó tương tự sẽ xảy ra khi tôi nói khung - nhưng chỉ khi bạn nhận ra khung là gì và nó không phải là gì (một động cơ). Xem xét những ý nghĩa thực tế đó, tôi chủ yếu phản đối bạn nói rằng "Ai quan tâm đến cách mọi người gọi nó? Dù sao nó cũng chỉ là một nhãn hiệu"
doppelgreener

Câu trả lời:


28

Microsoft XNA là một bộ công cụ với môi trường thời gian chạy được quản lý do Microsoft cung cấp, tạo điều kiện cho việc quản lý và phát triển trò chơi máy tính. XNA cố gắng giải phóng các nhà phát triển trò chơi bằng cách viết "mã nồi hơi lặp đi lặp lại" và đưa các khía cạnh khác nhau của sản xuất trò chơi vào một hệ thống duy nhất.

Nó được thiết kế dưới dạng khung - trên thực tế, XNA là Khung XNA của Microsoft - vì vậy về mặt kỹ thuật, đây không phải là một công cụ theo tên.

Không có 'công cụ' - nếu bạn chú ý, bạn lấy được lớp chính của mình từ XNA.Framework.Game và phải tự ghi đè các chức năng vẽ và cập nhật. Không có hệ thống kết xuất trung tâm, hoặc hệ thống đầu vào hoặc hệ thống âm thanh sẵn sàng ra khỏi hộp. Có SpriteBatch và các lớp đỉnh, có KeyboardState và có một số lớp âm thanh..nhưng chúng chỉ là trừu tượng đối với mã bản vẽ cấp thấp.

EDIT: Vì mục đích hữu ích, tại sao điều gì đó quan trọng nếu nó được gắn nhãn là công cụ, khung, thư viện hoặc bộ công cụ?

Để làm sáng tỏ mọi thứ: Tôi đang phát triển một công cụ trong XNA. Rõ ràng tôi không thể làm điều đó trong một cái gì đó như Unreal, như Jonathan đã đề cập. Tuy nhiên, có một vài điều tôi cảm thấy quan trọng là XNA không có:

Plug-n-play: Tôi muốn có thể tạo một số loại mẫu - có HP này, lưới này, hoạt hình này và BÙM! Tôi có một NPC trong trò chơi của mình.

Ẩn mức thấp - XNA đã thực hiện điều này rồi, nhưng tôi không muốn tìm hiểu thêm về GameServiceProviders. Tôi chỉ muốn xô đẩy mọi thứ với nhau.

Trò chơi tách biệt với động cơ - Có thể có một lớp 'trò chơi', nhưng tôi muốn tách logic và mã của tôi khỏi hệ thống cơ sở. Tôi không muốn if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)trộn lẫn với việc cập nhật bộ đệm trên trình kết xuất đồ họa của mình.


Tôi chấp nhận rằng bạn phải ghi đè lên bản vẽ và cập nhật cài đặt nhưng điều đó không có nghĩa là nó không có công cụ kết xuất, vấn đề là nó làm cho mọi thứ sẵn sàng để bạn vẽ và đó không chỉ là những cuộc gọi vẽ trừu tượng chỉ nhìn vào mẫu của nó nó không có gì khác hơn GameEngine 2d (tôi đã không kiểm tra công cụ 3d thực sự) và theo như tôi có thể nhớ nó có bộ điều khiển đầu vào, và ý tôi là nó chỉ là khung vì microsoft đặt tên như vậy hoặc nó có một số lý do hợp lý ?
Ali1S232

1
@Gajet: Hãy xem xét một lúc rằng có một cuộc thảo luận trên mạng về cách tạo ra một công cụ trong XNA nhưng không phải cho Unreal Engine hoặc CryEngine. Tôi nghĩ một đặc điểm chung của một công cụ trò chơi là bạn có thể chỉ cần cắm các bit và một cái gì đó sẽ đi ( TV Tropes khẳng định các công cụ có thể được điều khiển dữ liệu khá liên quan đến vấn đề này ). Ngược lại, XNA để bạn tự mình thực hiện mỗi ounce công việc - bạn không cần phải tạo phần mềm trung gian để giao tiếp với các thiết bị.
doppelgreener

1
Hơn nữa, tôi không tin rằng tôi đã tìm thấy một định nghĩa rõ ràng về công cụ trò chơi, nhưng điều tôi biết là có công cụ trò chơi và XNA đơn giản không làm bất kỳ điều gì họ làm (ngoại trừ cung cấp phần mềm trung gian và một số các thành phần cấp thấp rất đơn giản).
doppelgreener

@Jonathan Hobbs: bây giờ tôi có thể thấy những gì bạn đang nói nhưng một lần nữa tôi đã thử GameBryo (NetImmerse) và đó được coi là một gameengine nhưng cho đến khi lightpeed nó có ít tính năng hơn chính XNA, nó chỉ là một trung gian, vì vậy tôi nghĩ rằng chúng tôi có thể thay đổi tiêu đề câu hỏi thànhwhat makes an sdk to be called a GameEngine?
Ali1S232

1
Nhưng bạn có thể phát triển một công cụ sử dụng một công cụ hiện có làm khung nếu bạn thực sự muốn trở thành nhà mô phạm. Rất nhiều người đã sử dụng công nghệ 3 sau đó tạo ra một động cơ có thể sử dụng được nhiều hơn. Sau đó, một lần nữa, bạn cũng có thể tạo một trò chơi mà không cần "động cơ" nếu bạn thực sự muốn. Sẽ đúng hơn khi gọi xna là một khung, nhưng tôi không biết về việc phân biệt với một "công cụ", vì nó không được định nghĩa mạnh như "khung".
Tết

5

Một khung công tác cung cấp một kiến ​​trúc tối thiểu được xây dựng cho một loại ứng dụng cụ thể. Nó giảm thiểu các giả định về chi tiết triển khai ngoài các mục tiêu đã nêu của kiến ​​trúc. Mặc dù khung phát triển trò chơi đa nền tảng có thể có mục tiêu cung cấp "những gì chung cho (gần như) tất cả các trò chơi trên máy tính, không phân biệt nền tảng" và chỉ có thể triển khai các yếu tố trừu tượng như quản lý thời gian và thực thể, XNA Framework (ngầm) có mục tiêu cung cấp "những gì chung cho (gần) tất cả các trò chơi máy tính được viết để thực hiện trên XNA CLR". Cho rằng trọng tâm này rất hẹp, họ đã có thể bao gồm các tính năng động cơ không bị trừng phạt. Họ gói tất cả dưới tiêu đề "Khung", vì điều này cho thấy sự tự do thực hiện nhất định mà bạn là nhà phát triển trò chơi sẽ thích.

Nói một cách đơn giản, một khung nên không hạn chế nhất có thể trong khi vẫn cung cấp nền tảng hữu ích. Mặt khác, một động cơ thường tập trung nhiều hơn vào các tính năng cụ thể và khi sử dụng nó, bạn chấp nhận rằng có một số hạn chế nhất định mà bạn sẽ bị ràng buộc.


2

Tôi chưa bao giờ sử dụng một 'công cụ trò chơi' nhưng sự hiểu biết của tôi về điều này nhiều hơn là một bộ công cụ được xác định trước đi kèm với cấu trúc trò chơi được xác định trước để phát triển một loại trò chơi cụ thể. Và chắc chắn cấu trúc đó để phát triển một loại trò chơi cụ thể là yếu tố xác định chính trong công cụ trò chơi, nó dường như chắc chắn là điều mà bài viết Wikipedia đã nói ở trên rất lôi cuốn. Đối với tôi, khung XNA gần giống với bộ thư viện của bên thứ ba, như AJAX, ở chỗ nó bổ sung các thói quen được xây dựng sẵn vào ngôn ngữ lập trình đơn giản hiện có. Nó không đặt bất kỳ hạn chế hoặc hướng dẫn nào về những gì bạn, với tư cách là lập trình viên, có thể và không thể làm với các thói quen thư viện này. Trong tâm trí tôi không giống với động cơ theo bất kỳ cách nào. Sau đó, tôi đến từ một nền tảng phần mềm / web trung tâm kinh doanh,

Tôi đã xây dựng khung cho ý tưởng trò chơi bằng XNA và chắc chắn cảm giác như tôi đang sử dụng một thư viện khác trên C #. Tôi sẽ sử dụng các quy trình tôi đã hack trong chương trình thử nghiệm để sản xuất hai hoặc ba trò chơi cho windows và có thể cả Xbox.

Vì vậy, như tôi đã nói, trong tâm trí tôi khác xa với những gì tôi hiểu là 'Công cụ trò chơi' nên khi tôi xem qua bài đăng này, tôi không biết tại sao ai đó lại đưa ra sự so sánh đó. Tôi có lầm không?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.