Khung XNA có phù hợp với lập trình phía máy chủ không?


11

Tôi đang tìm cách tạo MUD dựa trên văn bản, vì vậy rất nhiều yếu tố của khung XNA có vẻ phù hợp với những gì tôi cần. Đặc biệt là những thứ như vòng lặp trò chơi chung, kết nối mạng, v.v ... Có vẻ như XNA được kết hợp chặt chẽ với môi trường tương tác với UI và âm thanh, vì vậy tôi không chắc liệu đó có phải là hướng đi đúng đắn hay không.

Sẽ dễ dàng hơn khi chỉ tự mình tạo lại các loại khía cạnh này, cố gắng uốn cong khung XNA theo những gì tôi cần, hoặc có một khung tốt hơn cho loại công việc này không?

Câu trả lời:


5

Tôi không nghĩ khung XNA sẽ cung cấp cho bạn nhiều sử dụng cho phía máy chủ của trò chơi dựa trên văn bản, không. Bạn nên xem các thư viện lớp .NET framework tiêu chuẩn cho trường hợp sử dụng đó.

Nhưng mở rộng câu hỏi một chút, mặc dù các khung XNA thực sự dành cho phát triển trò chơi 2d và 3d của khách hàng, có thể có lý do để sử dụng các phần của chúng ở phía máy chủ của trò chơi 2d hoặc 3d. Việc sử dụng lại các bộ phận của công cụ đồ họa trên máy chủ là điều phổ biến vì máy chủ có nhu cầu thực hiện những việc như kiểm tra khả năng hiển thị và va chạm giống như máy khách. Trong trường hợp đó, nếu công cụ của bạn đã sử dụng thư viện toán học từ XNA, bạn cũng sẽ cần liên kết nó trong mã máy chủ của mình.


3

Nếu bạn đang sử dụng C #, bạn chỉ nên xem xét sử dụng WCF để trừu tượng hóa lớp mạng. Nói chung, MUD sẽ không có nhiều lưu lượng truy cập mạng, do đó, việc đi tuyến đường này có thể giúp bạn dễ dàng hơn rất nhiều. Tôi đã sử dụng WCF cho một game chiến thuật theo lượt và nó hoạt động khá tốt đối với tôi.


1
Nói chung tôi đồng ý, nhưng WCF không hỗ trợ các telnetkết nối thẳng . Đối với các MUD dựa trên văn bản thông thường, việc cho phép người dùng đến telnetmáy chủ là một điều nhất định.
Đặc vụ_9191

@ Agent_9191 Tùy thuộc vào mục tiêu của bạn, có thể có telnetgiao diện là một lớp trên đầu trang của một API mạnh mẽ hơn, ví dụ: một lớp được xây dựng trên WCF.
Cody Brocons

WCF sẽ không giới thiệu độ trễ, hoặc bạn sẽ sử dụng một ràng buộc tùy chỉnh mà nói về ổ cắm thô?
Nate

Chà, nếu anh ta cần một giao diện telnet, WCF có lẽ không phải là một lựa chọn tốt; Tôi nghi ngờ đó là quá mức cần thiết. Nhưng tôi không nghĩ độ trễ sẽ là một vấn đề khi xem xét thông tin được gửi qua lại sẽ tương đối đơn giản - chắc chắn đơn giản hơn tải trọng của nhiều dịch vụ web. Tôi sử dụng WCF cho một game chiến thuật theo lượt khá phức tạp và tôi không gặp vấn đề gì về hiệu suất. Tôi giữ cho trọng tải nhỏ với việc tuần tự hóa tùy chỉnh và độ trễ không phải là vấn đề vì các tin nhắn không được gửi qua lại rất thường xuyên (đối với dự án của tôi, hầu hết các tin nhắn xảy ra vào cuối mỗi lượt).
Mike Strobel

1

Bạn có thể đi theo lộ trình XNA và chỉ cần sử dụng các yếu tố cụ thể mà bạn mong muốn (âm thanh, mạng, v.v.); nhưng, nó làm tăng sự phức tạp của dự án của bạn và giảm "sự hiểu biết tức thời" về codebase.

Về cơ bản, khi bạn thêm nhiều phần mềm trung gian, kiến ​​thức về cách mã của bạn thực sự hoạt động giảm dần - trừ khi bạn đi sâu vào triển khai phần mềm trung gian. Khi bạn giữ khoảng cách, bạn sẽ mất hiệu quả, khả năng và sự hiểu biết.

Vì vậy, như đã nêu ở trên, sẽ có ích hơn nhiều cho bạn khi sử dụng C # và các thư viện không phải XNA thích hợp.

Nếu bạn đang làm điều này cho việc chỉnh sửa của riêng bạn, bạn cũng có thể tự lăn mình ở nơi bạn quan tâm trong khu vực - bạn sẽ tìm hiểu thêm theo cách này.

Cứ liều thử đi! Chúc vui vẻ!


1

Nó phần lớn phụ thuộc vào yêu cầu của bạn.

Nếu bạn quan tâm đến việc hỗ trợ âm thanh, mời bạn bè, et cetera hơn tôi tin rằng XNA là con đường để đi.

Hạn chế chính mà bạn gặp phải khi sử dụng XNA để kết nối mạng là giới hạn người chơi là 32 người chơi mỗi trò chơi.

Khi bạn phát triển một trò chơi với khung XNA, không nhất thiết phải kết hợp với tất cả các API khác nhau. Nhiều người sử dụng khung XNA nhưng dựa vào các khung khác để kết nối mạng.

Đề nghị của tôi là để vật lý (viết chúng vào notepad hoặc một cái gì đó) liệt kê các nhu cầu và mong muốn của bạn cho khía cạnh mạng. Sau đó so sánh và đối chiếu các khung khác nhau.


-1

Tôi nghiêng về câu nói "tạo ra từ đầu", nhưng đó chỉ là cảm giác ruột thịt dựa trên việc đã làm việc riêng với mã C # và MUD. Dù sao, bạn sẽ có nhiều quyền kiểm soát hơn và học hỏi nhiều hơn từ việc tung ra các phiên bản của riêng bạn về bất cứ thứ gì bạn có thể sử dụng từ XNA.

Bất kỳ lý do nào bạn không sử dụng công cụ MUD hiện có, ít nhất là để tham khảo?


Làm bằng cấp tôi đang sử dụng một công cụ hiện có để tham khảo. Tôi đang cố gắng chuyển cơ sở mã SMAUG sang C # từ cơ sở C hiện có. Vì vậy, bộ tính năng hầu hết được xác định, nó chỉ khiến nó hoạt động trong C #.
Đặc vụ_9191
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.