Chạy trò chơi XNA không có đồ họa


11

Tự hỏi liệu có cách nào để chạy một trò chơi XNA mà không hiển thị gì không.

Tôi có một trò chơi đang hoạt động chạy trong thiết lập máy chủ của khách, trong đó một người chơi là chủ nhà và những người khác có thể kết nối với trò chơi của anh ta.

Bây giờ tôi muốn có thể chạy trò chơi với tư cách là máy chủ lưu trữ trên một máy chủ được xác định không có card đồ họa, về cơ bản tôi không muốn chạy bất kỳ logic Draw () nào cả.

Tôi có thực sự cần phải đi qua toàn bộ trò chơi và xóa tất cả các tham chiếu đến XNA không?

Làm thế nào mọi người đã làm điều này?

EDIT : Lý do tôi muốn làm điều này là vì tôi có một thiết lập máy chủ khách đang hoạt động trong trò chơi và tôi không muốn tạo một chương trình máy chủ "không đầu" riêng biệt.


Tại sao bạn không thể viết mã Drawnhư thế if (headless) { return; }?
tro999

1
@ asher999 Không chắc chắn nếu điều đó sẽ loại bỏ hoàn toàn tất cả các bản vẽ và logic đồ họa khỏi trò chơi. Một máy chủ ảo có thể không có bất kỳ bộ điều hợp đồ họa thực sự nào cả.
JensB

Thay đổi loại đầu ra hoặc bỏ qua bản vẽ sẽ không loại bỏ một cách kỳ diệu sự phụ thuộc của XNA vào thiết bị đồ họa. Nếu bạn đang tải bất kỳ nội dung nào yêu cầu thiết bị đồ họa (đặc biệt là kết cấu), rất có khả năng những người đó sẽ không tải được bằng cách sử dụng một trong các giải pháp được đề xuất.
Trò chơi Dadoo

Câu trả lời:


10

Chỉ cần tạo một dự án C # bình thường và bao gồm các nhị phân XNA. Điều này sẽ giúp bạn có quyền truy cập vào các kiểu dữ liệu và phương thức khung của XNA. Trò chơi của tôi làm điều này và nó hoạt động hoàn hảo.


1
Tôi đoán bạn đã viết một trình bao bọc hoạt động như XNA gọi các phương thức cần thiết như Cập nhật cho bạn? Tôi sẽ cho nó đi, cảm ơn.
JensB

2

Câu trả lời là: đừng làm điều này. Nếu bạn không cần phải tạo một trò chơi - tức là; bạn không muốn tận dụng những thứ mà XNA cung cấp, tại sao lại làm như vậy? Bạn thực sự nên xem xét việc phát triển một phần mềm tùy chỉnh có thể mô phỏng thành công trò chơi bạn muốn chơi - điển hình là một hệ thống giao diện điều khiển nào đó. Nếu bạn cung cấp thêm chi tiết, tôi sẽ cập nhật câu trả lời của tôi với một phản hồi ít chung chung hơn.


1
Tôi có thể cung cấp cho bạn một lý do: thử nghiệm đơn vị. Thường thì bạn muốn kiểm tra một đoạn hoặc phần mã mà không phải tải hoặc vẽ và đồ họa.
Stephen Tierney

3
@StephenTierney Tôi có thể cho bạn một lý do khác: anh ấy không cố gắng, anh ấy đang cố gắng chạy một máy chủ trò chơi (trên một máy chuyên dụng). Vui lòng đọc lại câu hỏi và xem xét lấy lại downvote của bạn.
Vaughan Hilts


1

Để xây dựng dựa trên đề xuất không có tiêu đề, bạn chỉ có thể bao gồm các tham chiếu đến DLL và sử dụng chúng mà không cần sử dụng bất kỳ vòng lặp trò chơi mặc định nào. Để biết ví dụ về điều này, bạn có thể xem loạt bài hướng dẫn winforms trên câu lạc bộ người sáng tạo: http://xbox.create.msdn.com/en-us/education/catalog/sample/winforms_series_2

Ngoài ra, nếu bạn muốn trở nên lạ mắt hơn nữa, bạn có thể thay thế toàn bộ vòng lặp trò chơi XNA bằng vòng lặp tùy chỉnh của riêng bạn và kiểm soát toàn bộ quá trình. Để biết thêm thông tin về cái nhìn này tại /programming/6361691/custom-xna-game-loop-in-windows


1

Nếu bạn thay đổi Loại đầu ra của Dự án XNA thành "Ứng dụng bảng điều khiển", ứng dụng sẽ chỉ mở một Bảng điều khiển trống khi khởi động mà không cần mở cửa sổ của trò chơi thực tế. Điều này có thể hữu ích cho những gì bạn đang cố gắng thực hiện, vì bạn muốn thực hiện các bài kiểm tra và bạn có thể rất dễ dàng sử dụng Bảng điều khiển làm cửa sổ gỡ lỗi.


1

Bạn cũng có thể xem xét ghi đè cập nhật và rút ra các cuộc gọi, và chỉ cần trả lại.

Ngoài ra, đừng gọi đồ họa trong các lớp trò chơi chính của bạn, điều này sẽ ngăn cửa sổ xna không được kích hoạt trên trò chơi đóng vai trò là máy chủ của bạn.

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.