Công cụ mạng / thư viện / hệ thống nào sẽ được sử dụng trong trò chơi theo lượt .NET? [đóng cửa]


7

Tôi đang phát triển một trò chơi theo lượt chiến lược trừu tượng trong C #.

Được như vậy, tải mạng cao không được mong đợi. Người chơi thậm chí không cần phải kết nối mọi lúc. Chủ nhà có thể đợi người chơi hiện tại kết nối và di chuyển. Tôi biết tôi có thể tạo một trang web để chạy nó, nhưng tôi muốn bất cứ ai cũng có thể lưu trữ các trò chơi của riêng họ.

Tôi cần một cái gì đó đáng tin cậy và điều đó cho phép tôi có năng suất tốt.

Tôi đã được tiến hành với WCF . Đó có phải là một lựa chọn tốt? Những khung mạng nào khác tôi nên xem xét?


1
WCF hỗ trợ các kết nối song công (sau khi kết nối được mở, máy khách hoặc máy chủ có thể gửi tin nhắn cho nhau). Nó cũng có thể xử lý các giao thức khác nhau (TCP + HTTP) cùng một lúc mà không cần nỗ lực thêm.
jpbochi

Câu trả lời:


2

Tôi đã sử dụng WCF cho trò chơi chiến lược theo lượt của riêng mình và nó hoạt động rất tốt. Khu vực phiên bền bỉ tuyệt vời và các kênh song công với các cuộc gọi lại của máy khách là lý tưởng để đẩy tin nhắn đến máy khách theo ý muốn từ máy chủ. WCF cũng hỗ trợ nhiều ràng buộc điểm cuối, do đó bạn có thể kết nối trình phát cục bộ thông qua liên kết đường ống có tên trong khi các trình phát từ xa kết nối thông qua các ràng buộc TCP.

Tôi khuyên bạn nên liên kết TCP với định dạng nhị phân nếu bạn gửi nhiều dữ liệu trên mỗi lượt.


3

Nếu bạn cảm thấy thoải mái và hiệu quả trong WCF, có thể không có lý do mạnh mẽ để sử dụng bất cứ điều gì khác. Tôi chắc chắn nghĩ rằng WCF là một nơi tốt để bắt đầu bởi vì nếu bạn theo mô hình hợp đồng của nó, đó là một mô hình dễ dàng để chuyển đổi để làm việc với các hệ thống khác, nếu cần phải phát sinh.

Đối với một trong những dự án của riêng tôi, tôi bắt đầu với một nguyên mẫu WCF. Khi tôi bắt đầu "dặm cuối", tôi thấy rằng thường xuyên hơn là tôi không chiến đấu với WCF để hoàn thành công việc. Tôi đặc biệt gặp vấn đề với việc ghép cặp trò chơi trong ngăn xếp ngang hàng của WCF, điều này không cung cấp cho tôi các công cụ mà tôi cần. Trong dự án đó, tôi đã kết thúc việc chuyển sang thư viện mạng của XNA, nơi cung cấp cho tôi cách ghép nối giống Xbox (và GamerTags và không có gì) mà tôi đang tìm kiếm và (cố gắng) cố gắng mô phỏng trong WCF. (Tất nhiên, thư viện mạng của XNA cho rằng bạn đang làm việc trong một trò chơi XNA và thật không may vẫn không hỗ trợ xuất bản trò chơi trên Windows mà không có hợp đồng GfW Live.)

Tôi đã không chạm vào phần lớn mã mạng của mình khi chuyển từ WCF sang XNA Net, vì bản thân các hợp đồng (các lớp giao diện) đã không thay đổi nhiều (trừ việc bỏ các thuộc tính WCF). Viết các lớp Reader / Writer thực hiện hoặc tiêu thụ hợp đồng của tôi khá đơn giản. Tôi có thể có thể giữ hỗ trợ cho cả hai với một chút #if WINDOWSxáo trộn, nhưng tôi đã quyết định bỏ hỗ trợ WCF tại thời điểm đó, vì nó đơn giản hóa mọi thứ trong dự án đó. Có lẽ thú vị, khi bắt đầu các dự án khác trực tiếp với Mạng XNA, tôi vẫn đang sử dụng một cái gì đó của mẫu "hợp đồng" được điều khiển bởi giao diện / proxy của WCF. Tôi đã có ý định viết một bài đăng blog về chủ đề đó, thực sự, bởi vì tôi nghĩ rằng đó là một mô hình tốt để làm theo.


1

Nếu bạn chỉ đơn giản là vượt qua "biến" thay đổi qua lại thì bạn đang đi trên con đường tốt nhất. WCF sẽ cho phép bạn linh hoạt nhất mà không cần thêm nhiều vào nỗ lực phát triển của mình, đặc biệt nếu bạn đã biết .NET.

Vì dường như độ trễ không phải là vấn đề trong trò chơi của bạn, WCF là một lựa chọn tuyệt vời, bởi vì nó sẽ trừu tượng hóa tất cả các mã hóa tin nhắn từ bạn, và vì bạn không cần phải tìm ra từng chút hiệu suất cuối cùng, sự trừu tượng này nên có lợi cho bạn hơn là có hại.


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.