Chà, bạn đã có câu trả lời nhưng câu trả lời thực sự của bạn là "hãy tự thử". Những điều khác nhau từ trò chơi này đến trò chơi khác.
Tôi đã làm vài trò chơi nhiều người cho một số khóa học thiết kế trò chơi mạng phân tán. Thử thách lớn nhất là thực hiện một game hành động thời gian thực, nơi nhiều người chơi tham gia và gửi đầu vào như địa ngục. Khi nói đến điểm đó, mọi thứ trở thành vấn đề. Khi bạn thấy liên kết đầu tiên mà Tetrat gửi, thậm chí việc xác định thông đồng cũng trở thành một vấn đề. Và bạn sẽ đọc các thuật ngữ nghe như lag, nội suy, ngoại suy, dự đoán ... Nhưng nếu bạn chưa bao giờ thử tự viết mã từ đầu, bạn sẽ chỉ chấp nhận những từ này và sẽ không biết ý nghĩa thực sự của chúng.
Đề nghị của tôi là:
Bước 1
Chỉ cần bắt đầu với thiết kế dựa trên máy chủ được ủy quyền hoàn toàn ngay bây giờ. Như bạn đã nói, chỉ cần gửi đầu vào của người dùng đến máy chủ và để máy chủ thực hiện mọi thứ và khách hàng nhận được kết quả. Trò chơi của bạn sẽ hoạt động hoàn toàn phù hợp. Nhưng khi bạn nhìn vào khách hàng của mình, bạn sẽ nhận thấy một số độ trễ, một số vấn đề dịch chuyển tức thời, không chuyển động trơn tru ... ect.
Bước 2
Bắt đầu sửa các vấn đề về phía khách hàng. Các vấn đề dịch chuyển tức thời chẳng hạn. Nhân vật của bạn đã ở (0,0) và máy chủ cho biết bây giờ bạn đang ở (100.100). Nhân vật của bạn sẽ chỉ dịch chuyển đến (100.100), điều này không tốt. Có nội suy. Bạn nên có một mã ở phía máy khách sẽ trượt ký tự từ (0,0) đến (100, 100) một cách trơn tru. Có, bạn sẽ chuyển nhân vật của mình từ (0,0) sang (100.100) nhưng nhanh như thế nào? Bây giờ bạn chỉ có thể sử dụng chênh lệch thời gian giữa mỗi lần cập nhật máy chủ. Nếu máy chủ của bạn gửi 10 gói trong một giây, nghĩa là độ trễ 100 ms giữa mỗi gói.
Bước 3
Bây giờ trò chơi của bạn đã tốt cho các mạng nhanh, nơi có độ trễ là (1-50) ms. Nhưng nó sẽ bị tiêu diệt nếu mất gói, độ trễ cao hoặc tính toán mất nhiều thời gian trong máy chủ ... ect. Trong những tình huống bạn sẽ nhận thấy khi nhấn mũi tên trái, bạn sẽ thấy nhân vật của mình di chuyển sang trái với độ trễ 200 ms. Sự chậm trễ giữa gói của bạn đến máy chủ, thời gian tính toán và quay lại với bạn với vị trí cuối cùng của bạn. Điều này là xấu, nhược điểm tồi tệ nhất của thiết kế ủy quyền máy chủ. Người chơi muốn nhân vật của mình di chuyển sang trái ngay khi anh ta nhấn trái, bạn không thể khiến anh ta chờ đợi. May mắn là máy khách cũng có mã giống như máy chủ, vậy tại sao không thực thi nó trên máy khách ngay lập tức và sửa kết quả cuối cùng với câu trả lời từ máy chủ? Đó là những gì cơ bản dự đoán đầu vào là. Khách hàng nhấn trái, mã bên cạnh anh ta sẽ di chuyển anh ta sang trái, sau một thời gian cho phép 200 ms, vị trí thực sự đến từ máy chủ và máy khách sẽ điều chỉnh vị trí của nó với nó. Nếu mọi thứ đều ổn, khách hàng sẽ không nhận thấy bất cứ điều gì, "bước 2" cũng sẽ giúp chúng tôi thực hiện điều này.
Vâng, net có nhiều hướng dẫn và những điều về chủ đề này. Nhưng có 2 cái tôi rất thích:
Thực sự tốt, bao gồm các điểm tối: Mạng nhiều người chơi Valve-Source Engine
Lịch sử, thú vị để đọc và đáng giá: 1500 Archers vào ngày 28.8 ,