Tôi đã thực hiện điều này cho một trò chơi đua xe PSP thương mại, hoạt động trên cả mạng ad hoc và thông qua một điểm truy cập không dây. (Hoặc đến một máy chủ tĩnh trên Internet, nếu muốn)
Do điểm 2, hệ thống không cần phức tạp về tối ưu hóa
Theo kinh nghiệm của tôi, điều này không đúng. Các thiết bị không dây (đặc biệt là các thiết bị cầm tay nhỏ) không giống như các máy tính có kết nối mạng có dây - điện thoại thông minh và máy chơi game không dây có xu hướng có giao diện mạng chậm cho mục đích trò chơi.
Đừng hiểu sai ý tôi - thông lượng của chúng thường tốt (nghĩa là lượng dữ liệu mỗi giây; tuyệt vời để phát trực tuyến phim hoặc v.v.), nhưng độ trễ khi phân phối một gói cụ thể có thể rất tệ và có thể rất tệ rất khác nhau, rất khó để ước tính bất kỳ gói cá nhân nào sẽ mất trong bao lâu. Sự biến đổi này càng trở nên tồi tệ hơn khi nhiều thiết bị không dây được tập hợp lại thành một khu vực chung, khi các tín hiệu của chúng bắt đầu giao thoa với nhau. Do đó, khá nhiều thời gian của tôi đã dành cho việc giảm số lượng các gói cần gửi, vì vậy chúng tôi sẽ có ít va chạm gói hơn. (Lưu ý rằng đây là một vấn đề ít xảy ra trong trường hợp có liên quan đến điểm truy cập mạng được hỗ trợ, thay vì để các thiết bị nói chuyện trực tiếp với nhau qua mạng ad hoc)
Như một ví dụ về loại tối ưu hóa này, trò chơi đua xe của chúng tôi đã diễn ra trong một thế giới có đèn giao thông. Hàng ngàn người trong số họ. Và chúng tôi cần đảm bảo rằng tín hiệu của chúng được đồng bộ giữa tất cả các trình phát trong phiên mạng. Thay vì cố gắng gửi các gói xung quanh để nói cho mọi người biết đèn nào ở trạng thái nào, chúng tôi đã xác định lịch biểu tĩnh cho tất cả các đèn giao thông, và sau đó chỉ đảm bảo rằng tất cả các khách hàng đồng ý về "thời gian trò chơi" hiện tại. Vì tất cả họ đều biết thời gian trò chơi và tất cả các trạng thái của đèn giao thông có thể được xác định từ thời gian trò chơi, chúng tôi đã đồng bộ hóa tất cả dữ liệu trạng thái đó mà không thực sự gửi bất kỳ dữ liệu đặc biệt nào. Sự thay đổi này đã tạo ra một sự khác biệt lớn cho hiệu suất mạng của chúng tôi.
Những gì đã nói, thiết lập đồng bộ đồng hồ đáng tin cậy giữa nhiều thiết bị không dây (với thời gian ping rất khác nhau do phần lớn mất gói) là một thách thức lớn. Rất vui được nói thêm về điều đó nếu bạn quan tâm.
Mỗi khách hàng có thể là một nguồn dữ liệu có thẩm quyền về bản thân và môi trường trực tiếp của mình (ví dụ như đạn.)
Đây là những gì chúng tôi đã làm, và nó hoạt động tốt cho chúng tôi trong tình huống của chúng tôi (xe hơi). Dĩ nhiên, phần có vấn đề là khi một đối tượng dừng lại gần người chơi 'a' hơn là người chơi 'b' và do đó quyền sở hữu của nó chuyển từ người chơi này sang người chơi khác.
Đây thực sự là một cuộc đàm phán phức tạp đáng ngạc nhiên giữa những người chơi, trong đó trò chơi 'a' đề xuất trò chơi 'b': "Tôi nghĩ đối tượng này gần gũi với bạn hơn. Bạn nên kiểm soát nó." Và sau đó, trò chơi 'b' có thể chấp nhận hoặc có thể từ chối, dựa trên quan điểm riêng của mình về tình huống. Sự khác biệt về trạng thái trò chơi được nhận thức giữa 'a' và 'b', và sự thay đổi thời gian giữa khi yêu cầu và phản hồi được gửi và nhận khiến điều này trở thành một cuộc đàm phán nhỏ đặc biệt khó chịu để trở nên đáng tin cậy và nó có thể dễ dàng thoái hóa thành một trò chơi "Khoai tây nóng", với quyền sở hữu đối tượng nảy liên tục giữa nhiều người chơi. Và ngay cả khi nó hoạt động bình thường, khi được nhìn từ điểm thuận lợi của trò chơi 'c', có '
Trực giác của tôi là cách tiếp cận "sở hữu đối tượng" này có thể quá cồng kềnh đối với các vật thể nhỏ, có thời gian sống ngắn như đạn. Chúng tôi đã sử dụng nó cho xe ô tô giao thông và các tay đua AI, những người có xu hướng sống trong mô phỏng trong một thời gian tương đối dài. Có vẻ như một cách tiếp cận hiệu quả hơn, nếu bạn sẵn sàng tin tưởng khách hàng, sẽ khiến mỗi trò chơi của người chơi sở hữu vị trí và đạn của họ, và tuyên bố khi người chơi đó bị trúng đạn của người khác. (Vì vậy, là "trò chơi A", tôi chịu trách nhiệm cho biết vị trí của người chơi A và người chơi A, nhưng người chơi B có trách nhiệm cho biết tôi đã đánh người chơi B chưa). Với một số tính toán chết tốt, bạn sẽ có thể có được hành vi khá hợp lý từ một hệ thống như thế này.