Làm cách nào tôi có thể phát triển trong MonoGame mà không cần dựa vào các tệp .xnb?


7

Tôi mới bắt đầu phát triển trò chơi và MonoGame có vẻ như là một khuôn khổ thân thiện với người mới bắt đầu, vì vậy tôi nghĩ tôi sẽ bắt đầu với điều đó. Tuy nhiên, khi tôi bắt đầu đọc hướng dẫn về nó, tôi nhận thấy một chủ đề phổ biến: Ở trạng thái hiện tại, MonoGame cần trình biên dịch nội dung của XNA vì nó không có một trình duyệt riêng. Vấn đề duy nhất tôi gặp phải là vì tôi không thể cài đặt XNA (làm theo hướng dẫn trên web, thậm chí đã cài đặt Thị trường trò chơi). Nhân tiện, tôi đang dùng Windows 8.1.

Tóm lại, tôi đã từ bỏ việc cố gắng cài đặt XNA. Tuy nhiên, tôi đã chơi xung quanh một chút với MonoGame và thấy rằng bạn có thể sử dụng hình ảnh thô ( .pngtrong trường hợp của tôi) thay vì những hình ảnh được chuyển đổi thành .xnb. Tôi chưa thử âm thanh, vì vậy tôi không biết nó có hoạt động không. Hoặc bất kỳ tài sản khác cho vấn đề.

Câu hỏi của tôi là, có thể phát triển trong MonoGame mà không cần sử dụng .xnbtệp không? Hoặc, có thể phát triển mà không cần trình biên dịch nội dung của XNA không? Nếu có thì làm thế nào?


1
"Khó hơn bao nhiêu" là một chủ đề chủ quan, vì vậy tôi đã chỉnh sửa câu hỏi đó.

@Josh - Tôi hoàn toàn không đồng ý. Mức độ phức tạp có thể được khách quan. "Khó hơn bao nhiêu" có thể được ánh xạ về mặt khái niệm thành "mức độ phức tạp".
OCDev

Câu trả lời:


4

Có, bạn có thể phát triển với MonoGame mà không cần dựa vào các tệp XNB. Tôi đã thực hiện nó được hơn một năm nay và đối với hầu hết các phần, nó khá đơn giản.

Điều chính bạn có thể gặp rắc rối là SpriteFont. Những gì tôi làm là kết xuất trước phông chữ của mình trên một kết cấu và hiển thị chúng như các họa tiết bình thường. Tôi đã có một hướng dẫn nhỏ ở đây: http://www.craftworkgames.com/blog/tutorial-bmfont-rendering-with-monogame/

Tôi chưa bao giờ gặp rắc rối với .pngcác tập tin và .wavtập tin cũng hoạt động tốt nhưng bạn phải chắc chắn rằng chúng ở đúng định dạng. Tôi đã không thử sử dụng shader hoặc bất cứ thứ gì khác thực sự, nhưng tôi đã tạo ra một vài trò chơi hoàn chỉnh.


4

Bạn có thể sử dụng Trình tạo XNB . Chương trình vẫn yêu cầu XNA .dll, nhưng bạn chỉ cần tải chúng xuống và đặt vào một thư mục có chương trình.


3
Phân phối DLL XNA trực tiếp không, theo như tôi biết, được EULA cho phép. Tôi sẽ không đề nghị cách tiếp cận đó.

Có hợp pháp không nếu bạn đã thu được các tệp XNA DLL (như từ trình cài đặt) một cách hợp pháp?
Gustavo Maciel

Nếu bạn có chúng trên hệ thống của mình từ phiên bản XNA đã cài đặt, điều đó tốt. Tuy nhiên, không ai (nhưng MS) có thể phân phối DLL trực tiếp, do đó, việc lấy chúng theo bất kỳ cách nào không đến từ trình cài đặt XNA, thật không may, chống lại EULA.

Ekzo không khuyến nghị tải xuống XNA DLL từ một nơi không chính thức.
Danyal Aytekin

