Tôi hiện đang phát triển một game bắn súng zombie từ trên xuống, thời gian thực. Tôi đang mã hóa cái này trong Java, sử dụng JBox2D làm công cụ vật lý của tôi. Tôi đã được mã hóa mạng trong tuần này, và bây giờ đến lúc đồng bộ hóa vật lý.
Tôi dự định sử dụng mô hình máy khách dự đoán / máy chủ có thẩm quyền, nơi máy khách có thể tự do di chuyển, miễn là máy chủ chấp thuận mô hình đó sau này. Điều này liên quan đến việc khách hàng gửi các gói chứa dữ liệu chuyển động đến máy chủ và máy chủ tính toán độ trễ và mô phỏng lại thế giới từ trạng thái cũ hơn.
Vấn đề của tôi là, công cụ vật lý hiện tại của tôi, JBox2D (về cơ bản là một cổng của Box2D), không hỗ trợ khôi phục thế giới và dường như không dễ dàng để xâu chuỗi dữ liệu thế giới. Tôi có 2 giải pháp, tôi có thể sửa đổi / mở rộng công cụ vật lý hiện tại của mình hoặc tự viết.
Lý do viết công cụ vật lý của riêng tôi -
- Tôi có thể loại bỏ các tính năng không cần thiết. Trong một trò chơi từ trên xuống, tôi chỉ thực sự cần cơ chế va chạm và lực lượng xử lý. Không có trọng lực có liên quan.
- Tôi có thể hiểu mã tốt hơn và [rất có thể] sẽ dễ dàng thực hiện các hàm quay lại hơn
Lý do mở rộng / sửa đổi JBox2D
- Viết công cụ vật lý của riêng tôi, sẽ là một khối lượng công việc đáng kể, có thể là cồng kềnh
- JBox2D có một cộng đồng hỗ trợ rộng rãi, có thể giúp tôi với nhà phát triển của mình
- JBox2D, có các tối ưu hóa cụ thể, cho những thứ như phát hiện va chạm, làm cho nó hữu ích
- Một số công việc đã được thực hiện về điều này, nhưng ít mã đã được chia sẻ
Vậy ý kiến của bạn là gì. Đây là trò chơi đầu tiên của tôi, và tôi không phải là một nhà phát triển trò chơi chuyên nghiệp. Nếu bất cứ ai cũng có thể cung cấp một số liên kết để hoạt động trong khu vực (tốt nhất là sử dụng JBox2D / Box2D / Java).
strictfp
ở mọi nơi, điều này sẽ ảnh hưởng nghiêm trọng đến hiệu suất. Nếu không, máy chủ và máy khách có thể không nhận được kết quả chính xác như nhau. Tôi sẽ khuyên bạn nên sử dụng điểm cố định thay thế.