Nhiều tùy chọn kết nối / kết nối mạng cho trò chơi 2D với vật lý [đã đóng]


7

Tóm lược:

50% bộ tạo nhịp 2D hoàn thành của tôi với Box2D là công cụ vật lý nên có hỗ trợ nhiều người chơi trong phiên bản cuối cùng. Tuy nhiên, mã hiện tại chỉ là một trò chơi đơn.

  • Tôi nên làm gì bây giờ?
  • Và quan trọng hơn, tôi nên triển khai nhiều người chơi và kết hợp nó với phần chơi đơn như thế nào?
  • Có phải là một ý tưởng tồi khi mã hóa chế độ chơi đơn tách biệt với chế độ nhiều người chơi (như Notch đã làm với Minecraft)?

Hiệu suất trong trình phát đơn phải càng tốt càng tốt (Mô phỏng vật lý bằng cách sử dụng máy chủ loopback để thực hiện chế độ chơi đơn sẽ là một vấn đề ở đó)

Toàn bộ nền / câu hỏi:

Tôi đang làm việc trong một dự án trò chơi 2D tương đối lớn trong C ++, với vật lý là yếu tố cốt lõi của nó. (Tôi sử dụng Box2D cho điều đó)

Trò chơi đã hoàn thành cần có sự hỗ trợ nhiều người chơi, tuy nhiên tôi đã phạm sai lầm rằng tôi đã không lên kế hoạch cho phần kết nối mạng đúng cách và về cơ bản đã hoạt động trên một trò chơi một người chơi cho đến bây giờ.

Tôi nghĩ rằng hỗ trợ nhiều người chơi có thể được thêm vào trò chơi một người chơi gần như đã hoàn thành một cách tương đối dễ dàng và rõ ràng, nhưng rõ ràng, từ những gì tôi đã đọc điều này là sai.

Tôi thậm chí đã đọc rằng một trò chơi nhiều người chơi nên được lập trình như một trò chơi ngay từ đầu, với chế độ chơi đơn thực sự chỉ bao gồm lưu trữ một máy chủ cục bộ vô hình và kết nối với nó thông qua loopback. (Tôi phát hiện ra rằng hầu hết các công cụ trò chơi FPS làm theo cách đó, một ví dụ sẽ là Nguồn)

Vì vậy, tôi ở đây, với một nửa trò chơi hai bên 2D đã hoàn thành của mình và tôi thực sự không biết làm thế nào để tiếp tục.

Đơn giản là việc tiếp tục làm việc với người chơi đơn / khách hàng dường như vô dụng đối với tôi bây giờ, vì tôi phải mã hóa lại và tái cấu trúc thậm chí nhiều hơn sau đó.

Đầu tiên, một câu hỏi chung cho bất kỳ ai có thể thấy mình trong tình huống như thế này:

  • Tôi nên tiến hành như thế nào?

Sau đó, một điều cụ thể hơn - Tôi đã cố gắng tìm hiểu làm thế nào tôi có thể tiếp cận phần kết nối mạng cho trò chơi của mình:

(Phương pháp khả thi:)

  • Máy chủ vô hình / loopback cho người chơi đơn

Điều này sẽ có lợi thế là về cơ bản không có sự khác biệt giữa chế độ chơi đơn và nhiều người chơi. Không cần nhiều mã bổ sung.

Một bất lợi lớn: Hiệu suất và các hạn chế khác trong phần chơi đơn. Sẽ có hai mô phỏng vật lý đang chạy. Một cho máy khách và một cho máy chủ loopback.

Ngay cả khi bạn làm việc xung quanh bằng cách cung cấp một đường dẫn trực tiếp cho dữ liệu từ máy chủ loopback, thông qua việc chuyển trực tiếp bởi các luồng chẳng hạn, trình phát đơn sẽ bị hạn chế.

Đây là một vấn đề bởi vì mọi người nên được phép chơi xung quanh với hàng loạt đồ vật cùng một lúc.

  • Chế độ chơi đơn / chơi nhiều người

Sẽ không có máy chủ liên quan đến chế độ chơi đơn.

Tôi không thực sự chắc chắn làm thế nào điều này sẽ làm việc. Nhưng ít nhất tôi nghĩ rằng sẽ có rất nhiều công việc bổ sung, bởi vì tất cả các tính năng của một người chơi sẽ phải được triển khai lại hoặc dán vào chế độ nhiều người chơi.

  • Chế độ nhiều người chơi như một mô-đun cho người chơi đơn

Đây chỉ đơn thuần là một suy nghĩ nhanh chóng mà tôi có. Nhiều người chơi có thể bao gồm một trò chơi một người chơi, với một mô-đun mạng bổ sung được tải và kết nối với một máy chủ, để gửi và nhận dữ liệu và cập nhật thế giới người chơi đơn.

Nhìn lại, tôi rất tiếc vì đã không lên kế hoạch cho chế độ nhiều người chơi trước đó. Tôi thực sự bế tắc vào thời điểm này và tôi hy vọng rằng ai đó ở đây có thể giúp tôi!


Có thể hơi lạc đề, tôi đoán bạn đã biết đến bây giờ, nhưng có khả năng trò chơi của bạn chưa hoàn thành 50%.
cubuspl42

Câu trả lời:


4

Bạn sẽ tìm thấy một ví dụ (có nguồn) của vật lý nối mạng có độ trễ ở đây: http://gafferongames.com/2010/03/11/gdc-2010-networked-physics-slides-demo/

Nhưng trước tiên, hãy tập trung vào lối chơi của chế độ nhiều người chơi của bạn. Nếu đó là cạnh tranh và gian lận (thông qua kỹ thuật đảo ngược hoặc giả mạo gói) là một vấn đề, giải pháp đề xuất có thể không phù hợp với nhu cầu của bạn.

Giả sử chế độ nhiều người chơi của bạn là hợp tác. Đối với chế độ chơi đơn của bạn. Tôi sẽ chỉ chạy cùng một công cụ trò chơi, nhưng với các tính năng mạng bị vô hiệu hóa, do đó thế giới sẽ không có bất kỳ nhân vật người chơi nào khác. Bạn cũng có thể muốn tải dữ liệu cụ thể cho chế độ nhiều người chơi, để điều chỉnh nội dung theo số lượng người chơi.



1

Tôi nghĩ rằng các tích cực của một máy chủ vòng lặp cục bộ, vượt xa các tiêu cực. Số tiền giảm mã là vô cùng quý giá, theo ý kiến ​​của tôi.

Liên quan đến việc chạy các mô phỏng vật lý dư thừa, bạn nên xem xét các lỗi máy chủ, Valve có một bài viết tuyệt vời về nó ở đây . Trong môi trường máy chủ cục bộ, bạn có thể xóa "mô phỏng máy khách" và chỉ cần gửi các bản cập nhật toàn thế giới, trong tình huống chỉ dành cho địa phương để tránh các mô phỏng vật lý dư thừa vì bạn sẽ có nhiều băng thông.

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.