Bạn cũng cần cài đặt XNA Framework Redistributable 4.0 để có thể chạy nó.
Minh Nguyễn

1

Bây giờ không có giá trị gì khi Monogame hiện có Công cụ Trình tạo Đường ống Nội dung riêng , loại bỏ mọi phụ thuộc vào các tệp DLL khung XNA cũ.

Nó bao gồm một dòng lệnh (được liên kết ở trên) cũng như Công cụ GUI có thể được sử dụng để tạo các tệp XNB của bạn từ kết cấu, v.v. và sau đó được sao chép vào dự án trò chơi của bạn.

Nếu bạn đang làm việc trong Visual Studio thì tệp .mgcb có Build Action (MonogameContentReference) và các tệp XNB của bạn sẽ được tạo như một phần của quy trình xây dựng Visual Studio của bạn, do đó tạo ra một quy trình làm việc khá liền mạch hoặc ít nhất là một quy trình tương tự với những gì XNA cung cấp với các mẫu dự án Visual Studio của nó.

Cá nhân, tôi thường giữ tài sản của mình trong một thư mục riêng bên cạnh thư mục Dự án trò chơi của mình và đặt tệp .mgcb ở đó. Sau đó tôi bao gồm tệp .mgcb trong dự án trò chơi làm tài liệu tham khảo mục được liên kết.

Chủ đề cũ nhưng tôi thấy nó nên có lẽ người khác cũng sẽ như vậy :)


0

Như được đề cập bởi craftworkgames, bạn có thể phát triển mà không cần XNB (tốt, ít nhất là với kết cấu và một số định dạng âm thanh).

Bạn có thể tải tệp png bằng cách sử dụng đối tượng Luồng (phải là luồng có thể tìm kiếm, do đó bạn có thể cần sao chép từ StreamReader vào Luồng bộ nhớ, sau đó chuyển chính luồng bộ nhớ đến hàm tạo texture2d).

Điều tương tự cũng có thể xảy ra với các tập tin Wav.

Tuy nhiên, nếu bạn muốn tải mô hình FBX hoặc mô hình .X, tôi không chắc liệu các đối tượng Mô hình / Lưới có thể được khởi tạo trực tiếp từ luồng tệp có thể tìm kiếm hay không.

Ghi chú:

  • Tôi cũng đã khởi tạo kết cấu bằng cách tải chúng từ luồng HTTP (đọc từ luồng http - sao chép vào luồng bộ nhớ có thể tìm kiếm - truyền luồng đến hàm tạo texture2d) - cho phép trò chơi của tôi tải xuống kết cấu từ trang web qua HTTP protocal thay vì đĩa.

Các shader có thể được tạo trong thời gian chạy - được khởi tạo từ mảng byte và tôi cũng nghĩ từ một chuỗi chứa mã. Nó "nên" có thể tạo các shader trong thời gian thực hoặc thậm chí tải chúng từ các nguồn từ xa hoặc từ đĩa mà không yêu cầu các tệp XNB.

Tôi không chắc liệu phiên bản DirectX của MonoGame đã hỗ trợ điều này chưa (trong repo), nhưng tôi nghĩ không nên sử dụng các bản dựng dựa trên OPENGL hiện tại.

Nếu bạn muốn tránh phải sử dụng XNB, bạn nên tạo trình quản lý nội dung của riêng mình để thay thế các phiên bản XNA / Monogame từ đầu - do đó làm suy yếu toàn bộ đường dẫn nội dung - nhưng cũng có thể ngụ ý hỗ trợ các định dạng của riêng bạn mà không yêu cầu Tính năng cụ thể của XNA.


-1

Tôi muốn nói rằng bạn đang tiếp cận vấn đề theo cách sai.

