Người chủ trì trò chơi nên là người có thẩm quyền, hay một khách hàng câm khác?


15

Khi thiết kế một trò chơi nhiều người chơi nối mạng nơi một người chơi tổ chức và những người khác kết nối với nhau, có hai chiến lược tôi biết:

  • Có trò chơi của người chơi máy chủ là người có thẩm quyền , với tất cả những người chơi khác là những khách hàng câm đang cố gắng bắt kịp với trạng thái trò chơi hiện tại. Trong mã, sẽ phải có rất nhiều trường hợp đặc biệt, tùy thuộc vào việc người chơi hiện tại có phải là chủ nhà hay không.
  • Làm cho máy chủ trở thành một máy khách câm như mọi người khác bằng cách chạy một máy chủ chuyên dụng ẩn trên một luồng khác. Máy chủ chuyên dụng sẽ là cơ quan và máy chủ sẽ kết nối với nó như mọi người khác (thông qua localhost).

Những lợi thế / bất lợi của mỗi trong số này là gì? Cái nào được sử dụng thường xuyên nhất (hoặc nó thay đổi theo loại / kích thước trò chơi)?


Trường hợp đầu tiên bạn mô tả có thể là một dạng của mạng P2P (với một khách hàng có thẩm quyền) và nó thường phức tạp hơn nhiều, và khó thực hiện và duy trì hơn.
akaltar

Câu trả lời:


13

Cách tiếp cận khách hàng câm là tốt nhất theo quan điểm thiết kế thuần túy - nó hạn chế rất nhiều lượng mã khác nhau bạn cần giữa máy chủ và máy khách và cho phép máy chủ chạy không đồng bộ. Nhược điểm là máy của máy chủ yêu cầu thêm tài nguyên - nhưng tôi đoán nó luôn như vậy.


8

Giữa hai lựa chọn này, cách tiếp cận khách hàng câm chắc chắn là tốt nhất vì những lý do mà DeadMG đề cập.

Có một tùy chọn khác là làm cho mọi khách hàng trở thành người có thẩm quyền, đó là lợi thế của khách hàng câm mà tất cả các đồng nghiệp đều chia sẻ cùng một mã. Ưu điểm khác là nó có thể công bằng hơn rất nhiều nếu bạn đặt đúng quy tắc vì không ai có lợi thế 0-lag-to-server.

Điều này có thể khá khó để thực hiện tùy thuộc vào loại trò chơi. Giao thức của bạn sẽ phải đối phó với việc giải quyết xung đột giữa các đồng nghiệp, có thể sử dụng một số loại chương trình sở hữu. Chỉ để lại các xung đột trong đó 2 đồng nghiệp tuyên bố quyền sở hữu của cùng một đối tượng trò chơi.

Giao thức nhiều người chơi Googling Peer-2-Peer có thể cung cấp cho bạn thêm một số chi tiết về phương pháp này.


1
gamedev.stackexchange.com/questions/3887/ Đây là một số thông tin khác :)
michael.bartnett

Hấp dẫn. Bài đăng đó tuyên bố rằng đây là cách "hầu hết các tiêu đề chiến lược" thực hiện kết nối mạng. Điều này có thực sự đúng không? Đây có phải là ví dụ. Chỉ huy và chinh phụcStarcraft làm việc?
BlueRaja - Daniel Pflughoeft

@BlueRaja, đây là cách Starcraft hoạt động, vâng. Trong Starcraft không có thẩm quyền nào cả. Warcraft III và Starcraft II có mô hình trao đổi thông điệp tập trung hơn, xử lý độ trễ và ngắt kết nối, nhưng về cơ bản giống nhau ở chỗ mỗi khách hàng lưu trữ trạng thái trò chơi riêng.
Rotsor

Ưu điểm khác của mô hình mạng này là cho phép hỗ trợ trạng thái thế giới chia sẻ thống nhất lớn với lưu lượng đồng bộ hóa tối thiểu.
Rotsor

Nhược điểm lớn nhất của mô hình này là lỗ hổng cố hữu của nó đối với "hack bản đồ", đó là tiết lộ một số dữ liệu trạng thái trò chơi mà người chơi thường không thể nhìn thấy.
Rotsor
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.