Lưu ý: Đây là một câu hỏi về mạng, không chơi game. Tôi đang sử dụng StarCraft chỉ là một ví dụ.
Trò chơi StarCraft (không phải StarCraft 2) hỗ trợ chơi trực tuyến. Một người chủ nhà, và những người khác tham gia. Nếu chủ nhà rời khỏi trò chơi, trò chơi có thể tiếp tục vô thời hạn mà không cần chủ nhà. Làm thế nào mà làm việc?
Hãy xem xét kịch bản sau đây:
- Tôi lưu trữ 3 so với 3. Lưu ý rằng, để mọi người có thể tham gia, bộ định tuyến của tôi phải được cấu hình để chuyển tiếp 6112, TCP và UDP (xem Hỗ trợ Blizzard ).
- Năm người tham gia. Tất cả mọi người (bao gồm cả tôi) đứng đằng sau một bộ định tuyến. Tôi bắt đầu trò chơi.
- Ba phút trong trò chơi, khoảng hai mươi người quá khích đổ vào căn cứ của tôi. Không ai giúp tôi.
- Cơ sở của tôi đã bị loại bỏ, vì vậy tôi rời đi (trò chơi không cho bạn lựa chọn).
- Trò chơi tiếp tục mà không có chủ nhà (đội chủ nhà có hai người chơi còn lại).
Làm thế nào để năm khách hàng còn lại (những người không cần 6112 chuyển tiếp) vẫn kết nối?
Nếu tôi hiểu chính xác: nếu hai chương trình muốn nói chuyện với nhau, một trong số chúng phải là "máy chủ" và lắng nghe các kết nối trên một cổng, trong khi chương trình kia phải là "máy khách" và bắt đầu yêu cầu kết nối trên đó Hải cảng. Họ không thể đơn giản bắt đầu gửi các gói cho nhau (và tôi thậm chí không biết họ sẽ như thế nào, nếu cả hai đều đứng sau bộ định tuyến).
Ai đó lưu trữ một trò chơi là một máy chủ, trong khi những người tham gia nó là khách hàng. Thật dễ dàng để xem các khách hàng có thể bắt đầu giao tiếp với máy chủ như thế nào. Điều tôi không nhận được là: làm thế nào để các khách hàng bắt đầu liên lạc với nhau mà không cần thông qua máy chủ? Giao thức Internet có cho phép máy chủ khởi tạo kết nối giữa các máy khách không?
Hoàn toàn có thể, trong trường hợp của StarCraft, lưu lượng trò chơi đi qua các máy chủ Battle.net. StarCraft duy trì kết nối với Battle.net trong các trò chơi (đối với tin nhắn từ bạn bè, v.v.). Tuy nhiên, tôi nghi ngờ lưu lượng truy cập trò chơi đi qua nó, bởi vì nếu có, tại sao máy chủ cần chuyển tiếp 6112?
Câu hỏi của tôi là: một máy chủ, với nhiều máy khách được kết nối với nó, có thể bắt đầu các kết nối giữa chúng không?
I host a 3 versus 3. Note that, for people to be able to join, my router has to be configured to port forward 6112, TCP and UDP (see Blizzard Support).
Rõ ràng điều này là cần thiết để bắt đầu một trò chơi để người dùng có thể tìm thấy bạn, nhưng không bắt buộc phải duy trì kết nối.