Trước hết hãy thử và giải quyết vấn đề XNA, vì có khả năng vì dự án MonoGame hoàn toàn tập trung vào việc thực hiện XNA như một triển khai nguồn mở mà nó sẽ sử dụng các loại tệp tương tự hoặc cùng loại theo cùng một cách. Mặc dù MonoGame không phụ thuộc vào XNA cài đặt chính xác (xem chỉnh sửa - Cảm ơn Josh), đây là một số điều cần kiểm tra các vấn đề XNA:

  • Máy của bạn có đáp ứng các thông số kỹ thuật tối thiểu để phát triển không?
  • Bạn đã cài đặt tất cả các điều kiện tiên quyết? Những loại lỗi bạn đang nhận được?
  • Đôi khi các phiên bản trước của khung .net và XNA studio có thể can thiệp, hãy đảm bảo bạn hủy cài đặt chúng trước khi cài đặt XNA để đảm bảo bạn bắt đầu lại từ đầu khi cài đặt.
  • Bạn có thể làm việc hoàn toàn trong studio XNA mà không phải lo lắng về MonoGame và sau đó dễ dàng chuyển nó sang MonoGame sau này không? Vì đây là ý định ban đầu của MonoGame, để cho phép các nhà phát triển hiện tại chuyển sang dễ dàng, đây sẽ là một con đường khả thi.

Nếu máy của bạn không thể hoạt động với XNA hiện tại, có thể có các sự cố liên quan đến MonoGame. Nó luôn luôn là giá trị ủi ra các vấn đề cài đặt môi trường phát triển đầu tiên trước khi bắt đầu một dự án.

Chỉnh sửa: Như Josh đã đề cập trong các bình luận - XNA đã bị bỏ rơi. Tôi đã không thực sự nhận ra bản thân mình, vì vậy mặc dù ví dụ từ trình cài đặt XNA ảnh hưởng đến MonoGame không phải là vấn đề trong trường hợp này, tôi vẫn tin rằng đáng lưu ý rằng các vấn đề cài đặt là thứ cần làm rõ trước khi bắt đầu phát triển dự án.


Tôi tin rằng máy của tôi không đáp ứng các thông số tối thiểu. Đó là thế hệ thứ 2 i5 2.5 GHz với bộ nhớ 4gb và Windows 8.1 trên đó. Về các điều kiện tiên quyết, vâng, tôi đã cài đặt chúng. Theo thứ tự sau: VCS 2010 Express, Trò chơi cho Windows Marketplace và sau đó là XNA. XNA không thể phát hiện bản sao VCS2010 của tôi và từ chối cài đặt.
Truerror

XNA đã bị bỏ rơi và mặc dù về mặt kỹ thuật nó hoạt động trên nhiều máy hiện đại, trình cài đặt hóa ra rất dễ vỡ và không có khả năng trong tương lai, do đó, không nhất thiết sự cố khi cài đặt XNA sẽ chuyển sang vấn đề sẽ ảnh hưởng đến MonoGame . Điều đó nói rằng, câu trả lời này không thực sự giải quyết câu hỏi đã được hỏi, đây vẫn là một truy vấn hợp lệ bất kể có vấn đề gì với việc cài đặt XNA của ai đó hay không.

Chà, MonoGame tự cài đặt mà không gặp trở ngại nào trên hệ thống của tôi, đó là XNA mà tôi gặp sự cố khi cài đặt. Các công cụ như XNABuilder và Trình biên dịch nội dung XNA đều tốt, nhưng chúng cần cài đặt XNA. Vì vậy, hiện tại, tôi đang theo gợi ý craftworkgames và sử dụng tài sản thô thay thế. Tin tức là, trình biên dịch nội dung MonoGame đang được tiến hành, và rất có thể sẽ có trong phiên bản chính tiếp theo.
Truerror

Rất vui được biết, tôi xin lỗi tôi đã không trả lời trực tiếp câu hỏi của bạn nhưng tôi đã có rất nhiều vấn đề được giải quyết bằng cách dành thời gian để cài đặt lại mọi thứ đúng cách và giải quyết những vấn đề đó trước tiên - nghĩ rằng điều quan trọng cần đề cập.
Tom 'Blue' Piddock
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.